kubernetes-security-policies について
Kubernetes Security Policiesは、Kubernetesクラスターのセキュリティ対策を実装するためのガイダンススキルです。強化、監査、コンプライアンスを担う運用・セキュリティチーム向けに、Podやネットワークからアクセス制御、シークレット、イメージ、ランタイムまでを扱います。
主な機能
- 01Pod Security Standardsの設定
- 02Network Policiesによる分離設計
- 03最小権限RBACの適用
- 04コンテナSecurity Contextの設定
- 05アドミッション制御ポリシーの導入
- 06シークレット・イメージ・ランタイムの保護
活用シーン
- 01本番Kubernetesクラスターの強化
- 02RBAC権限の確認と修正
- 03ネットワーク分離とアドミッションポリシーの導入
- 04CISなどのコンプライアンス評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ nickcrew/ claude-cortex --skill kubernetes-security-policiesインストール後、Claude Code で/kubernetes-security-policiesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/admission-control.mdbest-practices.mdimage-security.mdnetwork-policies.mdpod-security-standards.mdrbac.mdsecrets-management.mdsecurity-contexts.md詳細
Kubernetes セキュリティポリシー
Pod Security Standards、Network Policies、RBAC、Security Contexts、アドミッション制御、シークレット管理、ランタイムセキュリティを網羅した、Kubernetes クラスターでセキュリティポリシーを実装するための包括的なガイダンスです。本番環境向けの堅牢化されたデプロイに対応します。
このスキルを使用する場面
- 名前空間全体に Pod Security Standards(PSS/PSA)を実装する
- マイクロセグメンテーション用の Network Policies を設計、適用する
- 最小権限のアクセス制御で RBAC を設定する
- コンテナーを堅牢化するために Security Contexts を設定する
- アドミッションコントローラー(OPA/Gatekeeper、Kyverno)をデプロイする
- シークレットや機密データを安全に管理する
- イメージのセキュリティと脆弱性スキャンを実装する
- ランタイムセキュリティポリシーと脅威検知を適用する
- コンプライアンス要件(CIS、NIST、PCI-DSS、SOC2)を満たす
- セキュリティ監査と堅牢化評価を実施する
セキュリティの基本概念
Pod Security Standards(PSS): Pod Security Admission(PSA)を通じて適用される、段階的な3つのセキュリティレベルです。
- Privileged: 制限なし(デフォルト)
- Baseline: 既知の権限昇格を防止します
- Restricted: Pod の堅牢化に関するベストプラクティスです(本番環境で推奨)
Network Policies: ラベルセレクターと名前空間の分離を使用して、Pod 間および Pod と外部とのトラフィックを制御するゼロトラストのマイクロセグメンテーションです。
RBAC(ロールベースのアクセス制御): ServiceAccounts、名前空間スコープの権限に対する Roles と RoleBindings、クラスター全体へのアクセスに対する ClusterRoles を使用した最小権限のアクセス制御です。
Security Contexts: ユーザー/グループ ID、ケイパビリティ、seccomp プロファイル、ファイルシステム制限など、コンテナーおよび Pod レベルのセキュリティ設定です。
アドミッション制御: OPA Gatekeeper(Rego)または Kyverno(YAML)を使用して、API のアドミッション時にリソースを検証、変更、または拒否するポリシー適用です。
シークレット管理: Kubernetes 標準のシークレットではなく、外部のシークレットストレージ(Vault、AWS Secrets Manager、Sealed Secrets)と連携します。
イメージセキュリティ: 脆弱性スキャン、署名検証、ダイジェストベースの不変性、プライベートレジストリ認証です。
クイックリファレンス
| タスク | 参照先 |
|---|---|
| Pod Security Standards(PSS/PSA) | skills/kubernetes-security-policies/references/pod-security-standards.md |
| Network Policies | skills/kubernetes-security-policies/references/network-policies.md |
| RBAC(Roles、ServiceAccounts) | skills/kubernetes-security-policies/references/rbac.md |
| Security Contexts(ケイパビリティ、seccomp) | skills/kubernetes-security-policies/references/security-contexts.md |
| アドミッション制御(OPA、Kyverno) | skills/kubernetes-security-policies/references/admission-control.md |
| シークレット管理(Vault、ESO) | skills/kubernetes-security-policies/references/secrets-management.md |
| イメージセキュリティ(スキャン、署名) | skills/kubernetes-security-policies/references/image-security.md |
| ベストプラクティスとコンプライアンス | skills/kubernetes-security-policies/references/best-practices.md |
セキュリティ実装ワークフロー
フェーズ 1:ベースライン評価
- kube-bench または kubescape で現在のセキュリティ態勢を監査します
- CIS Kubernetes Benchmark に対するギャップを特定します
- コンプライアンス要件(PCI-DSS、NIST、SOC2)を文書化します
フェーズ 2:Pod Security Standards
- すべての名前空間で PSA の監査モードを有効にします
kubectl get pods -A --show-labelsを使用して違反を特定します- ワークロードを修正し、baseline/restricted の基準を満たします
- 段階的に適用します:dev(warn)→ staging(baseline)→ prod(restricted)
フェーズ 3:ネットワークのセグメンテーション
- すべての名前空間にデフォルト拒否の NetworkPolicy をデプロイします
- 必要なトラフィックフローに対する明示的な許可ルールを作成します
- データベースの分離ポリシーを実装します
- 監視/可観測性のための例外を追加します
フェーズ 4:アクセス制御(RBAC)
kubectl auth can-i --listを使って既存の RBAC を監査します- アプリケーションごとに専用の ServiceAccount を作成します
- リソースと動詞を具体的に制限した、最小権限の Role を定義します
- デフォルトで
automountServiceAccountTokenを無効にします - ClusterRole の使用を最小限に抑えます
フェーズ 5:アドミッション制御
- ポリシーエンジンを選択します:OPA Gatekeeper(Rego)または Kyverno(YAML)
- 検証ポリシーを実装します:ラベル、リソース制限、非 root を必須にします
- ミューテーションポリシーを追加します:セキュリティコンテキストやサイドカーコンテナを挿入します
- イメージポリシーを適用します:latest タグを禁止し、署名を必須にします
フェーズ 6:シークレット管理
- External Secrets Operator または Vault との連携を導入します
- Kubernetes 標準の Secret を外部シークレットストアに移行します
- etcd の保存時暗号化を有効にします
- シークレットのローテーションポリシーを実装します
フェーズ 7:イメージセキュリティ
- CI/CD に脆弱性スキャンを統合します(Trivy、Snyk)
- Sigstore/Cosign を使ってイメージ署名を実装します
- アドミッション制御を通じて署名検証を適用します
- タグの代わりに不変のイメージダイジェストを使用します
フェーズ 8:ランタイムセキュリティ
- ランタイムの脅威検知に Falco を導入します
- Kubernetes の監査ログを有効にします
- セキュリティイベントのアラートを設定します
- 侵入検知ポリシーを実装します
よくある間違い
Pod セキュリティ:
- コンテナを root として実行する(常に
runAsNonRoot: trueを設定します) - 特権コンテナを使用する(絶対に必要な場合を除き、避けます)
- root ファイルシステムを書き込み可能にする(
readOnlyRootFilesystem: trueを設定します) - リソース制限を設定しない(制限付き PSS では必須です)
ネットワークポリシー:
- デフォルト拒否ポリシーがない(Pod 間の通信が制限されません)
- egress ルールの許可範囲が広すぎる(すべての外部トラフィックを許可します)
- DNS の egress を忘れる(Pod が名前を解決できません)
- 監視/可観測性に必要な例外がない
RBAC:
- ClusterRole の権限が広すぎる(最小権限の原則に違反します)
- 複数のアプリケーションで ServiceAccount を共有する
- Role で
*の動詞やリソースを使用する - RBAC 権限を定期的に監査しない
シークレット:
- シークレットを Git リポジトリにコミットする
- マウントしたファイルではなく環境変数を使用する
- Base64 エンコードを暗号化として扱う
- シークレットのローテーションポリシーがない
アドミッション制御:
- 先に監査フェーズを実施せずにポリシーを適用する
- 誤って kube-system 名前空間をブロックする
- ステージング環境でポリシーをテストしない
- システムコンポーネント向けの例外がない
イメージ:
latestタグを使用する(不変ではなく、再現性が損なわれます)- CI/CD で脆弱性スキャンを実施しない
- 本番環境で署名されていないイメージを使用する
- ベースイメージが大きい(distroless または Alpine を使用します)
リソース
- Pod Security Standards: https://kubernetes.io/docs/concepts/security/pod-security-standards/
- ネットワークポリシー: https://kubernetes.io/docs/concepts/services-networking/network-policies/
- RBAC: https://kubernetes.io/docs/reference/access-authn-authz/rbac/
- OPA Gatekeeper: https://open-policy-agent.github.io/gatekeeper/
- Kyverno: https://kyverno.io/docs/
- External Secrets Operator: https://external-secrets.io/
- Falco ランタイムセキュリティ: https://falco.org/docs/
- CIS ベンチマーク: https://www.cisecurity.org/benchmark/kubernetes
- NSA/CISA ハードニングガイド: https://media.defense.gov/2022/Aug/29/2003066362/-1/-1/0/CTR_KUBERNETES_HARDENING_GUIDANCE_1.2_20220829.PDF