コンテナーとKubernetesのセキュリティ
イメージの脆弱性をスキャンし、Pod Security Standardsを設定して、Kubernetesでネットワークポリシーを使用します。
「コンテナーとKubernetesのセキュリティ」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
コンテナセキュリティの概要
コンテナはホストカーネルを共有するため、VM よりも分離が弱くなります。コンテナセキュリティは、イメージの衛生管理(脆弱なパッケージを含めないこと)、ランタイム保護(異常な動作の検知)、ネットワークポリシー(Pod 間通信の制限)、RBAC 設定に及びます。
Trivy によるイメージスキャン
Trivy は、コンテナイメージをスキャンして、OS パッケージの CVE、アプリケーション依存関係の脆弱性、設定ミス、シークレットを検出します。CI/CD に統合して、本番環境に到達する前に重大な脆弱性を含むイメージをブロックします。
trivy image nginx:latest
trivy image --severity CRITICAL,HIGH myapp:v1.2Dockerfile のベストプラクティス
最小限のベースイメージ(alpine、distroless)を使用します。非 root ユーザー(USER 1000)として実行します。COPY . . は避け、コピー対象を明示します。マルチステージビルドによって最終イメージのサイズを削減します。プッシュ前にスキャンします。レイヤーにシークレットや認証情報をハードコードしてはいけません。
FROM node:18-alpine
RUN addgroup -S app && adduser -S app -G app
USER app
COPY --chown=app:app . .
CMD ["node", "server.js"]Kubernetes RBAC
Kubernetes RBAC は API サーバーへのアクセスを制御します。ClusterRoles と Roles は、リソース(Pod、Secret、Deployment)に対する権限を定義します。ClusterRoleBindings と RoleBindings は、それらをユーザー、グループ、ServiceAccounts に割り当てます。自動化以外では cluster-admin を避けます。
Pod Security Standards
PSS は、Privileged(制限なし)、Baseline(最小限の制限)、Restricted(強化済み)の 3 つのプロファイルを定義します。PodSecurity admission controller の namespace ラベルを使用して適用します。Restricted プロファイルでは、root としての実行を防ぎ、権限昇格を禁止し、読み取り専用ファイルシステムを必須にします。
ネットワークポリシー
デフォルトでは、すべての Pod が他のすべての Pod と通信できます。Kubernetes NetworkPolicies は、Pod セレクターごとにインバウンドルールとアウトバウンドルールを定義します。デフォルト拒否ポリシーを実装し、必要な通信経路だけを明示的に許可して、被害範囲を抑えます。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
spec:
podSelector: {}
policyTypes: ["Ingress","Egress"]Kubernetes におけるシークレット管理
Kubernetes Secrets は、デフォルトでは Base64 エンコードされているだけで、暗号化されていません。etcd の保存時暗号化を有効にします。Kubernetes Secrets の代わりに、External Secrets Operator または Vault Agent Injector を使用して、HashiCorp Vault やクラウドのシークレットマネージャーからシークレットを取得します。
Admission Controller
Admission controller は、オブジェクトが作成される前に API リクエストを遮断して検査します。OPA/Gatekeeper はカスタムポリシー(特定のラベルを必須にする、特権コンテナをブロックするなど)を適用します。Kyverno は、一般的な K8s セキュリティ制約をより簡単な YAML 構文でポリシーアズコードとして提供します。
Falco によるランタイムセキュリティ
Falco は eBPF を使用して、ランタイム中の異常な動作を検出します。これには、コンテナ内でのシェルの起動、予期しないアウトバウンド接続、/etc 配下へのファイル書き込み、権限昇格の試み、既知の攻撃ツールの実行などが含まれます。アラートルールはカスタマイズ可能な YAML です。
Kubernetes 監査ログ
API サーバーの監査ログを有効にして、ユーザー、アクション、リソース、タイムスタンプを含むすべてのリクエストを記録します。SIEM に転送して、ServiceAccount トークンの一覧取得、Secret の列挙、ロールの昇格、本番 Pod への kubectl exec など、通常とは異なる API アクティビティを検出します。
Cosign によるサプライチェーンセキュリティ
Cosign(Sigstore)でコンテナイメージに署名し、サプライチェーンの完全性を保証します。ポリシーコントローラー(Connaisseur、Kyverno)によって、信頼されたレジストリの署名済みイメージだけがクラスターに受け入れられるよう強制し、信頼されていないイメージのプルをブロックできます。
理解度チェック
空の podSelector と policyTypes Ingress/Egress を指定した Kubernetes NetworkPolicy は、何を実現しますか。
まとめ
コンテナと Kubernetes のセキュリティには、イメージのサプライチェーンの保護、RBAC と Pod Security Standards の適用、ネットワークポリシーの実装、適切なシークレット管理、予防的な制御をすり抜ける攻撃を検知するランタイム検知の利用が必要です。
よくある質問
「コンテナーとKubernetesのセキュリティ」レッスンは無料ですか?
はい。「コンテナーとKubernetesのセキュリティ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「コンテナーとKubernetesのセキュリティ」で何を学びますか?
イメージの脆弱性をスキャンし、Pod Security Standardsを設定して、Kubernetesでネットワークポリシーを使用します。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「コンテナーとKubernetesのセキュリティ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- クラウドIAM:ロール、ポリシー、最小権限
- クラウドの一般的な設定ミス
- クラウドセキュリティポスチャ管理(CSPM)
- コンテナーとKubernetesのセキュリティ