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

Vault Secrets Operator と 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. シークレットの管理はむずかしい 管理者 開発者 依頼 DB ユーザ作成 認証情報 ユーザ 台帳 認証情報を記録

    記録ミス 棚卸 パスワード使いまわし 退職 使われているか 不明なユーザ
  2. Dynamic Secrets とは • HashiCorp Vault の機能 • 各種データベースやクラウドプロバイダに一時ユーザを作成 •

    有効期限 (TTL) が切れたら一時ユーザを削除 ログイン & リクエスト ユーザ作成 事前に Dynamic Secrets を設定 管理者 認証情報 DB ユーザ ユーザ削除
  3. Vault にログインして vault read database/creds/<Role 名> を実行 • リース情報が出力される ◦

    ユーザ名 & パスワード ◦ 有効期間(ここでは 3 分) ◦ 更新の可否 クライアントから Dynamic Secrets を利用
  4. Dynamic Secrets はとても便利 Kubernetes でも Dynamic Secrets を使いたい! • アプリケーション(コンテナ)側で

    Vault を使うことは意識したくない • Kubernetes シークレット に Vault シークレットを反映してほしい ログイン & リクエスト ユーザ作成 認証情報 DB ユーザ
  5. • 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
  6. • 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/
  7. • カスタムリソース ◦ VaultConnection ▪ Vault の接続情報 ◦ VaultAuth ▪

    Operator が Vault を使う際の認証情報 ◦ VaultDynamicSecret ▪ Vault シークレットを反映させる Kubernetes シークレット ▪ シークレットを使うアプリケーション Vault Secrets Operator から Dynamic Secrets を使う
  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. • 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
  10. • VaultDynamicSecret があれば Dynamic Secrets の有効期限を延長 1. カスタムリソースをチェック 2. 有効期限を更新(延長)

    Vault Secrets Operator の動作 VaultDynamicSecret Vault Secrets Operator ① ② DB ユーザ 有効期限 2023/5/29 19:20:00
  11. • VaultDynamicSecret がなければ何もしない 1. カスタムリソースをチェック 2. Vault が DB からユーザを削除

    3. Kubernetes シークレットを使ったDB アクセス不可 Vault Secrets Operator の動作 VaultDynamicSecret Vault Secrets Operator ① ② DB ユーザ 有効期限 2023/5/29 19:20:00 ③