Ansible Vaultによる暗号化モジュールの利用方法

目次- Vault暗号化モジュール

  • ansible-vaultの基本的な操作
  • Playbookとの連携方法

Ansible Vault暗号化機能

Ansibleに内蔵されたVault機能は、AES-256暗号アルゴリズムを使用し、高いセキュリティを実現します。この機能により、パスワードや機密情報をPlaybookと一緒に安全に保管することが可能です。

ansible-vaultの基本操作

ansible-vaultはシンプルな暗号化・復号機能を提供しており、同じパスワードで同じファイルを複数回暗号化しても、出力されるファイルは異なります。また、復号化後も元の内容が完全に保持されます。

  • edit: 暗号化されたファイルを編集する
  • rekey: 既存の暗号化ファイルのパスワードを変更する
  • create: 新しいファイルを作成し、同時に暗号化する
  • view: 暗号化されたファイルの中身を確認する
  • decrypt: ファイルの暗号を解除する

以下のような内容のファイルmysql_passwd.ymlを作成します。

---
user: root
password: root

ファイルを暗号化するには以下のコマンドを使用します。

ansible-vault encrypt mysql_passwd.yml 

New Vault password: *****
Confirm New Vault password: *****
Encryption successful


暗号化されたファイルの内容を確認すると以下のようになります。

cat mysql_passwd.yml
$ANSIBLE_VAULT;1.1;AES256
34623561613433333733393964323363633439626237376265643434633733316365373563323266
3836336565343932636237633634666633623631303366620a623865303763363561363830376634
30343435306638616532313833653363663339633239393465363138386234366330613936343230
3631666364636664300a383634336237623433393632666463366261633462303436363234383264
36643639613461616363376538353466663534366663333336323137396564336462


パスワードを入力してファイルの内容を表示する場合、ファイルは暗号化されたままです。

ansible-vault view mysql_passwd.yml 
Vault password: *****
---
user: root
password: root


ファイルを復号化するには以下のコマンドを使用します。

ansible-vault decrypt mysql_passwd.yml 
Vault password: *****
Decryption successful

cat mysql_passwd.yml
---
user: root
password: root


Playbookとの連携

mysql_passwd.ymlはすでに暗号化されています。vault01.yamlというファイルを作成します。

---
- hosts: ubuntu
  vars_files:
    mysql_passwd.yml
  tasks:
    - name: debug passwd
      debug:
        msg:
          - "{{ user }}"
          - "{{ password }}"

このPlaybookを実行する際は、--ask-vault-passオプションでパスワードを入力する必要があります。これは自動化運用には向いていませんので、後述のようにファイルからパスワードを指定することも可能です。

ansible-playbook vault01.yaml --ask-vault-pass
Vault password: ***** 

PLAY [ubuntu] *******************************************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************************
ok: [107.151.199.209]

TASK [debug passwd] *************************************************************************************************************************************
ok: [107.151.199.209] => {
    "msg": [
        "root",
        "root"
    ]
}

PLAY RECAP **********************************************************************************************************************************************
107.151.199.209            : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   


パスワードをvault_pass.txtファイルに記載します。このファイルの権限は600に設定してください。

12345

パスワードファイルを指定してPlaybookを実行できます。

ansible-playbook vault01.yaml --vault-password-file ./vault_pass.txt 

PLAY [ubuntu] *******************************************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************************
ok: [107.151.199.209]

TASK [debug passwd] *************************************************************************************************************************************
ok: [107.151.199.209] => {
    "msg": [
        "root",
        "root"
    ]
}

PLAY RECAP **********************************************************************************************************************************************
107.151.199.209            : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   


より詳細なオプションや使用例については公式ドキュメントをご参照ください。 公式リンク

タグ: ansible vault 暗号化 セキュリティ playbook

9月8日 04:55 投稿