Kubernetes 安全状况扫描简介


本页介绍 Kubernetes 安全状况扫描,它是安全状况信息中心的一项功能,可检测常见的安全配置问题、Kubernetes 工作负载中实用的安全公告,以及 GKE Enterprise 集群中的活跃威胁。

如需启用和使用 Kubernetes 安全状况扫描,请参阅以下资源:

Kubernetes 安全状况扫描提供以下功能:

价格

  • 标准层级:在 GKE 中免费提供。
  • 高级层级:包含在 GKE Enterprise 中。

添加到 Cloud Logging 的条目按 Cloud Logging 价格计费。

工作负载配置审核简介

理想情况下,您在 GKE 上部署的工作负载应具有安全加固配置,用于限制其攻击面。跨集群检查工作负载是否存在配置问题可能难以大规模手动执行。您可以使用安全状况信息中心自动审核多个集群中所有正在运行的工作负载的配置,并返回切实可行、计分的结果和针对性的建议,以改善安全状况。

工作负载配置审核根据 Pod 安全标准中的部分政策检查每个已部署的工作负载。工作负载配置审核在 Google 的基础架构上进行,并且不使用节点上的计算资源。

工作负载配置审核的优势

  • 自动检测所有工作负载中的已知配置问题。
  • 获取切实可行的建议来改善安全状况。
  • 使用 Google Cloud 控制台便可大致了解配置问题。
  • 使用 Logging 可获取问题可审核的跟踪记录,有助于提高报告功能和可观测性。

工作负载配置审核的工作原理

对于每个符合条件的已部署工作负载,GKE 都会不断扫描工作负载的规范,并将字段和值与底层安全政策中定义的控件进行比较。例如,具有 spec.containers.securityContext.privileged=true 的 Pod 违反了基准 Pod 安全标准,spec.securityContext.runAsNonRoot 字段设置为 false 的 Pod 违反了受限标准。如需查看 GKE 检查的安全政策列表,请参阅工作负载配置审核检查的内容

扫描并发现问题后,GKE 会根据内置的安全加固措施对发现的配置问题的严重程度进行分级。GKE 会分配一个严重级别,而严重级别可以告知响应问题的速度。Google Cloud 控制台会显示结果以及建议执行的操作,以便用户修复问题。GKE 还会向 Cloud Logging 添加相应条目以便用户进行跟踪和审核。

工作负载配置审核检查哪些内容?

问题 字段 允许使用的值 严重程度

主机命名空间

共享主机命名空间的 Pod 允许 Pod 进程与主机进程通信并收集主机信息,这可能会导致容器逃逸。

  • spec.hostNetwork
  • spec.hostIPC
  • spec.hostPID
  • 未定义或 nil
  • false

特权容器

特权容器允许几乎没有限制的主机访问。这类容器与主机共享命名空间,并且缺少控件组、seccomp、AppArmor 和功能限制。

  • spec.containers[*].securityContext.privileged
  • spec.initContainers[*].securityContext.privileged
  • spec.ephemeralContainers[*].securityContext.privileged
  • 未定义或 nil
  • false

主机端口访问权限

向容器公开主机端口可能会允许容器拦截使用该端口的主机服务的网络流量,或绕过网络访问权限控制规则(例如 NetworkPolicy 中的规则)。

  • spec.containers[*].ports[*].hostPort
  • spec.initContainers[*].ports[*].hostPort
  • spec.ephemeralContainers[*].ports[*].hostPort
  • 未定义或 nil
  • 0

非默认功能

容器可能分配有允许容器逃逸的功能。

  • spec.containers[*].securityContext.capabilities.add
  • spec.initContainers[*].securityContext.capabilities.add
  • spec.ephemeralContainers[*].securityContext.capabilities.add
  • 未定义或 nil
  • AUDIT_WRITE
  • CHOWN
  • DAC_OVERRIDE
  • FOWNER
  • FSETID
  • KILL
  • MKNOD
  • NET_BIND_SERVICE
  • SETFCAP
  • SETGID
  • SETPCAP
  • SETUID
  • SYS_CHROOT

装载主机路径卷

hostPath 卷用于从主机装载文件或目录。这些卷存在可能导致容器逃逸的安全风险。

spec.volumes[*].hostPath 未定义或 nil

非默认 /proc 掩码

默认装载类型 /proc 会遮盖 /proc 中的某些路径,以避免公开可能导致信息泄露或容器逃逸的路径。使用非默认类型会增加这些风险。

  • spec.containers[*].securityContext.procMount
  • spec.initContainers[*].securityContext.procMount
  • spec.ephemeralContainers[*].securityContext.procMount
  • 未定义或 nil
  • 默认

不安全的 sysctl 掩码

Pod 可以配置为允许使用 /proc/sys 虚拟文件系统修改不安全的内核参数。不安全的参数不支持命名空间、无法在 Pod 之间适当隔离其影响、可能危害节点的健康状况,或者可能会允许 Pod 获取超出其限制的资源。

spec.securityContext.sysctls[*].name
  • 未定义或 nil
  • kernel.shm_rmid_forced
  • net.ipv4.ip_local_port_range
  • net.ipv4.ip_unprivileged_port_start
  • net.ipv4.tcp_syncookies
  • net.ipv4.ping_group_range

以非根用户身份运行

如果映像中的 runAsUserUSER 指令指定 root 用户,则您可以明确允许容器以根用户身份运行。以根用户身份运行时,缺少这项预防性的安全控制措施会增加容器逃逸的风险。

  • spec.securityContext.runAsNonRoot
  • spec.containers[*].securityContext.runAsNonRoot
  • spec.initContainers[*].securityContext.runAsNonRoot
  • spec.ephemeralContainers[*].securityContext.runAsNonRoot
true

提升权限

容器可以明确配置为允许在执行时提升权限。这允许在该容器中创建的进程执行 set-user-id、set-group-id 或文件功能可执行文件,以获取可执行文件指定的特权。缺少这项预防性的安全控制措施会增加容器逃逸的风险。

  • spec.containers[*].securityContext.allowPrivilegeEscalation
  • spec.initContainers[*].securityContext.allowPrivilegeEscalation
  • spec.ephemeralContainers[*].securityContext.allowPrivilegeEscalation
false

不受限制的 AppArmor 配置文件

容器可以明确配置为不受 AppArmor 限制。这会确保没有任何 AppArmor 配置文件应用于该容器,从而让该容器不受其限制。停用这项预防性的安全控制功能会增加容器逃逸的风险。

metadata.annotations["container.apparmor.security.beta.kubernetes.io/*"] false

安全公告呈现简介

在 GKE 中发现漏洞时,我们会修补漏洞并针对漏洞发布安全公告。如需了解漏洞识别、修补和时间轴,请参阅 GKE 安全修补

安全状况信息中心显示影响您的集群、工作负载和 Standard 模式节点池的安全公告。此功能是安全状况信息中心的 Kubernetes 安全状况功能的一部分,会在您创建 Autopilot 或 Standard 集群时自动启用。如需启用 Kubernetes 安全状况扫描,请按照自动审核工作负载以查找配置问题中的说明操作。

Google Cloud 控制台会显示各种详细信息,包括受影响的集群、版本和推荐用于升级以修复漏洞的补丁版本等。您只会看到你的集群所在 Google Cloud 区域或可用区中有可用缓解措施的公告。

如需查看您在 Kubernetes 安全状况扫描中注册的集群的公告,请前往安全状况信息中心:

进入“安全状况”

影响您的环境的任何可用公告都会显示在安全公告部分中。

GKE 威胁检测简介

GKE 威胁检测功能会扫描已注册集群的审核日志以查找活跃威胁,并提供建议的缓解措施。GKE 威胁检测由 Security Command Center Event Threat Detection 服务提供支持。如需了解详情,请参阅 GKE Enterprise 文档中的 GKE 威胁检测简介

后续步骤