Automation Controller

Keeperアカウントを操作し、Automation Controller (旧Ansible Tower) による自動化で使用できるAnsibleプラグインのコレクション

機能

  • シークレットマネージャー構成をAutomation Controllerで安全に保存します

  • Automation Controllerで以下の機能を搭載したシークレットマネージャーAnsibleプラグインを使用して、Ansibleプロジェクトを管理および実行します。

    • Ansibleプレイブックで使用するシークレットをKeeperボルトから取得

    • AnsibleからKeeperボルトのシークレットの値を更新

    • Keeperボルトからファイルをコピー

Keeperシークレットマネージャー機能の完全なリストについては、概要をご参照ください。

KSMの設定

Automation ControllerとKeeperシークレットマネージャーを使用するには、最初にBase64形式の構成を取得して初期化します。シークレットマネージャー構成ドキュメントでは、KeeperシークレットマネージャーCLIまたはコマンダーCLIを使って構成を取得する方法が説明されています。

コマンダーCLIを使用して、新しいデバイスを追加すると、ワンタイムアクセストークンを使用せずにBase64設定を生成できます。

keeper secrets-manager client add --app MyApp --config-init b64

KeeperシークレットマネージャーCLIの場合、ワンタイムアクセストークンが必要です。これは、アプリケーションに新しいデバイスを追加することによって、Webボルトから取得できます。

$ ksm init default US:XXXX

別の方法として、Keeperシークレットマネージャーコレクションに含まれる keeper_init_token ロールを使用する方法があります。これはAnsible Automation Tower/Controllerをセットアップした後に利用できます。サンプルは本ページの最後に記載されています。

Base64形式の構成は、inventories、hosts、またはtemplatesの変数セクションに追加できます。また、playbookリポジトリにAnsibleシークレットとして追加することも可能です。変数名は keeper_config です。

認証情報タイプと認証情報の作成

Keeperシークレットマネージャーのカスタム認証情報タイプを作成するには、管理メニューの [Credential Types] (認証情報タイプ) に移動し、[Add] (追加) をクリックします。

認証情報タイプに名前を付け、[Input configuration] (入力構成) を次のように設定します。

---
fields:
  - id: keeper_config
    type: string
    label: Keeper Config (Base64)
    secret: true
  - id: ksm_profile
    type: string
    label: KSM Profile Name
    help_text: Optional. Defaults to 'default'
required:
  - keeper_config

次に [Injector configuration] (インジェクター構成) を次のように設定します。

---
extra_vars:
  keeper_config: "{{ keeper_config }}"
  keeper_profile: "{{ ksm_profile | default('default') }}"

[Save] (保存) をクリックします。

[Resources] (リソース) セクションの [Credentials] (認証情報) に移動し、[Add] (追加) をクリックします。

認証情報に [Name] (名前) を設定し、先ほど作成した [Credential Type] (認証情報タイプ) を選択し、[Keeper Config] (Keeper構成) 入力欄にBase64トークンを追加します。[Save] (保存) をクリックします。

この認証情報は、[Template] (テンプレート) をセットアップするときに使用されます。

実行環境

Automation ControllerでKeeperシークレットマネージャープラグインを使用するには、KeeperシークレットマネージャーSDKを利用できる実行環境が必要となります。このSDKは、Dockerイメージkeeper/keeper-secrets-manager-tower-eeに含まれています。お使いのAnsible Tower/Automation Controllerのインスタンスで、管理メニューの [Execution Environment] (実行環境) を選択し、[Add] (追加) をクリックします。

[Image] の値は、docker.io/keeper/keeper-secrets-manager-tower-ee:latestまたはdocker.io/keeper/keeper-secrets-manager-tower-ee:<tag> (特定のタグバージョンがある場合) となります。

[Pull] (プル) の値は、最新のタグを使用している場合、[Always pull container before running] (実行前に常にコンテナをプル) に設定する必要があります。keeper/keeper-secrets-manager-tower-ee の特定のタグバージョンを指定している場合は、[Only pull the image if not present before running] (実行前に存在しない場合のみイメージをプル) に設定してください。

プロジェクト

プレイブックのリポジトリ

Ansible GalaxyのKeeperシークレットマネージャーコレクションを使用

プロジェクトでKeeperシークレットマネージャープラグインを使用するには、ソースリポジトリ内に collections ディレクトリを作成します (まだ存在しない場合)。その後、requirements.yml ファイルを作成するか、既存のファイルに次の値を追加します。

---
collections:
  - keepersecurity.keeper_secrets_manager

プレイブック

ディレクトリ構造は以下のようになるはずです。

$ tree
.
├── collections
│   └── requirements.yml
├── playbook_1.yml
└── playbook_2.yml

Automation Controllerは、独自の標準出力コールバックプラグインを使用するため、keeper_redactは動作しません。ログにシークレットを表示する可能性のあるタスクには、no_log: True を追加することが重要となります。

---
- name:Playbook One
  hosts: all
  collections:
    - keepersecurity.keeper_secrets_manager

  tasks:
    - name:"Make User SSH Directory, if does not exists"
      file:
        path: "/home/user/.ssh"
        state: directory
        recurse: yes

    - name:"Copy SSH Keys"
      keeper_copy:
        notation: "{{ your_record_uid }}/field/keyPair[{{ item.notation_key }}]"
        dest: "/home/user/.ssh/{{ item.filename }}"
        mode:"0600"
      loop:
        - { notation_key: "privateKey", filename: "id_rsa" }
        - { notation_key: "publicKey",  filename: "id_rsa.pub" }

プロジェクト

ソースリポジトリにコレクションを追加すると、新しいProject (プロジェクト) を作成できます。

keeper/keeper-secrets-manager-tower-ee イメージを使用して作成した実行環境を選択してください。

上記の例のソースリポジトリは、適切な詳細情報を含むGitでした。会社によっては、別のソース管理を使用している場合があります。

保存後、作成したプロジェクトが同期します。

テンプレート

お使いのAnsible Automation Controllerのインスタンスで、[Resources] (リソース) メニューの [Templates] (テンプレート) を選択し、[Add] (追加) をクリックします。

[Projects] (プロジェクト) では、先ほど作成したプレイブックを含むプロジェクトを選択します。

[Execution Environment] (実行環境) では、Keeper Secrets Manager Tower EE のDockerイメージを含む実行環境を選択します。

[Playbook] (プレイブック) では、ソースリポジトリからプレイブックを選択します。

[Credentials] (認証情報) では、作成したKeeperシークレットマネージャーの認証情報を選択します。また、インベントリサーバーへの接続に使用する認証情報を選択することもできます。

最後に、ページ下部の [Save] (保存) ボタンをクリックして完了します。

テンプレートの起動

最後にテンプレートを起動してジョブを作成します。

構成が利用可能な変数に追加されると、keeper_copy アクションはKeeperボルトから公開鍵および秘密鍵のSSHキーを取得し、リモートマシン上の指定された場所にコピーできます。

Ansibleで使用できるすべてのシークレットマネージャー機能については、Ansibleプラグインのドキュメントをご参照ください。

最終更新