Helm Academy · レッスン

Secrets を values.yaml に置くべきではない理由

チャートや Git に平文のシークレットを置くリスクを学びます。

レッスン 1/413 ステップ

「Secrets を values.yaml に置くべきではない理由」はCoddyKit上の無料Helm Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはHelm Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Helm Academyコースには全4レッスンが含まれています。

values は平文である

チャートの values.yaml は、通常の暗号化されていないテキストファイルです。パスワードを含め、そこに書いたものは、ファイルを開ける人なら誰でも読めます。

Git はすべてを記録し続ける

チャートは通常 Git で管理します。一度コミットしたシークレットは削除した後も履歴に残るため、漏えいは取り返しがつきません。🔒

ありがちな間違い

動作させるために、実際のパスワードを values.yaml に直接書き込みたくなるものです。しかし、その値はあらゆる場所に広がるため、絶対に避けてください。

database:
  password: super-secret-123

Helm はリリースデータを保存する

インストール時、Helm はマージ済みの values をクラスター内の release Secret に保存します。平文のパスワードもそこに保存されることになります。

helm get values で露出する

リリースにアクセスできる人なら誰でも helm get values を実行し、渡した値をそのまま読み取れます。平文のパスワードも例外ではありません。

helm get values myapp

CI のログからも漏えいする

パイプラインで --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 ログを通じて漏えいする理由と、代わりに参照または暗号化すべき理由を学びました。🎉

無料で開始

AI チューターと学ぶ YAML — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「Secrets を values.yaml に置くべきではない理由」レッスンは無料ですか?

はい。「Secrets を values.yaml に置くべきではない理由」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Helm Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Helm Academyコースには全4レッスンが含まれています。

「Secrets を values.yaml に置くべきではない理由」で何を学びますか?

チャートや Git に平文のシークレットを置くリスクを学びます。 ブラウザで直接実行するハンズオンコードでHelm Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Helm Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのHelm Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Secrets を values.yaml に置くべきではない理由」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このHelm Academyレッスンでコードを書いて実行できますか?

はい。すべてのHelm Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Secrets を values.yaml に置くべきではない理由
  2. helm-secrets と SOPS による値の暗号化
  3. External Secrets Operator からシークレットを取得する
  4. Kubernetes Secret リソースのテンプレート化
← Helm Academyに戻る