Kubernetes 応用コース / Chapter 05

External SecretsとPod Identity

AWS Secrets Managerの機密値を、Podへ長期アクセスキーなしで安全に渡す方法を学ぶ。この章では、構成要素をつなぐ認証・運用の境界を確認します。

この章で学ぶこと
  1. External Secrets Operatorは外部シークレットからKubernetes Secretを同期する。
  2. Pod IdentityはPodのServiceAccountとIAMロールを結びつける。
  3. 認証情報をGitやマニフェスト本文に置かないことが重要である。

01Secretの値をGitから分離する

ExternalSecretには参照先とキー対応だけを置き、実値はSecrets Managerに保持する。

秘密値をGitに置かない同期構成
manifestのレビューでは値でなく参照名と対象キーを確認し、平文のSecretを混ぜない。

manifestのレビューでは値でなく参照名と対象キーを確認し、平文のSecretを混ぜない。

判断できるようになること:Secretの値をGitから分離する。

02Pod IdentityでOperatorに短期AWS権限を渡す

ServiceAccountとIAM roleをassociationで結び、OperatorがアクセスキーなしでSecrets Managerを読む。

Pod IdentityによるAWS認証
IAM policyは対象secretを絞り、Operatorに必要なread権限だけを渡す。

IAM policyは対象secretを絞り、Operatorに必要なread権限だけを渡す。

判断できるようになること:Pod IdentityでOperatorに短期AWS権限を渡す。

03同期失敗は認可から利用までを順に追う

ExternalSecret status、Operatorログ、Pod Identity、IAM policy、作成されたSecret、Deployment参照を照合する。

ExternalSecret障害の確認順
Secret値はログへ出さず、存在・key名・参照状態で確認する。

Secret値はログへ出さず、存在・key名・参照状態で確認する。

判断できるようになること:同期失敗は認可から利用までを順に追う。

章のまとめ

  1. External Secrets Operatorは外部シークレットからKubernetes Secretを同期する。
  2. Pod IdentityはPodのServiceAccountとIAMロールを結びつける。
  3. 認証情報をGitやマニフェスト本文に置かないことが重要である。