16.4. Pod セキュリティーアドミッションアラート
PodSecurityViolation
アラートがトリガーされるのは、Pod セキュリティーアドミッションコントローラーの監査レベルで Pod が拒否されたことを Kubernetes API サーバーが報告された場合です。このアラートは 1 日間持続します。
Kubernetes API サーバーの監査ログを表示して、トリガーされたアラートを調査します。たとえば、グローバル適用の Pod セキュリティーレベルが restricted
に設定されていると、ワークロードが承認に失敗する可能性があります。
Pod セキュリティーアドミッション違反の監査イベントを特定する方法については、Kubernetes ドキュメントの 監査アノテーション を参照してください。
16.4.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>/<image_digest_id>/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' \ | sort | uniq -c
<archive_id>
と<image_digest_id>
を、実際のパス名に置き換えます。出力例
1 test-namespace my-pod