16.3. Pod セキュリティーアドミッションアラート
PodSecurityViolation
アラートがトリガーされるのは、Pod セキュリティーアドミッションコントローラーの監査レベルで Pod が拒否されたことを Kubernetes API サーバーが報告された場合です。このアラートは 1 日間持続します。
Kubernetes API サーバーの監査ログを表示して、トリガーされたアラートを調査します。たとえば、グローバル適用の Pod セキュリティーレベルが restricted
に設定されている場合には、ワークロードは承認に失敗する可能性があります。
Pod セキュリティーアドミッション違反の監査イベントを特定する方法については、Kubernetes ドキュメントの 監査アノテーション を参照してください。
16.3.1. Pod のセキュリティー違反の特定
PodSecurityViolation
アラートは、どのワークロードが Pod のセキュリティー違反を引き起こしているかについての詳細を提供しません。影響を受けるワークロードは、Kubernetes API サーバーの監査ログを確認することで特定できます。この手順では、must-gather
ツールを使用して監査ログを収集し、pod-security.kubernetes.io/audit-violations
アノテーションを検索します。
前提条件
-
jq
がインストールされている。 -
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
監査ログを収集するには、次のコマンドを入力します。
$ oc adm must-gather -- /usr/bin/gather_audit_logs
影響を受けるワークロードの詳細を出力するには、次のコマンドを入力します。
$ zgrep -h pod-security.kubernetes.io/audit-violations must-gather.local.<archive_id>/quay*/audit_logs/kube-apiserver/*log.gz \ | jq -r 'select((.annotations["pod-security.kubernetes.io/audit-violations"] != null) and (.objectRef.resource=="pods")) | .objectRef.namespace + " " + .objectRef.name + " " + .objectRef.resource' \ | sort | uniq -c
must-gather.local.<archive_id>
を実際のディレクトリー名に置き換えます。出力例
15 ci namespace-ttl-controller deployments 1 ci-op-k5whzrsh rpm-repo-546f98d8b replicasets 1 ci-op-k5whzrsh rpm-repo deployments