サプライチェーンとシークレットの保護
イメージとシークレットを堅牢化します。
「サプライチェーンとシークレットの保護」は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.2Admission 時の検証
署名済みでスキャン済みのイメージだけが実行されるように強制します。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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Kubernetesの脅威モデル
- RBACとサービスアカウント
- Podセキュリティとネットワークポリシー
- サプライチェーンとシークレットの保護