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

Vault Secrets Operator と Dynamic Secrets で安全にシークレットを使おう / Vault Secrets Operator and Dynamic Secrets

Vault Secrets Operator と Dynamic Secrets で安全にシークレットを使おう / Vault Secrets Operator and Dynamic Secrets

ののし

May 29, 2023
Tweet

More Decks by ののし

Other Decks in Technology

Transcript

  1. Vault Secrets Operator と Dynamic Secrets で
    安全にシークレットを使おう
    Kubernetes Novice Tokyo #25 LT
    2023/5/29

    View Slide

  2. Name
    Taichi Nonoshita
    Twitter
    ののし @nnstt1
    Company
    株式会社エーピーコミュニケーションズ
    Love
    3人の息子たち
    自己紹介
    めざせ Azure 資格全冠!
    (あと13個)

    View Slide

  3. Kubernetes シークレットの管理はむずかしい

    View Slide

  4. Kubernetes シークレットの管理はむずかしい
    そもそも

    View Slide

  5. シークレットの管理はむずかしい
    管理者
    開発者
    依頼
    DB
    ユーザ作成
    認証情報
    ユーザ
    台帳
    認証情報を記録

    View Slide

  6. シークレットの管理はむずかしい
    管理者
    開発者
    依頼
    DB
    ユーザ作成
    認証情報
    ユーザ
    台帳
    認証情報を記録
    記録ミス
    棚卸
    パスワード使いまわし
    退職
    使われているか
    不明なユーザ

    View Slide

  7. Dynamic Secrets

    View Slide

  8. Dynamic Secrets とは
    ● HashiCorp Vault の機能
    ● 各種データベースやクラウドプロバイダに一時ユーザを作成
    ● 有効期限 (TTL) が切れたら一時ユーザを削除
    ログイン & リクエスト ユーザ作成
    事前に Dynamic Secrets を設定
    管理者
    認証情報
    DB
    ユーザ
    ユーザ削除

    View Slide

  9. 接続先データベースやユーザ作成時のクエリを設定
    ● データベースプラグインを選択
    ● ユーザ名とパスワードは動的に生成される
    シークレットエンジン
    接続先データベース ユーザ作成時のクエリ(SQL Server の場合)

    View Slide

  10. クライアントが Dynamic Secrets を使えるようにポリシーを設定
    ● Dynamic Secrets はシークレットエンジンの読み込み権限があれば利用可能
    ポリシー
    ログイン
    database シークレットエンジンの
    参照を許可するポリシー
    ポリシーと紐づけ

    View Slide

  11. Vault にログインして vault read database/creds/ を実行
    ● リース情報が出力される
    ○ ユーザ名 & パスワード
    ○ 有効期間(ここでは 3 分)
    ○ 更新の可否
    クライアントから Dynamic Secrets を利用

    View Slide

  12. Dynamic Secrets はとても便利
    Kubernetes でも Dynamic Secrets を使いたい!
    ● アプリケーション(コンテナ)側で Vault を使うことは意識したくない
    ● Kubernetes シークレット に Vault シークレットを反映してほしい
    ログイン & リクエスト ユーザ作成
    認証情報
    DB
    ユーザ

    View Slide

  13. Vault Secrets Operator

    View Slide

  14. ● HashiCorp 公式の Vault シークレットを Kubernetes シークレットに
    反映してくれる Operator
    ● 現在 (2025/5/29) のバージョンは v0.1.0-beta
    ● インストール方法などは Kubernetes Novice Tokyo #24 で @URyo_0213 さんが発表
    された資料を参照ください。
    え?なんで同じ Operator ネタなの?
    Vault Secrets Operator とは
    https://speakerdeck.com/ry/vault-secrets-operator-tutorial

    View Slide

  15. ● Vault 設定
    ○ Kubernetes 認証の有効化、ロール作成
    ○ シークレットエンジン (Dynamic Secrets)
    パスワードください
    Vault Secrets Operator から Dynamic Secrets を使う
    Kubernetes 認証
    このアカウント本物?
    Service Account
    TokenReview API
    https://kubernetes.io/docs/reference/kubernetes-api/authentication-resources/token-review-v1/

    View Slide

  16. ● カスタムリソース
    ○ VaultConnection
    ■ Vault の接続情報
    ○ VaultAuth
    ■ Operator が Vault を使う際の認証情報
    ○ VaultDynamicSecret
    ■ Vault シークレットを反映させる Kubernetes シークレット
    ■ シークレットを使うアプリケーション
    Vault Secrets Operator から Dynamic Secrets を使う

    View Slide

  17. カスタムリソースと 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 Slide

  18. ● VaultDynamicSecret を起点に Vault からシークレット反映
    1. カスタムリソースをチェック
    2. ServiceAccount Token 発行
    3. Vault に Dynamic Secrets を要求
    4. データベースにユーザ作成
    5. リース情報を応答
    6. Kubernetes シークレットを更新
    7. アプリケーションをロールアウトして
    シークレット反映
    Vault Secrets Operator の動作
    VaultDynamicSecret
    Vault Secrets Operator

    ③ ④

    ② ⑥ ⑦
    DB
    ユーザ
    有効期限
    2023/5/29 19:10:00

    View Slide

  19. ● VaultDynamicSecret があれば Dynamic Secrets の有効期限を延長
    1. カスタムリソースをチェック
    2. 有効期限を更新(延長)
    Vault Secrets Operator の動作
    VaultDynamicSecret
    Vault Secrets Operator


    DB
    ユーザ
    有効期限
    2023/5/29 19:20:00

    View Slide

  20. ● VaultDynamicSecret がなければ何もしない
    1. カスタムリソースをチェック
    2. Vault が DB からユーザを削除
    3. Kubernetes シークレットを使ったDB
    アクセス不可
    Vault Secrets Operator の動作
    VaultDynamicSecret
    Vault Secrets Operator

    ② DB
    ユーザ
    有効期限
    2023/5/29 19:20:00

    View Slide

  21. まとめ
    ● HashiCorp Vault はいいぞ
    ● Dynamic Secrets はいいぞ
    ● Vault Secrets Operator はいいぞ

    View Slide