16.3. 关于 Pod 安全准入警报

当 Kubernetes API 服务器报告 pod 安全准入控制器的审计级别时,会触发 PodSecurityViolation 警报。此警报持续一天。

查看 Kubernetes API 服务器审计日志,以调查触发的警报。例如,如果将全局执行设置为 restricted pod 安全级别,工作负载可能会出现故障。

如需有关识别 Pod 安全准入违反审计事件的帮助,请参阅 Kubernetes 文档中的 Audit 注解

16.3.1. 识别 pod 安全违反情况

PodSecurityViolation 警报不会提供导致 pod 安全漏洞的工作负载的详情。您可以通过查看 Kubernetes API 服务器审计日志来识别受影响的工作负载。此流程使用 must-gather 工具来收集审计日志,然后搜索 pod-security.kubernetes.io/audit-violations 注解。

先决条件

  • 您已安装了 jq
  • 您可以使用具有 cluster-admin 角色的用户访问集群。

流程

  1. 要收集审计日志,请输入以下命令:

    $ oc adm must-gather -- /usr/bin/gather_audit_logs
  2. 要输出受影响的工作负载详情,请输入以下命令:

    $ 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