0Pricing
Cyber Security Academy · レッスン

サプライチェーンとシークレットの保護

イメージとシークレットを堅牢化します。

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

ソフトウェアサプライチェーン

コンテナイメージは、ベースイメージ、OS パッケージ、アプリケーションの依存関係から構築され、その後レジストリを経由してクラスタにプッシュされます。各段階が侵害の機会になります。サプライチェーン攻撃では、本番環境に到達する前に悪意のあるコードが混入されます。

  • 侵害されたベースイメージや依存関係。
  • レジストリ内で改ざんされたイメージ。
  • 悪意のある CI/CD パイプラインのステップ。

イメージの脆弱性

イメージには、既知の脆弱性を持つパッケージが含まれていることがよくあります。スキャンによって、デプロイ前にこれらを検出できます。

  • 古いベースイメージには CVE が蓄積します。
  • 肥大化したイメージは攻撃対象領域を広げます。
  • イメージレイヤーに埋め込まれた Secrets によって認証情報が漏洩します。
# Scan an image for vulnerabilities
trivy image myorg/app:1.4.2

# Scan filesystem and secrets too
trivy image --scanners vuln,secret myorg/app:1.4.2

最小限で信頼できるベースイメージ

小さく信頼できるものから始めて、攻撃対象領域を減らします。

  • distroless または最小限のベースイメージを使用します(shell やパッケージマネージャーを含まないもの)。
  • 可変タグではなく、ダイジェストでベースイメージを固定します。
  • 公式または内部で審査済みのベースイメージを優先します。

イメージが小さくなるほど CVE が減り、侵害後に攻撃者が悪用できるツールも少なくなります。

# Pin by digest for immutability
# FROM gcr.io/distroless/static@sha256:<digest>

イメージの署名とプロベナンス

署名によって、イメージが自分たちのパイプラインから取得されたものであり、改ざんされていないことを証明できます。プロベナンス(SLSA)には、どのように構築されたかが記録されます。

  • Cosign はイメージに署名し、検証します。
  • すべてのコンポーネントを追跡するために SBOM を生成します。
  • ビルドプロベナンスのアテステーションを添付します。
# Sign and verify with cosign
cosign sign myorg/app:1.4.2
cosign verify --key cosign.pub myorg/app:1.4.2

Admission 時の検証

署名済みでスキャン済みのイメージだけが実行されるように強制します。admission controller は、署名のないイメージや脆弱なイメージをデプロイ時に拒否します。

# Kyverno policy: verify image signatures before admission
kubectl apply -f verify-image-signature.yaml

# Restrict pulls to a trusted registry only
kubectl apply -f allowed-registries.yaml

パイプラインの保護

CI/CD システム自体が高い価値を持ちます。認証情報を保持し、本番環境にプッシュできるためです。

  • パイプラインの認証情報に最小権限と短い有効期間を設定します。
  • サードパーティの CI アクションやプラグインを固定し、検証します。
  • ビルドランナーを分離し、異なる信頼レベル間で再利用しません。
  • 認証と不変性によってレジストリを保護します。

Kubernetes Secrets の実情

デフォルトでは、Kubernetes Secrets はbase64 でエンコードされているだけで、暗号化されていません。Secrets を読み取れる人や etcd を読み取れる人は、平文の内容を見ることができます。

# A 'Secret' is trivially decoded
kubectl get secret db -o jsonpath='{.data.password}' | base64 -d

保存時の Secrets の暗号化

etcd の内容を保護し、バックアップの盗難や etcd へのアクセスによってすべての情報が漏洩することを防ぎます。

  • EncryptionConfiguration を使用して保存時暗号化を有効にします。
  • エンベロープ暗号化のために、クラウド KMS プロバイダーを使用します。
  • etcd への直接アクセスを制限し、監査します。

外部 Secrets マネージャー

最も強固なパターンは、Secrets をクラスタのストアに一切保存しないことです。

  • HashiCorp Vault またはクラウドの Secrets マネージャーを正本として使用します。
  • External Secrets Operator または CSI ドライバーによって、ランタイムに Secrets を注入します。
  • workload identity を使用し、Pod が静的なキーではなく短期のクラウドトークンで Secrets を取得できるようにします。

Secrets の衛生管理

運用上のプラクティスによって、Secrets の露出を減らします。

  • Secrets をイメージに焼き込んだり、Git にコミットしたりしません。
  • リポジトリとイメージをスキャンし、漏洩した認証情報を検出します。
  • Secrets を定期的に、また漏洩が疑われる場合にローテーションします。
  • RBAC の get/list secrets を必要最小限に制限します。
# Detect committed secrets in source
gitleaks detect --source .

サプライチェーンのテスト

評価時には、署名のないイメージや脆弱なイメージが実際にブロックされること、Secrets が保存時に暗号化されていること、平文の認証情報がイメージや Git に存在しないことを確認します。実際の Secrets を証明に必要な範囲を超えて持ち出すことなく、結果を実証します。

各ギャップについて、それを解消する具体的な制御(署名ポリシー、KMS 暗号化、外部 Secrets マネージャー)とともに報告します。

クイックチェック

サプライチェーンと Secrets に関する知識を確認します。

まとめ

イメージのサプライチェーンと Secrets の取り扱いを強化しました。

  • イメージをスキャンし、最小限のベースイメージを固定して使用し、cosign で署名します。
  • admission 時に、署名済みでスキャン済みのイメージと信頼できるレジストリを強制します。
  • Kubernetes Secrets は base64 のみなので、保存時の KMS 暗号化を有効にします。
  • 外部 Secrets マネージャーと workload identity を優先し、Secrets の衛生管理を実践します。

これで Kubernetes Security コースと、このレッスンセットは完了です。

よくある質問

「サプライチェーンとシークレットの保護」レッスンは無料ですか?

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

「サプライチェーンとシークレットの保護」で何を学びますか?

イメージとシークレットを堅牢化します。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「サプライチェーンとシークレットの保護」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. Kubernetesの脅威モデル
  2. RBACとサービスアカウント
  3. Podセキュリティとネットワークポリシー
  4. サプライチェーンとシークレットの保護
← Cyber Security Academyに戻る