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

GKE Secret Manager連携の進化 K8s Secret と Secret Man...

Avatar for Cloud Ace Cloud Ace
November 10, 2025

GKE Secret Manager連携の進化 K8s Secret と Secret Manager が同期可能に!(Preview)

Avatar for Cloud Ace

Cloud Ace

November 10, 2025
Tweet

More Decks by Cloud Ace

Other Decks in Technology

Transcript

  1. GKE Secret Manager連携の進化 K8s Secret と Secret Manager が同期可能に!(Preview) 2025.10.28

    DevSecOps 事業部 髙橋和真 クラウドエース株式会社|(C) Cloud Ace, Inc.
  2. External Secrets Operator (ESO) External Secrets Operator (ESO) • メリット

    • K8s標準のSecretオブジェクトに同期 ◦ 環境変数 (secretKeyRef) で利用可 能 • 設定間隔で自動的に値を同期 • デメリット : • サードパーティ製 ◦ 別途インストール・運用・管理のコス トが発生 3 クラウドエース株式会社|(C) Cloud Ace, Inc.
  3. Secret Manager アドオン (CSI) Secret Manager アドオン • メリット •

    GKEマネージド機能で追加コストなし • クラスタのetcdに保存されない(Podのメモ リにしかシークレットがない) • デメリット • ボリューム(ファイル)マウントのみ ◦ 使えるかはアプリによる ◦ 環境変数として利用するには工夫が 必要 • 更新の自動同期がない クラウドエース株式会社|(C) Cloud Ace, Inc. 3
  4. Secret Manager と Kubernetes Secretの同期(Preview) CSI本家の同期機能が GKE にも実装され、従来の方法の良いとこ取りが実現で きるようになります。 •

    Secret Managerのシークレットを、Kubernetesの標準的な Secretオブジェクト に同期 • Secret Manager側の変更を自動でGKEクラスタ内の Secretに同期(ローテーション) Secret への同期が可能に これまでESOでしか実現できなかった 「K8s Secretへの同期」と「自動更新」 がGKEマネージド機能 として提供され ます アプリに依存せず利用可能 ファイルマウントだけでなく標準 Secret として作成可能に。アプリに依存なく 環 境変数として利用 できます 運用負荷の軽減 サードパーティ製オペレーターの イン ストールや管理が不要 になり、運用負 荷が大幅に軽減されます クラウドエース株式会社|(C) Cloud Ace, Inc. 5
  5. 使用方法 クラスタ作成時にフラグをつける クラウドエース株式会社|(C) Cloud Ace, Inc. 5 gcloud beta container

    clusters create-auto CLUSTER_NAME --location=CONTROL_PLANE_LOCATION \ --enable-secret-sync \ --enable-secret-sync-rotation \ --secret-sync-rotation-interval=1m
  6. 使用方法 Secret ManagerにアクセスできるSAを用意してリソースを作成する クラウドエース株式会社|(C) Cloud Ace, Inc. 5 apiVersion: secrets-store.csi.x-k8s.io/v1

    kind: SecretProviderClass metadata: name: SECRET_PROVIDER_CLASS_NAME namespace: NAMESPACE spec: provider: gke parameters: secrets: | - resourceName: "projects/SECRET_PROJECT_ID/secrets/SECRET_ NAME/versions/SECRET_VERSION" path: "FILENAME.txt" - resourceName: "projects/SECRET_PROJECT_ID/secrets/SECRET_ NAME/versions/SECRET_VERSION" path: "FILENAME1.txt" apiVersion: secret-sync.gke.io/v1 kind: SecretSync metadata: name: KUBERNETES_SECRET_NAME namespace: NAMESPACE spec: serviceAccountName: KSA_NAME secretProviderClassName: SECRET_PROVIDER_CLASS_NAME secretObject: type: KUBERNETES_SECRET_TYPE data: - sourcePath: "FILENAME.txt" targetKey: "TARGET_KEY1" - sourcePath: "FILENAME1.txt" targetKey: "TARGET_KEY2"
  7. 従来の方法は不要? GAされたら 基本的にGKEのシークレット管理はこれでいいと思っています。 一方で、K8s Secret にはパラメータをbase64でエンコードした値を etcdに保存しているというセキュリ ティ面の課題があります。 なので、より高いセキュリティを維持する場合以下の運用がいいでしょう。 •

    GKE Secret Manager 同期 + アプリケーションレイヤのSecret 暗号化 • 従来のSecret Manager アドオンを使いPodのメモリで使用する また、同期の細かい制御(オブジェクトの一部だけ Secret Managerから取った値にする)が必要な場合 External Secret は引き続き必要な可能性があります(未検証) クラウドエース株式会社|(C) Cloud Ace, Inc. 5
  8. まとめ Secret Manager と Kubernetes Secretの同期ができるようになり、 GKEの運用がさらに楽になる。 GAされたら多くの場面でGKE Secret Managerの同期を利用するの

    が良い選択肢となる。 ただ完全に従来の方法から置き換わるわけではない。 クラウドエース株式会社|(C) Cloud Ace, Inc. 7