kubernetes-security-audit について
ワークロード、ID、ネットワーク、サプライチェーンを対象に、Kubernetesクラスターを監査するスキルです。YAMLの証拠とリスクを添えた指摘事項、および修正用マニフェストを提示します。
主な機能
- 01ワークロードのセキュリティ設定を監査
- 02RBACのロールと権限昇格経路を確認
- 03ネットワークポリシーと公開範囲を確認
- 04イメージの来歴とシークレットを評価
- 05証拠と修正用マニフェストを提示
活用シーン
- 01デプロイ前のクラスター監査
- 02サービスアカウントの過剰な権限を発見
- 03サービスやコントロールプレーンの公開を特定
- 04指摘事項を修正するマニフェストを準備
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ securityskills/ skills --skill kubernetes-security-auditインストール後、Claude Code で/kubernetes-security-auditを入力して読み込まれたか確認します。
詳細
Kubernetes セキュリティ監査
ワークロード、ID、ネットワーク、サプライチェーンの4つのレイヤーにわたってクラスターを監査します。
ワークロードのセキュリティ
- Pod Security Standards:名前空間のラベル(
pod-security.kubernetes.io/enforce)を確認します - 特権付き Pod、
hostPID/hostNetwork/hostPathの使用には、それぞれ正当な理由が必要です - root で実行されるコンテナ、
allowPrivilegeEscalation: true、readOnlyRootFilesystemの未設定 - Pod とコンテナのレベルで
securityContextを設定し、ケイパビリティを必要最小限に削減します
RBAC
- バインディングを列挙し、
cluster-adminのサブジェクトを特定します。明示的に指定した一覧に最小化します - 権限昇格経路:
bind/escalate/impersonate動詞、create pods+ ノードへの特権アクセス、create pods/exec - サービスアカウント:ワークロードでデフォルトの SA が使用されていますか?不要な場合、トークンの自動マウントは無効になっていますか?
- カスタムロールでワイルドカード(
*)の動詞/リソースが使われていないか確認します
ネットワーク
- NetworkPolicy:各名前空間で ingress/egress をデフォルト拒否にすることを基本とします
- 名前空間間の公開範囲:どの名前空間から
kube-system、Ingress コントローラー、データベースにアクセスできますか? - コントロールプレーンの公開範囲:API サーバーはパブリック IP で公開されていますか?etcd に到達可能で、認証されていますか?
サプライチェーン
- イメージの来歴:レジストリのダイジェストを固定し(
:latestは使用しない)、署名を検証します(cosign) - アドミッション制御:イメージポリシーを設定し、信頼できないレジストリからの特権付きイメージを禁止します
- シークレット:Kubernetes Secrets は保存時に暗号化されていますか(KMS 暗号化が設定されていますか)。イメージに埋め込んだり、Git にコミットされたマニフェスト内の環境変数として設定したりしないでください
クイックチェック
kubectl get pods -A -o json | jq '[.items[] | select(.spec.containers[].securityContext.privileged==true)]'
kubectl get ns -l pod-security.kubernetes.io/enforce
kubectl auth can-i --list --as=system:serviceaccount:default:default
kubectl get networkpolicy -A
出力
各レイヤーの検出事項を、YAML の証拠、リスク、および修正用の強化マニフェストとともに提示します。
コメント
Markdown 対応