GKE 威胁检测简介


本页面介绍如何在 GKE 安全状况信息中心内使用 GKE 威胁检测功能扫描符合条件的 GKE 集群,以查找活跃威胁。借助 GKE 安全状况信息中心,您可以在符合条件的 GKE 集群中启用各种扫描和审核功能,并显示切实可行的建议来帮助您解决安全问题。 本页面介绍了 GKE 威胁检测的工作原理、它使用的预定义规则、它的限制以及如何启用它。

本页面适用于希望实施第一方漏洞检测解决方案的安全专家。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE Enterprise 用户角色和任务

在阅读本页面之前,请确保您熟悉安全状况信息中心的概览。GKE 威胁检测是安全状况信息中心的一项功能。

工作原理

GKE 威胁检测是可供 GKE Enterprise 用户使用的高级 GKE 安全状况信息中心功能。当 GKE 集群在舰队中注册时,GKE 威胁检测功能会根据一组针对集群和工作负载威胁的预定义规则来评估 Cloud Logging 中的 GKE 审核日志。如果发现威胁,您会在 GKE 安全状况信息中心内看到发现结果,其中说明了威胁、潜在影响以及用于缓解威胁的推荐措施。

系统会持续扫描舰队中所有已注册的 GKE 集群是否存在活跃威胁。我们使用 MITRE ATT&CK® 策略对检测到的威胁进行分类。

GKE 威胁检测由 Security Command Center Event Threat Detection 服务提供支持。在 GKE 安全状况信息中心内,仅评估适用于 GKE 的部分规则。

包含的 GKE Security Posture 功能

GKE 威胁检测与 Kubernetes 安全状况扫描高级层级捆绑在一起。在集群中激活 GKE 威胁检测时,还会激活以下扫描功能:

作为广泛安全策略的一部分使用

GKE 威胁检测是您应在环境中使用的各种安全可观测性产品之一。我们强烈建议您使用 GKE 安全状况信息中心的其他功能(例如漏洞扫描),确保监控集群是否存在一系列安全问题。如需了解详情,请参阅 GKE 文档中的安全状况信息中心简介

我们还建议您在集群和工作负载中,按照强化集群安全性实施尽可能多的安全措施。

价格

GKE 威胁检测功能通过 GKE Enterprise 免费提供。

GKE 威胁检测预定义规则

下表介绍了 GKE 威胁检测功能评估 GKE 审核日志时所依据的评估规则:

显示名称 API 名称 日志源类型 说明
防护规避:创建 Breakglass 工作负载部署(预览版 BINARY_AUTHORIZATION_BREAKGLASS_WORKLOAD_CREATE Cloud Audit Logs
管理员活动日志
使用 breakglass 标志替换 Binary Authorization 控制措施,以检测所部署的工作负载的部署情况。
防护规避:更新 Breakglass 工作负载部署(预览版 BINARY_AUTHORIZATION_BREAKGLASS_WORKLOAD_UPDATE Cloud Audit Logs
管理员活动日志
使用 breakglass 标志替换 Binary Authorization 控制措施,以检测工作负载何时更新。
发现:可以获取敏感的 Kubernetes 对象检查 GKE_CONTROL_PLANE_CAN_GET_SENSITIVE_OBJECT Cloud Audit Logs
GKE 数据访问日志

潜在恶意方尝试使用 kubectl auth can-i get 命令确定可以查询 GKE 中的哪些敏感对象。具体而言,该规则会检测恶意方是否检查了以下对象的 API 访问权限:

提升权限:对敏感 Kubernetes RBAC 对象的更改 GKE_CONTROL_PLANE_EDIT_SENSITIVE_RBAC_OBJECT Cloud Audit Logs
GKE 管理员活动日志
为了提权,潜在恶意方尝试使用 PUTPATCH 请求来修改敏感 cluster-admin 角色的 ClusterRoleRoleBindingClusterRoleBinding 基于角色的访问控制 (RBAC) 对象。
提升权限:为主证书创建 Kubernetes CSR GKE_CONTROL_PLANE_CSR_FOR_MASTER_CERT Cloud Audit Logs
GKE 管理员活动日志
潜在恶意方创建了 Kubernetes 主实例证书签名请求 (CSR),用于向其授予 cluster-admin 访问权限。
提升权限:创建敏感的 Kubernetes 绑定 GKE_CONTROL_PLANE_CREATE_SENSITIVE_BINDING Cloud Audit Logs
IAM 管理员活动审核日志
为了提权,潜在恶意方尝试为 cluster-admin 角色创建新的 RoleBindingClusterRoleBinding 对象。
提升权限:使用被破解的引导凭据获取 Kubernetes CSR GKE_CONTROL_PLANE_GET_CSR_WITH_COMPROMISED_BOOTSTRAP_CREDENTIALS Cloud Audit Logs
GKE 数据访问日志
潜在恶意方使用 kubectl 命令和被破解的引导凭据查询了证书签名请求 (CSR)。
提升权限:启动特权 Kubernetes 容器 GKE_CONTROL_PLANE_LAUNCH_PRIVILEGED_CONTAINER Cloud Audit Logs
GKE 管理员活动日志

潜在恶意方创建了一个 Pod,该 Pod 包含特权容器或具有提权能力的容器。

特权容器的 privileged 字段设置为 true。具有提权能力的容器的 allowPrivilegeEscalation 字段被设置为 true。如需了解详情,请参阅 Kubernetes 文档中的 SecurityContext v1 core API 参考文档。

凭据访问:在 Kubernetes 命名空间中访问 Secret SECRETS_ACCESSED_IN_KUBERNETES_NAMESPACE Cloud Audit Logs
GKE 数据访问日志
检测当前 Kubernetes 命名空间中的服务账号何时访问 Secret 或服务账号令牌。
初始访问:从互联网匿名创建 GKE 资源(预览版 GKE_RESOURCE_CREATED_ANONYMOUSLY_FROM_INTERNET Cloud Audit Logs
GKE 管理员活动日志
检测来自有效匿名互联网用户的资源创建事件。
初始访问:从互联网匿名修改 GKE 资源(预览版 GKE_RESOURCE_MODIFIED_ANONYMOUSLY_FROM_INTERNET Cloud Audit Logs
GKE 管理员活动日志
检测来自有效匿名互联网用户的资源操纵事件。
提升权限:已向匿名用户授予 GKE 集群访问权限 (预览版) GKE_ANONYMOUS_USERS_GRANTED_ACCESS Cloud Audit Logs
GKE 管理员活动日志

有人创建了引用以下用户或群组之一的 RBAC 绑定:

  • system:anonymous
  • system:unauthenticated
  • system:authenticated

这些用户和组实际上是匿名的,因此在为任何 RBAC 角色创建角色绑定或集群角色绑定时,应避免使用这些用户和群组。查看绑定,确保它是必要的。如果不需要该绑定,请将其移除。

执行:可疑执行或系统 Pod 连接(预览版 GKE_SUSPICIOUS_EXEC_ATTACH Cloud Audit Logs
GKE 管理员活动日志
有人使用 execattach 命令获取 shell,或者对在 kube-system 命名空间中运行的容器执行命令。这些方法有时用于合法的调试目的。不过,kube-system 命名空间用于由 Kubernetes 创建的系统对象,并且应检查意外的命令执行或 shell 创建情况。
提升权限:使用敏感主机路径装载创建的工作负载(预览版 GKE_SENSITIVE_HOSTPATH Cloud Audit Logs
GKE 管理员活动日志
有人创建了包含 hostPath 卷的工作负载,该卷装载到主机节点文件系统上的敏感路径。主机文件系统上这些路径的访问权限可用于访问节点上的特权或敏感信息,以及用于容器逃逸。请尽可能不要在集群中允许任何 hostPath 卷。
提升权限:已启用 shareProcessNamespace 的工作负载(预览版 GKE_SHAREPROCESSNAMESPACE_POD Cloud Audit Logs
GKE 管理员活动日志
有人部署了将 shareProcessNamespace 选项设置为 true 的工作负载,允许所有容器共享同一个 Linux 进程命名空间。这可能会让不受信任或遭入侵的容器通过访问和控制其他容器中运行的进程的环境变量、内存和其他敏感数据来提升权限。
提升权限:具有特权动词的 ClusterRole(预览版 GKE_CLUSTERROLE_PRIVILEGED_VERBS Cloud Audit Logs
GKE 管理员活动日志
有人创建了包含 bindescalateimpersonate 动词的 RBAC ClusterRole。与包含这些动词的角色绑定的主体可以伪装成具有更高权限的其他用户,绑定到包含更多权限的其他 RolesClusterRoles,或者修改自己的 ClusterRole 权限。这可能会导致这些主体获得集群管理员权限。
提升权限:ClusterRoleBinding 到特权角色(预览版 GKE_CRB_CLUSTERROLE_AGGREGATION_CONTROLLER Cloud Audit Logs
GKE 管理员活动日志
有人创建了一个引用默认 system:controller:clusterrole-aggregation-controller ClusterRole 的 RBAC ClusterRoleBinding。此默认 ClusterRole 具有 escalate 动词,可让主体修改自己角色的权限,从而允许提升权限。
防护规避:手动删除的证书签名请求 (CSR)(预览版 GKE_MANUALLY_DELETED_CSR Cloud Audit Logs
GKE 管理员活动日志
有人手动删除了证书签名请求 (CSR)。CSR 会被垃圾回收控制器自动移除,但恶意方可能会手动删除 CSR 以规避检测。如果已删除的 CSR 是针对已批准并已颁发的证书,那么潜在恶意方现在就有了额外的身份验证方法来访问集群。与证书关联的权限因包含的主体而异,但可能具有很高的权限。Kubernetes 不支持吊销证书。
凭据访问:未能批准 Kubernetes 证书签名请求 (CSR) (预览版) GKE_APPROVE_CSR_FORBIDDEN Cloud Audit Logs
GKE 管理员活动日志
有人尝试手动批准证书签名请求 (CSR),但操作失败。攻击者常常通过创建集群身份验证证书来创建对遭入侵集群的永久访问权限。与证书关联的权限因包含的主体而异,但可能具有很高的权限。
凭据访问:手动批准的 Kubernetes 证书签名请求 (CSR)(预览版 GKE_CSR_APPROVED Cloud Audit Logs
GKE 管理员活动日志
有人手动批准了证书签名请求 (CSR)。攻击者常常通过创建集群身份验证证书来创建对遭入侵集群的永久访问权限。与证书关联的权限因包含的主体而异,但可能具有很高的权限。
执行:使用潜在的反向 Shell 参数创建的 Kubernetes Pod(预览版 GKE_REVERSE_SHELL_POD Cloud Audit Logs
GKE 管理员活动日志
有人创建了一个 Pod,其中包含通常与反向 shell 关联的命令或参数。攻击者使用反向 shell 来扩展或维持对集群的初始访问权限,并执行任意命令。
防护规避:潜在的 Kubernetes Pod 伪装(预览版 GKE_POD_MASQUERADING Cloud Audit Logs
GKE 管理员活动日志
有人部署了一个 Pod,其命名惯例与 GKE 为常规集群操作创建的默认工作负载类似。这种技术称为伪装
提升权限:可疑的 Kubernetes 容器名称 - 利用和转义 (预览版) GKE_SUSPICIOUS_EXPLOIT_POD Cloud Audit Logs
GKE 管理员活动日志
有人部署了一个 Pod,其命名惯例与用于容器逃逸或在集群中执行其他攻击的常用工具类似。
影响:可疑的 Kubernetes 容器名称 - 虚拟货币挖矿(预览版 GKE_SUSPICIOUS_CRYPTOMINING_POD Cloud Audit Logs
GKE 管理员活动日志
有人部署了一个 Pod,其命名惯例与常见加密货币挖矿者类似。这可能是已获得集群初始访问权限的攻击者试图利用集群的资源进行加密货币挖矿。
执行:在敏感命名空间中触发了工作负载(预览版 GKE_SENSITIVE_NAMESPACE_WORKLOAD_TRIGGERED Cloud Audit Logs
GKE 管理员活动日志
有人在 kube-systemkube-public 命名空间中部署了工作负载(例如 Pod 或 Deployment)。这些命名空间对于 GKE 集群操作至关重要,未经授权的工作负载可能会破坏集群的稳定性或安全性。
执行:GKE 启动了功能过多的容器(预览版 GKE_EXCESSIVELY_CAPABLE_CONTAINER_CREATED Cloud Audit Logs
GKE 管理员活动日志
有人在具有受提升安全上下文的集群中创建了具有以下一个或多个功能的容器:
  • CAP_SYS_MODULE
  • CAP_SYS_RAWIO
  • CAP_SYS_PTRACE
  • CAP_SYS_BOOT
  • CAP_DAC_READ_SEARCH
  • CAP_NET_ADMIN
  • CAP_BPF
这些功能可用于从容器中逃逸。在预配这些功能时,请务必小心谨慎。
持久性:检测到 GKE webhook 配置(预览版 GKE_WEBHOOK_CONFIG_CREATED Cloud Audit Logs
GKE 管理员活动日志
在您的 GKE 集群中检测到 webhook 配置。webhook 可以拦截和修改 Kubernetes API 请求,可能使攻击者能够在您的集群中持久化或操纵资源。
防护规避:创建了静态 Pod(预览版 GKE_STATIC_POD_CREATED Cloud Audit Logs
GKE 管理员活动日志
有人在您的 GKE 集群中创建了静态 Pod。静态 Pod 直接在节点上运行,并绕过 Kubernetes API 服务器,这使得它们更难以监控和控制。攻击者可以使用静态 Pod 来逃避检测或维护持久性。
初始访问权限:从 TOR 代理 IP 发出了成功的 API 调用(预览版 GKE_TOR_PROXY_IP_REQUEST Cloud Audit Logs
GKE 管理员活动日志
从与 Tor 网络关联的 IP 地址向您的 GKE 集群发出了成功的 API 调用。Tor 可提供匿名性,攻击者通常会利用这一点来隐藏自己的身份。
初始访问权限:创建了 GKE NodePort 服务(预览版 GKE_NODEPORT_SERVICE_CREATED Cloud Audit Logs
GKE 管理员活动日志
有人创建了 NodePort 服务。NodePort 服务会直接在节点的 IP 地址和静态端口上公开 Pod,从而使 Pod 可从集群外部访问。这可能会引发严重的安全风险,因为攻击者可能会利用已公开服务中的漏洞来获取对集群或敏感数据的访问权限。
影响:检测到 GKE kube-dns 修改(预览版 GKE_KUBE_DNS_MODIFICATION Cloud Audit Logs
GKE 管理员活动日志
有人修改了 GKE 集群中的 kube-dns 配置。GKE kube-dns 是集群网络的关键组成部分,如果配置错误,可能会导致安全事故。
如需了解已弃用和已关闭的规则,请参阅弃用

如何启用 GKE 威胁检测

如需启用 GKE 威胁检测,您需要在 Kubernetes 安全状况扫描高级层级中注册符合条件的集群。这也会激活 Kubernetes 安全状况扫描基本层级中包含的所有功能,例如工作负载配置审核和安全公告呈现。

如需了解详情,请参阅使用 GKE 威胁检测功能查找集群中的威胁

限制

GKE 威胁检测存在以下限制:

  • 仅在 GKE Enterprise 中可用
  • 仅适用于组织中的项目
  • 不支持 Security Command Center 选项(例如配置数据驻留)
  • 仅显示已注册到舰队的集群的结果
  • GKE 会将不再具有任何关联受影响资源的威胁发现结果保留长达 180 天
  • 仅显示现有集群的结果。如果您删除集群,那么 GKE 威胁检测功能再也不会在 GKE 安全状况信息中心内显示发现结果。

后续步骤