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

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

ののし
September 14, 2023
21

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. Vault Secrets Operator と
    HCP Vault を使った
    AKS のシークレット管理
    HashiTalks: Japan 2023
    2023/9/14
    Taichi Nonoshita

    View full-size slide

  2. 氏名 :埜下 太一(ののした たいち)
    所属 :株式会社エーピーコミュニケーションズ
    ロール :クラウドアーキテクト
    好きな技術 :自動化、IaC

    View full-size slide

  3. アジェンダ
    Kubernetes シークレット管理の課題
    1
    HashiCorp の新しいツール・機能の紹介
    2
    AKS のシークレット管理
    3
    まとめ
    4

    View full-size slide

  4. HashiCorp Vault とは
    HashiCorp 提供のシークレット管理ツール
    • 多様なシークレットに対応
    • ポリシー制御によるシークレットアクセス
    • シークレットアクセスの監査
    • Dynamic Secrets

    View full-size slide

  5. 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==

    View full-size slide

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

    View full-size slide

  7. シークレット管理を助けるツール (2)
    Secret Store CSI Driver
    • Container Storage Interface (CSI) を使ってシークレットストアから取得した
    シークレットのボリュームを作成し、Pod にマウント
    • Secret リソースは作成されない
    • シークレットを更新しても Pod には反映されない
    Pod
    Provider
    シークレット
    ボリューム
    App
    https://secrets-store-csi-driver.sigs.k8s.io/
    Driver

    View full-size slide

  8. Vault Secrets Operator

    View full-size slide

  9. 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 リソースを使用するだけでよい

    View full-size slide

  10. Vault Secrets Operator の使い方
    Vault クラスタの準備
    Kubernetes に VSO をインストール
    VSO 用カスタムリソースのデプロイ
    1
    2
    3
    • Vault (Community Edition)
    • Vault Enterprise
    • HCP Vault
    • Helm Install コマンドを実行するだけ
    • 5 種類のカスタムリソース

    View full-size slide

  11. Vault Secrets Operator のカスタムリソース
    VaultConnection
    VaultAuth
    VaultStaticSecret VaultDynamicSecret VaultPKISecret
    kv-v2 / kv-v1 Azure / AWS / GCP / Database 証明書
    Vault クラスタ アドレス情報
    認証方法

    View full-size slide

  12. カスタムリソースと 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
    マニフェストを
    図で表すと
    こうなる

    View full-size slide

  13. カスタムリソースと 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
    マニフェストを
    図で表すと
    こうなる

    View full-size slide

  14. Vault Secrets Operator の使い方
    Vault クラスタの準備
    Kubernetes に VSO をインストール
    カスタムリソースのデプロイ
    1
    2
    3
    • Vault (Community Edition)
    • Vault Enterprise
    • HCP Vault
    • Helm Install コマンドを実行するだけ
    • 5 種類のカスタムリソース
    クラウド環境ならHCP Vault がオススメ

    View full-size slide

  15. HashiCorp Cloud Platform (HCP) で提供されるマネージド Vault
    • セルフマネージドな Vault とほぼ同機能(一部違いあり)
    • パブリックアクセス/プライベートアクセス可能
    • AWS または Azure (2023 年 2 月~) 上に構築可能
    HCP Vault とは
    ― 以前は Azure – HCP Vault 間のプライベートアクセスはできなかった

    View full-size slide

  16. 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/

    View full-size slide

  17. Vault Secrets Operator と
    HCP Vault を組み合わせて
    AKS のシークレット管理を考えよう

    View full-size slide

  18. 既存の 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 を呼び出して
    シークレットボリューム
    作成

    View full-size slide

  19. VSO と HCP Vault を使った AKS シークレット管理
    HVN VNet
    HCP に HVN、Azure に VNet を作成

    View full-size slide

  20. VSO と HCP Vault を使った AKS シークレット管理
    HVN VNet
    ピアリング
    HVN と VNet をピアリング

    View full-size slide

  21. VSO と HCP Vault を使った AKS シークレット管理
    HVN VNet
    ピアリング
    HCP Vault on Azure を作成

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  28. まとめ
    Vault Secrets Operator が提供されました
    1
    マネージドサービス HCP Vault が Azure 上に
    構築可能になりました
    2
    VSO と HCP Vault を組み合わせた
    AKS のシークレット管理を紹介しました
    3

    View full-size slide

  29. © AP Communications Co., Ltd.

    View full-size slide