第3章 Ansible vault
場合によっては、Playbook で、管理対象ホストを設定するために、パスワード、API キー、その他のシークレットなどの機密データを使用する必要があります。この情報を変数またはその他の Ansible 互換ファイルにプレーンテキストで保存すると、それらのファイルにアクセスできるすべてのユーザーが機密データを読み取ることができるため、セキュリティー上のリスクが生じます。
Ansible Vault を使用すると、機密情報を暗号化、復号、表示、および編集できます。それらは次のように含めることができます。
- Ansible Playbook に挿入した変数ファイル
- ホスト変数とグループ変数
- Playbook を実行するときに引数として渡される変数ファイル
- Ansible ロールで定義された変数
Ansible Vault を使用すると、個々の変数、ファイル全体、さらには YAML ファイルなどの構造化データを安全に管理できます。このデータはバージョン管理システムに安全に保存したり、機密情報を公開することなくチームメンバーと共有したりできます。
ファイルは、Advanced Encryption Standard (AES256) の対称暗号化によって保護されており、データの暗号化と復号の両方に単一のパスワードまたはパスフレーズが使用されます。この方法は第三者によって正式に監査されていないことに注意してください。
管理を簡素化するには、機密変数とその他のすべての変数が別々のファイルまたはディレクトリーに保存されるように Ansible プロジェクトを設定するのが合理的です。次に、ansible-vault
コマンドを使用して機密変数を含むファイルを保護できます。
暗号化されたファイルの作成
次のコマンドは、新しい Vault パスワードの入力を求めます。次に、デフォルトのエディターを使用して機密変数を保存するためのファイルを開きます。
# ansible-vault create vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
暗号化されたファイルの表示
次のコマンドは、既存の Vault パスワードの入力を求めます。次に、すでに暗号化されたファイルの機密コンテンツを表示します。
# ansible-vault view vault.yml Vault password: <vault_password> my_secret: "yJJvPqhsiusmmPPZdnjndkdnYNDjdj782meUZcw"
暗号化ファイルの編集
次のコマンドは、既存の Vault パスワードの入力を求めます。次に、すでに暗号化されたファイルを開き、デフォルトのエディターを使用して機密変数を更新します。
# ansible-vault edit vault.yml Vault password: <vault_password>
既存のファイルの暗号化
次のコマンドは、新しい Vault パスワードの入力を求めます。次に、既存の暗号化されていないファイルを暗号化します。
# ansible-vault encrypt vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password> Encryption successful
既存のファイルの復号
次のコマンドは、既存の Vault パスワードの入力を求めます。次に、既存の暗号化されたファイルを復号します。
# ansible-vault decrypt vault.yml Vault password: <vault_password> Decryption successful
暗号化されたファイルのパスワードを変更する
次のコマンドは、元の Vault パスワードの入力を求め、次に新しい Vault パスワードの入力を求めます。
# ansible-vault rekey vault.yml Vault password: <vault_password> New Vault password: <vault_password> Confirm New Vault password: <vault_password> Rekey successful
Playbook での Ansible vault 変数の基本的な適用
--- - name: Create user accounts for all servers hosts: managed-node-01.example.com vars_files: - vault.yml tasks: - name: Create user from vault.yml file user: name: "{{ username }}" password: "{{ pwhash }}"
Ansible Playbook の vars_files
セクションに変数を含むファイル (vault.yml
) を読み込み、通常の変数と同じように中括弧を使用します。次に、ansible-playbook --ask-vault-pass
コマンドを使用して Playbook を実行し、パスワードを手動で入力します。または、パスワードを別のファイルに保存し、ansible-playbook --vault-password-file /path/to/my/vault-password-file
コマンドを使用して Playbook を実行します。
関連情報
-
システム上の
ansible-vault(1)
およびansible-playbook(1)
man ページ - Ansible vault
- Ansible Vault のベストプラクティス