本页面介绍了如何自动审核工作负载配置以发现安全问题,以及如何获取切实可行的建议,以改善 Google Kubernetes Engine (GKE) Autopilot 和 Standard 集群的安全状况。工作负载配置审核是安全状况信息中心的一项功能。如需了解详情,请参阅工作负载配置审核简介。
价格
安全状况信息中心通过 Container Security API 在 GKE 中免费提供。
添加到 Cloud Logging 的条目使用 Cloud Logging 价格。
准备工作
在开始之前,请确保您已执行以下任务:
- 启用 Google Kubernetes Engine API。 启用 Google Kubernetes Engine API
- 如果您要使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行
gcloud components update
以获取最新版本。
启用 Container Security API
要求
-
如需获得使用工作负载配置审核所需的权限,请让您的管理员为您授予 Google Cloud 项目的 Security Posture Viewer (
roles/containersecurity.viewer
) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。此预定义角色可提供使用工作负载配置审核所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
使用工作负载配置审核需要以下权限:
-
resourcemanager.projects.get
-
resourcemanager.projects.list
-
containersecurity.locations.list
-
containersecurity.locations.get
-
containersecurity.clusterSummaries.list
-
containersecurity.findings.list
-
- 工作负载配置审核需要 GKE 1.21 及更高版本。
启用工作负载配置审核
运行 1.27 及更高版本的新 Autopilot 和 Standard 集群默认启用工作负载配置审核。您也可以使用 gcloud CLI 或 Google Cloud 控制台手动启用此功能。
在新集群上启用配置审核
gcloud
使用 gcloud CLI 创建新的 GKE 集群:
gcloud container clusters create-auto CLUSTER_NAME \ --location=LOCATION \ --security-posture=standard
替换以下内容:
CLUSTER_NAME
:新集群的名称。LOCATION
:集群的 Compute Engine 位置。
控制台
转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
转到 Google Kubernetes Engine- 点击 创建。
- 在 GKE Autopilot 部分中,点击配置。
- 在导航窗格中,点击高级设置。如果您要创建 Standard 集群,请改为点击安全。
- 在安全部分中,选中配置审核复选框。
- 为集群配置其他选项,并在准备就绪后点击创建。
在现有集群上启用配置审核
gcloud
更新集群:
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --security-posture=standard
替换以下内容:
CLUSTER_NAME
:您的集群的名称。LOCATION
:集群的 Compute Engine 位置。
控制台
进入 Google Cloud 控制台中的安全状况页面。
进入“安全状况”- 点击设置标签。
- 在已启用配置审核的集群部分中,点击选择集群。
- 选中要添加的集群对应的复选框。
- 在选择操作下拉菜单中,选择设置为基本。
- 点击应用。
如果您使用 Google Kubernetes Engine (GKE) Enterprise 版本管理集群舰队,则还可以配置应用于所有成员集群的舰队级配置审核设置。如需了解相关说明,请参阅在舰队级层配置 GKE 安全状况信息中心功能。
部署测试工作负载
部署一个有意违反 Pod 安全标准的示例应用。
将以下清单保存为
misconfig-sample.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: helloweb labels: app: hello spec: selector: matchLabels: app: hello tier: web template: metadata: labels: app: hello tier: web spec: containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 ports: - containerPort: 8080 securityContext: runAsNonRoot: false resources: requests: cpu: 200m
将应用部署到您的集群:
kubectl apply -f misconfig-sample.yaml
如果您要尝试其他违规行为,请使用相应的“错误”配置修改 misconfig-sample.yaml
。
查看和处理配置审核结果
初始审核最多需要 15 分钟即可返回结果。GKE 会在安全状况信息中心上显示结果,并自动将条目添加到集群日志中。
查看结果
如需大致了解项目的集群和工作负载中发现的问题,请执行以下操作:
进入 Google Cloud 控制台中的安全状况页面。
点击问题标签页。
在过滤条件问题窗格的问题类型部分中,选中配置复选框。
查看问题详情和建议
如需查看特定配置问题的详细信息,请点击包含该问题的行。
配置问题窗格会显示以下信息:
- 说明:问题的说明。
- 推荐执行的操作:为修复配置问题可执行的操作概览。本部分包括以下详细信息:
- 哪些资源需要修复
- 可以运行来修复受影响的资源的示例命令。
- 用于修复问题的 Google Cloud 控制台说明(如适用)
查看日志以了解发现的问题
GKE 会针对每个发现的问题向 Logging 中的 _Default
日志存储桶添加条目。这些日志仅保留特定时间。有关详情,请参阅日志保留期限。
在 Google Cloud 控制台中,转到 Logs Explorer 页面。
前往 Logs Explorer在查询字段中,指定以下查询:
resource.type="k8s_cluster" jsonPayload.@type="type.googleapis.com/cloud.kubernetes.security.containersecurity_logging.Finding" jsonPayload.type="FINDING_TYPE_MISCONFIG"
点击运行查询。
如需在 GKE 向 Logging 添加新发现时收到通知,请为此查询设置基于日志的提醒。如需了解详情,请参阅配置基于日志的提醒。
清理
删除您部署的示例工作负载。
kubectl delete deployment helloweb
(可选)删除您使用的集群。
gcloud container clusters delete CLUSTER_NAME \ --region=COMPUTE_REGION
停用工作负载配置审核
您可以使用 gcloud CLI 或 Google Cloud 控制台停用工作负载配置审核。
gcloud
运行以下命令:
gcloud container clusters update CLUSTER_NAME \ --region=LOCATION \ --security-posture=disabled
替换以下内容:
CLUSTER_NAME
:您的集群的名称。LOCATION
:集群的 Compute Engine 区域或可用区。
控制台
进入 Google Cloud 控制台中的安全状况页面。
进入“安全状况”- 点击设置标签。
- 在已启用配置审核的集群部分中,点击选择集群。
- 在审核已启用标签页中,选中要移除的集群对应的复选框。
- 点击停用审核,然后点击确认以在这些集群上停用审核。
工作负载配置审核的局限性
- 不支持 Windows Server 节点池。
- 工作负载配置审核不会扫描 GKE 管理的工作负载,例如
kube-system
命名空间中的工作负载。 - 工作负载配置审核仅适用于节点少于 1,000 个的集群。
安全状况信息中心支持每个集群最多 150,000 个活跃工作负载配置审核发现结果。当集群的发现结果数量超过此上限时,安全状况信息中心会停止显示该集群的配置发现结果。
如需解决此问题,请使用 Logging 中的日志来识别配置问题并部署更新后的清单。当配置发现结果的数量少于 150,000 时,安全状况信息中心会开始显示集群的发现结果。