【シールドシークレッツ】

Sealed Secrets とは?

公開:
💡 「Gitに秘密を入れてもいい」を実現する暗号化封筒
📌 このページのポイント
Sealed Secrets — GitOps対応暗号化シークレット 平文 Secret password: abc123 kubeseal 公開鍵で暗号化 SealedSecret(暗号化) encryptedData: AgBy3... ✓ Git にコミット可能 Gitからクラスターへの自動適用(ArgoCD / Flux) SealedSecret CR Git から apply SS コントローラー 秘密鍵で復号 Secret(復号済み) Podが参照可能 クラスター固有の鍵で暗号化 → 別クラスターでは復号不可
kubesealで暗号化してGitにコミット、クラスター内のコントローラーが秘密鍵で復号してSecretを生成する
ひよこ ひよこ
ペンギン先生、KubernetesのSecretってGitにコミットしちゃダメなんだよね?
ペンギン先生 ペンギン先生
そうだよ!普通のKubernetes Secretはbase64エンコードされているだけで暗号化されていないから、Gitに入れると誰でも中身が見えちゃうんだ
ひよこ ひよこ
じゃあSealed Secretsを使うと何が変わるの?
ペンギン先生 ペンギン先生
シークレットを「公開鍵で暗号化」してからGitにコミットできるようになるよ。暗号化されているから中身は見えない。クラスター内のコントローラーだけが秘密鍵を持っていて、復号してKubernetesのSecretを作ってくれるんだ
ひよこ ひよこ
どうやって暗号化するの?
ペンギン先生 ペンギン先生
kubesealというCLIツールを使うよ。クラスターから公開鍵を取ってきて、普通のSecretを暗号化してSealedSecretというYAMLファイルを作るんだ。そのYAMLGitにコミットすればOKだよ
ひよこ ひよこ
別のクラスターにコピーしたらどうなるの?
ペンギン先生 ペンギン先生
復号できないんだ。SealedSecretはクラスター固有の鍵で暗号化されているから、別のクラスターに持っていっても意味がないよ。これがセキュリティ上の重要なポイントだね
ひよこ ひよこ
ArgoCDとかGitOpsと一緒に使えるの?
ペンギン先生 ペンギン先生
そこが一番の強みだよ!SealedSecretのYAMLGitにコミットしておけば、ArgoCDやFluxが自動でクラスターに適用してくれる。GitOpsで全設定をGit管理しながらシークレットも安全に扱えるんだ
ひよこ ひよこ
鍵のローテーションはどうするの?
ペンギン先生 ペンギン先生
コントローラーが定期的に新しい鍵ペアを自動生成するよ。古い鍵は保持されて過去のSealedSecretも復号できる。再暗号化は kubeseal --re-encrypt で行うんだ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Sealed Secrets」って出てきたら「GitOps対応の暗号化Kubernetesシークレット」と思えればだいたいOK!
📖 おまけ:英語の意味
「Sealed Secrets」 = 封印されたシークレット
💬 「Sealed(封印された)」は公開鍵で暗号化した状態を封蝋(封印)に例えた表現で、秘密鍵を持つコントローラーだけが封を解けるというコンセプトからきているよ
← 用語集にもどる