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

Vault Secrets Operator と HCP Vault を使った AKS のシー...

ののし
September 14, 2023
120

Vault Secrets Operator と HCP Vault を使った AKS のシークレット管理 / AKS secret management using the Vault Secrets Operator and HCP Vault

ののし

September 14, 2023
Tweet

More Decks by ののし

Transcript

  1. Kubernetes シークレット管理の課題 Secret リソースは Base64 エンコードされているだけなので VCS で管理できない Secret リソース

    username: hoge password: fuga Secret リソースから誰でもシークレットを参照できてしまう デコード apiVersion: v1 kind: Secret metadata: name: secret-sample type: Opaque data: username: aG9nZQ== password: ZnVnYQ==
  2. シークレット管理を助けるツール (1) Vault Agent Sidecar Injector • Pod に挿入された Vault

    Agent コンテナが Vault のシークレットを取得して共有メモリ ボリュームに出力 • Secret リソースは作成されない Pod Agent 共有メモリ ボリューム https://developer.hashicorp.com/vault/docs/platform/k8s/injector App
  3. シークレット管理を助けるツール (2) Secret Store CSI Driver • Container Storage Interface

    (CSI) を使ってシークレットストアから取得した シークレットのボリュームを作成し、Pod にマウント • Secret リソースは作成されない • シークレットを更新しても Pod には反映されない Pod Provider シークレット ボリューム App https://secrets-store-csi-driver.sigs.k8s.io/ Driver
  4. Vault Secrets Operator とは Vault と Kubernetes の間でシークレットを同期する Kubernetes オペレーター

    • Vault のシークレットを Kubernetes の Secret リソースとして同期 • シークレットの更新を検知して Pod を更新 • HashiCorp Vault の Static Secrets / Dynamic Secrets / PKI に対応 Secret Pod VSO Sync Sync Update Pod は VSO を意識することなく Secret リソースを使用するだけでよい
  5. Vault Secrets Operator の使い方 Vault クラスタの準備 Kubernetes に VSO をインストール

    VSO 用カスタムリソースのデプロイ 1 2 3 • Vault (Community Edition) • Vault Enterprise • HCP Vault • Helm Install コマンドを実行するだけ • 5 種類のカスタムリソース
  6. Vault Secrets Operator のカスタムリソース VaultConnection VaultAuth VaultStaticSecret VaultDynamicSecret VaultPKISecret kv-v2

    / kv-v1 Azure / AWS / GCP / Database 証明書 Vault クラスタ アドレス情報 認証方法
  7. カスタムリソースと Vault の関係 VaultConnection VaultAuth VaultDynamicSecret address vaultConnectionRef vaultAuthRef mount

    role rolloutRestartTargets destination method mount kubernetes role serviceAccount Kubernetes Auth kubernetes Role dynamic-role Secrets Engines database Role readonly マニフェストを 図で表すと こうなる
  8. カスタムリソースと Vault の関係 VaultConnection VaultAuth VaultDynamicSecret address vaultConnectionRef vaultAuthRef mount

    role rolloutRestartTargets destination method mount kubernetes role serviceAccount Kubernetes Auth kubernetes Role dynamic-role Secrets Engines database Role readonly マニフェストを 図で表すと こうなる
  9. Vault Secrets Operator の使い方 Vault クラスタの準備 Kubernetes に VSO をインストール

    カスタムリソースのデプロイ 1 2 3 • Vault (Community Edition) • Vault Enterprise • HCP Vault • Helm Install コマンドを実行するだけ • 5 種類のカスタムリソース クラウド環境ならHCP Vault がオススメ
  10. HashiCorp Cloud Platform (HCP) で提供されるマネージド Vault • セルフマネージドな Vault とほぼ同機能(一部違いあり)

    • パブリックアクセス/プライベートアクセス可能 • AWS または Azure (2023 年 2 月~) 上に構築可能 HCP Vault とは ― 以前は Azure – HCP Vault 間のプライベートアクセスはできなかった
  11. HCP Vault on Azure の構成 HVN と Azure VNet をピアリングすることでプライベートアクセス可能になる

    • HVN = HashiCorp Virtual Network • HCP リソースは HVN 内に配置される • ピアリング設定は HCP ポータル上の案内に沿って Azure を操作するだけ HVN VNet ピアリング プライベートアクセス https://vault-private-vault-00000000.00000000.z1.hashicorp.cloud:8200/
  12. 既存の AKS シークレット管理 Secret Store CSI Driver で Azure Key

    Vault と連携 • Azure Key Vault のシークレット更新を同期可能 • シークレットボリュームと連携した Secret リソースを作成可能 • Secret リソースを環境変数で使用する場合でもボリュームマウントは必要 Azure Portal の AKS 作成画面 マニフェスト apiVersion: v1 kind: Pod metadata: name: pod-sample spec: containers: - name: hoge image : nginx:latest volumeMounts: - name: secret-store mountPath: “/mnt/secret” readOnly: true env: - name: SECRET_USERNAME valueFrom: secretKeyRef: name: foosecret key: username volumes: - name: secret-store csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: “azure-sync” Secret リソースを 参照して環境変数を設定 シークレットボリューム をマウント Provider を呼び出して シークレットボリューム 作成
  13. VSO と HCP Vault を使った AKS シークレット管理 HVN VNet ピアリング

    Secret Policy Kubernetes Auth Role HCP Vault にシークレット作成、認証/ポリシーを設定
  14. VSO と HCP Vault を使った AKS シークレット管理 HVN VNet ピアリング

    Secret VSO Policy Kubernetes Auth Role VSO をインストール
  15. VSO と HCP Vault を使った AKS シークレット管理 HVN VNet ピアリング

    Secret VSO Vault StaticSecret VaultAuth Vault Connection Policy Kubernetes Auth Role カスタムリソースをデプロイ
  16. VSO と HCP Vault を使った AKS シークレット管理 HVN VNet ピアリング

    Secret Secret VSO Vault StaticSecret VaultAuth Vault Connection Policy Kubernetes Auth Role VSO が Secret リソースを作成する
  17. VSO と HCP Vault を使った AKS シークレット管理 HVN VNet ピアリング

    Secret Secret Pod VSO Deployment Vault StaticSecret VaultAuth Vault Connection Policy Kubernetes Auth Role Deployment リソースをデプロイ
  18. まとめ Vault Secrets Operator が提供されました 1 マネージドサービス HCP Vault が

    Azure 上に 構築可能になりました 2 VSO と HCP Vault を組み合わせた AKS のシークレット管理を紹介しました 3