Ansible Tower

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

機能

  • Secrets Managerの設定をAnsible Towerで安全に保存します

  • Ansible Towerで以下の機能を搭載したSecrets Manager Ansibleプラグインを使用して、Ansibleプロジェクトを管理および実行します。

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

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

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

Keeper Secrets Manager機能の完全なリストについては、概要をご参照ください。

KSMの設定

Keeper Secrets ManagerでAnsible Towerを使用するには、最初にBase64設定を取得して初期化します。Secrets Managerの設定ドキュメントでは、Keeper Secrets Manager CLIまたはCommander CLIを使用して設定を取得する方法について説明します。

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

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

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

$ ksm init default US:XXXX

または、Keeper Secrets Managerコレクションに含まれるkeeper_init_tokenロールを使用します。この方法は、Ansible Towerの設定後に使用できます。このドキュメントの最後に例を示します。

Base64設定は、インベントリ、ホスト、またはテンプレートの変数セクションに追加できます。また、Ansibleシークレットとしてプレイブックのリポジトリに追加することもできます。変数名はkeeper_configです。

ボルトのクレデンシャル

Base64 KSM設定では、ボルトのクレデンシャルを作成する必要があります。Resources (リソース) メニューのCredentials (クレデンシャル) を選択し、Add (追加) をクリックします。

ボルトのクレデンシャルに名前を付け、Credential Type (クレデンシャルのタイプ) のドロップダウンからVault (ボルト) を選択し、secrets.ymlファイルの暗号化に使用したパスワードをVault Password (ボルトのパスワード) フィールドに入力して、Save (保存) をクリックします。

クレデンシャルは、テンプレートの設定時に使用されます。

実行環境

Ansible TowerでKeeper Secrets Managerプラグインを使用するには、Keeper Secrets Manager SDKを利用できる実行環境が必要です。このSDKは、Dockerイメージkeeper/keeper-secrets-manager-tower-eeに含まれています。Ansible Towerのインスタンスで、Administration (管理) メニューの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 Security Managerコレクションを使用

プロジェクトでKeeper Secrets Managerプラグインを使用するには、ソースリポジトリにcollectionsディレクトリを作成します(存在しない場合)。次に、requirements.ymlファイルに以下の値を作成または追加します。

---
collections:
  - keepersecurity.keeper_secrets_manager

KSM設定を保存

Base64 KSM設定は、インベントリ、ホスト、テンプレートなど、Ansible Tower内の様々な場所に保存できます。設定は、これらの場所に保存されるときに暗号化されます。

このプロジェクトでは、KSM設定は暗号化されたシークレットとしてソースリポジトリに保存されます。リポジトリのルートディレクトリにあるdefaultsというディレクトリにsecrets.ymlというYAMLファイルを追加します。

このファイルにBase64設定を値に持つkeeper_configというキーを追加します。

---
keeper_config: ewogICAgImNsaWVudElk ...Y0tleUlkIjogIjEwIgp9

次に、ansible-vaultを使用して、secrets.ymlファイルを暗号化します。

パスワードを記録してください。ボルトのクレデンシャルにTowerで必要になります。

$ ansible-vault encrypt secret.yml
New Vault password:
Confirm New Vault password:
Encryption successful

この時点で、secrets.ymlファイルを確認すると、暗号化されているはずです。

プレイブック

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

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

Keeperのプレイブックの場合、Keeper Secrets Managerコレクションがプレイブックコレクションに追加されています。最初のタスクは、組み込みアクションinclude_varsを使用してsecrets.ymlを追加することです。このタスクには、KSM設定がログに記録されないようにする no_log: Trueも含まれます。このタスクは、Keeper Secrets Managerコレクションのいずれかのプラグインの前に実行する必要があります。

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

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

  tasks:
    - include_vars:
        file: "defaults/secrets.yml"
      no_log:True

    - 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:"OlLZ6JLjnyMOS3CiIPHBjw/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" }

プロジェクト

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

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

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

保存したら、Ansible Towerインスタンスにプレイブックを同期します。

テンプレート

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

Projects (プロジェクト) で、プレイブックを含む作成したばかりのプロジェクトを選択します。Execution Environment (実行環境) で、Keeper Secrets Manager Tower EE_dockerイメージを含む Execution Environment (実行環境) を選択します。Playbook (プレイブック) で、ソースリポジトリからプレイブックを選択します。

Credentials (クレデンシャル) で、プロジェクトのソースリポジトリにあるsecrets.ymlファイルの復号化に使用するボルトのクレデンシャルを選択します。インベントリサーバーへの接続に使用するクレデンシャルを選択することもできます。

ページ下部のSave (保存) ボタンをクリックして終了します。

テンプレートの起動

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

include_varsタスクは、KSM Base64設定をインポートして復号化します。no_log: Trueを指定すると、設定がログに表示されなくなります。指定しない場合は、設定がログに記録され、Ansible Towerにアクセスできるすべてのユーザーが表示できます。

設定が現在、使用可能な変数に入っているため、keeper_copyアクションによって、Keeperボルトから公開鍵と秘密のSSH鍵を取得して、リモートマシン上の場所にコピーできます。

Ansibleで使用できるすべてのSecrets Manager機能については、Ansibleプラグインのドキュメントをご参照ください。

最終更新