Upgrade to Pro — share decks privately, control downloads, hide ads and more …

HashiCorp Vaultを使ったシークレットのセキュアな一元管理 〜Ansibleを添え...

HashiCorp Vaultを使ったシークレットのセキュアな一元管理 〜Ansibleを添えて〜/2022-07-12-llt26

社内のLTイベント「えるLT Vol.26 オンライン」で発表した資料です

Satoshi SAKAO

July 12, 2022
Tweet

More Decks by Satoshi SAKAO

Other Decks in Programming

Transcript

  1. 話すひと 2 🏢 インフォコム株式会社 サービスマネジメント室 👨🔧 ソフトウェアエンジニア 🛠 Node.js /

    AWS / IoT / iOS (Swift) / Linux 💖 猫,テクテクライフ(ランク: 24) Satoshi SAKAO @ottijp
  2. Vaultとは • シークレットマネージャ by HashiCorp • ざっくり機能 • シークレットストア •

    シークレットのバージョン管理 • シークレットのローテーション • 動的シークレット(AWS IAM等のプロキシ) • 認証,認可(認証プロバイダ連携,ロールとポリシ,トークン,MFA) • 監査 4 https://www.vaultproject.io/
  3. かんたんな例 • secretという場所にあるKVにシークレットを入れて,取り出す • REST APIやWebUIでも操作可能 5 $ vault kv

    put -mount=secret mysecret loginpass=pa$$w0rd $ vault kv get -mount=secret -format=json mysecret | jq .data.data { "loginpass": "pa$$w0rd" }
  4. AnsibleでVaultのシークレットを取得する例 10 - hosts: localhost gather_facts: no connection: local tasks:

    - name: Vaultからパスワードを取得 vars: - vaultrequest: 'secret=secret/data/mysecret token={{ lookup("env", "VAULT_TOKEN") }} url=http://127.0.0.1:8200' - mysecret: "{{ lookup('hashi_vault', vaultrequest) }}" debug: var: mysecret
  5. AnsibleでVaultのシークレットを取得する例 Cont. 11 $ export VAULT_TOKEN=<your_vault_token> $ ansible-playbook playbook.yml [WARNING]:

    No inventory was parsed, only implicit localhost is available [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' PLAY [localhost] ********************************************************************************************* TASK [Vaultからパスワードを取得] ********************************************************************************************* ok: [localhost] => { "mysecret": { "loginpassword": "passw0rd" } }
  6. refs • Getting Started | Vault - HashiCorp Learn 


    https://learn.hashicorp.com/collections/vault/getting-started • hashi_vault – retrieve secrets from HashiCorp’s vault — Ansible Documentation 
 https://docs.ansible.com/ansible/2.9/plugins/lookup/hashi_vault.html • Hashicorp Vault に保存した機密情報を Ansible で使用する - Qiita 
 https://qiita.com/ryysud/items/6b28193a4ea190fa70d1 • [Ansible] Ansible から HashiCorp Vault のシークレットを取得する - てくなべ (tekunabe) 
 https://tekunabe.hatenablog.jp/entry/2022/04/08/ansible_retrieve_secrets_from_vault • Ansible Playbook で localhost でタスクを実行する方法 | gotohayato.com 
 https://gotohayato.com/content/539/ • [Ansible] 環境変数を取得する ansible_env.hoge と lookup("env", "hoge") の違い - てくなべ (tekunabe) 
 https://tekunabe.hatenablog.jp/entry/2019/03/09/ansible_env 19