【エクスターナルシークレッツオペレーター】

External Secrets Operator とは?

最終更新:
💡 外の金庫番が、K8sの中に自動で鍵を届けてくれるお使い係。

AWS Secrets ManagerやHashiCorp Vaultなど外部のシークレット管理サービスと連携し、Kubernetes上のSecretリソースを自動的に同期してくれるOSS。

📌 このページのポイント
外部の秘密情報をSecretへ同期 Kubernetes 外部サービス ESO 同期 Secret 秘密情報 Secretもアクセス制御・ 保存時の保護が必要 SecretStore:接続方法を指定 ExternalSecret:取得対象などを指定 更新のタイミングは同期方針による
ESOが作るSecretにも秘密情報が入ります。同期の設定に加えて、外部サービスとKubernetes双方の権限を管理します。
ひよこ ひよこ
External Secrets Operatorって何なの?
ペンギン先生 ペンギン先生
Kubernetesでアプリが使うDBのパスワードやAPIキーなどを、外部の専用サービスから取得し、Secretリソースへ同期するツールだよ。略してESOと呼ぶんだ。
ひよこ ひよこ
どんなサービスとつながるの?
ペンギン先生 ペンギン先生
AWS Secrets ManagerやGoogle Cloud Secret Manager、HashiCorp Vaultなどに対応しているよ。どこに接続し、どの情報を取得するかを設定するんだ。
ひよこ ひよこ
外でパスワードを変えたら、すぐ同期される?
ペンギン先生 ペンギン先生
タイミングは設定によるよ。既定のPeriodic方針では、refreshIntervalに0より大きい間隔を設定すると定期的に更新する。CreatedOnceやOnChangeという別の方針もあるので、いつ反映する必要があるかに合わせて選ぼう。
ひよこ ひよこ
設定には何が必要なの?
ペンギン先生 ペンギン先生
ESOの導入と外部サービスへの認証・権限設定が前提だよ。SecretStoreで接続方法を、ExternalSecretで取得するキーや作成先のSecretを指定する。名前空間をまたいで参照できるClusterSecretStoreもあるけれど、利用できる範囲を管理する必要があるんだ。
ひよこ ひよこ
これで秘密情報をGitに書かずに済む?
ペンギン先生 ペンギン先生
外部の情報を参照する設定をGitで管理できるよ。ただし、接続用の認証情報までうっかりコミットしないようにしよう。Secretのdata欄のBase64は暗号化ではなく、元の値に戻せる形式なんだ。
ひよこ ひよこ
外部に置けばKubernetes側は保護しなくていい?
ペンギン先生 ペンギン先生
同期先のSecretにも秘密情報が入るから、最小限のアクセス権と保存時の暗号化などが必要だよ。また、ESOは値を同期する仕組み。DB側のパスワード変更など、秘密情報そのもののライフサイクル管理も別途考えよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「External Secrets Operator」って出てきたら「外部の秘密情報をKubernetesのSecretへ同期するツール」と思えばだいたいOK!
📖 おまけ:英語の意味
「External Secrets Operator」 = 外部シークレット操作者
💬 外部(External)のシークレット管理サービスを、K8sのOperatorパターンで自動同期する仕組みという意味だよ。

参考資料

← 用語集にもどる