☑ゴール
前回の連載第1回では、特権ID管理の全体像を整理しながら、Vaultを使った特権アクセス管理の構成方針を紹介しました。
本記事(第2回)では、 Terraform + Vault + Ansible を用いた、 完全自動構築フローの中核ステップを、 **「実装コード付き」かつ「1クリック展開可能な構成」**で徹底解説します。
⚡ Step 1 : TerraformでVaultの認証方式とポリシーを定義
resource "vault_auth_backend" "userpass" {
type = "userpass"
}
resource "vault_policy" "pam_policy" {
name = "pam-admin"
policy = <<EOT
path "secret/data/pam/*" {
capabilities = ["create", "read", "update", "delete", "list"]
}
EOT
}
この構成により、Vaultにおける userpass認証 と PAM専用のアクセス制御ポリシーを定義できます。
すべてコード化されているため、再現性・監査性・自動展開性が大幅に向上します。
🔐 Step 2 : AnsibleでVaultのSecretを取得・反映
-
name: Get PAM credentials from Vault
uri:
url: "https://vault.example.com/v1/secret/data/pam/credential"
method: GET
headers:
X-Vault-Token: "{{ vault_token }}"
return_content: yes
status_code: 200
register: pam_secret -
name: Set PAM credentials
set_fact:
pam_user: "{{ pam_secret.json.data.data.username }}"
pam_pass: "{{ pam_secret.json.data.data.password }}"
Vaultに保存された認証情報を取得し、Ansible変数へ格納します。
以降のタスク内で pam_user / pam_passを呼び出して、SSHやDB設定へ安全に反映可能です。
🔄 Step 3 : GitHub ActionsでCI/CD構築 (任意)
jobs:
pam_pipeline:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run Ansible Playbook
run: ansible-playbook -i inventory setup-pam.yml
TerraformとAnsibleの処理をGitHub Actionsに組み込むことで、CI/CD化することで、 インフラ構成 + PAMの自動管理 が実現できます。
🔹 まとめ
TerraformでVaultのポリシーを定義
AnsibleでSecretを取得して変数化
GitHub ActionsでCI/CDに組み込み
この三問のフローにより、特権アクセスの安全性 + DevOps性を高深度で両立させる自動化構築が成立します。
⬆️ 次回予告
次回は、この構成を 本番システムに実践適用する際のテスト解析・CI/CD向けパイプライン組み込みテクニック を詳細解説します。
→ 「GitHub Actions + Ansibleで実現する、現場で使えるPAMステートパイプライン」
ご感想や質問は、どんどん歓迎です。 読んで頂き最後まで本当にありがとうございました。