Secrets を values.yaml に置くべきではない理由
チャートや Git に平文のシークレットを置くリスクを学びます。
「Secrets を values.yaml に置くべきではない理由」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
values は平文である
チャートの values.yaml は、通常の暗号化されていないテキストファイルです。パスワードを含め、そこに書いたものは、ファイルを開ける人なら誰でも読めます。
Git はすべてを記録し続ける
チャートは通常 Git で管理します。一度コミットしたシークレットは削除した後も履歴に残るため、漏えいは取り返しがつきません。🔒
ありがちな間違い
動作させるために、実際のパスワードを values.yaml に直接書き込みたくなるものです。しかし、その値はあらゆる場所に広がるため、絶対に避けてください。
database:
password: super-secret-123Helm はリリースデータを保存する
インストール時、Helm はマージ済みの values をクラスター内の release Secret に保存します。平文のパスワードもそこに保存されることになります。
helm get values で露出する
リリースにアクセスできる人なら誰でも helm get values を実行し、渡した値をそのまま読み取れます。平文のパスワードも例外ではありません。
helm get values myappCI のログからも漏えいする
パイプラインで --set を使ってシークレットを渡すと、ビルドログに出力されることがよくあります。そのログはチーム全員が平文で見られる状態になります。
helm install myapp ./chart --set db.password=secret基本ルール
ルールは単純です。secrets をチャート内、Git 内、コマンドライン上の平文で決して保持してはいけません。外に出しておきます。
埋め込まずに参照する
安全なパターンは、シークレットを埋め込むのではなく参照することです。テンプレートから、クラスターがすでに保持している Secret リソースを参照します。
valueFrom:
secretKeyRef:
name: db-credentials
key: password保存する必要があるなら暗号化する
シークレットの値をどうしても Git に保存する必要がある場合は、暗号化して保存します。そうすれば、復号キーがなければコミット済みのファイルを利用できません。
よくある3つの方法
この問題を解決する方法は3つあります。ツールで values を暗号化する方法、外部ストアからシークレットを取得する方法、注入されたデータから Secret オブジェクトをテンプレート化する方法です。
エンコードはセキュリティではない
Kubernetes Secret の Base64 は単なるエンコードであり、暗号化ではありません。何も隠していないため、エンコードされた値を保護されたものとして扱わないでください。
確認問題
values.yaml にパスワードを書くことが、なぜ危険なのですか?
まとめ
values.yaml の平文のシークレットが、Git、リリースデータ、CI ログを通じて漏えいする理由と、代わりに参照または暗号化すべき理由を学びました。🎉
よくある質問
「Secrets を values.yaml に置くべきではない理由」レッスンは無料ですか?
はい。「Secrets を values.yaml に置くべきではない理由」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「Secrets を values.yaml に置くべきではない理由」で何を学びますか?
チャートや Git に平文のシークレットを置くリスクを学びます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Secrets を values.yaml に置くべきではない理由」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Secrets を values.yaml に置くべきではない理由
- helm-secrets と SOPS による値の暗号化
- External Secrets Operator からシークレットを取得する
- Kubernetes Secret リソースのテンプレート化