自动审核工作负载以查找配置问题


本页面介绍了如何自动审核工作负载配置以发现安全问题,以及如何获取切实可行的建议,以改善 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 以获取最新版本。

要求

  • 如需获得使用工作负载配置审核所需的权限,请让您的管理员为您授予 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 CLI 创建新的 GKE 集群:

gcloud container clusters create-auto CLUSTER_NAME \
    --location=LOCATION \
    --security-posture=standard

替换以下内容:

  1. 转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine
  2. 点击 创建
  3. GKE Autopilot 部分中,点击配置
  4. 在导航窗格中,点击高级设置。如果您要创建 Standard 集群,请改为点击安全
  5. 安全部分中,选中配置审核复选框。
  6. 为集群配置其他选项,并在准备就绪后点击创建

在现有集群上启用配置审核

更新集群:

gcloud container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --security-posture=standard

替换以下内容:

  1. 进入 Google Cloud 控制台中的安全状况页面。

    进入“安全状况”
  2. 点击设置标签。
  3. 已启用配置审核的集群部分中,点击选择集群
  4. 选中要添加的集群对应的复选框。
  5. 选择操作下拉菜单中,选择设置为基本
  6. 点击应用

如果您使用 Google Kubernetes Engine (GKE) Enterprise 版本管理集群舰队,则还可以配置应用于所有成员集群的舰队级配置审核设置。如需了解相关说明,请参阅在舰队级层配置 GKE 安全状况信息中心功能

部署测试工作负载

部署一个有意违反 Pod 安全标准的示例应用。

  1. 将以下清单保存为 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
    
  2. 将应用部署到您的集群:

    kubectl apply -f misconfig-sample.yaml
    

如果您要尝试其他违规行为,请使用相应的“错误”配置修改 misconfig-sample.yaml

查看和处理配置审核结果

初始审核最多需要 15 分钟即可返回结果。GKE 会在安全状况信息中心上显示结果,并自动将条目添加到集群日志中。

查看结果

如需大致了解项目的集群和工作负载中发现的问题,请执行以下操作:

  1. 进入 Google Cloud 控制台中的安全状况页面。

    进入“安全状况”

  2. 点击问题标签页。

  3. 过滤条件问题窗格的问题类型部分中,选中配置复选框。

查看问题详情和建议

如需查看特定配置问题的详细信息,请点击包含该问题的行。

配置问题窗格会显示以下信息:

  • 说明:问题的说明。
  • 推荐执行的操作:为修复配置问题可执行的操作概览。本部分包括以下详细信息:
    • 哪些资源需要修复
    • 可以运行来修复受影响的资源的示例命令。
    • 用于修复问题的 Google Cloud 控制台说明(如适用)

查看日志以了解发现的问题

GKE 会针对每个发现的问题向 Logging 中的 _Default 日志存储桶添加条目。这些日志仅保留特定时间。有关详情,请参阅日志保留期限

  1. 在 Google Cloud 控制台中,转到 Logs Explorer 页面。

    前往 Logs Explorer
  2. 查询字段中,指定以下查询:

    resource.type="k8s_cluster"
    jsonPayload.@type="type.googleapis.com/cloud.kubernetes.security.containersecurity_logging.Finding"
    jsonPayload.type="FINDING_TYPE_MISCONFIG"
  3. 点击运行查询

如需在 GKE 向 Logging 添加新发现时收到通知,请为此查询设置基于日志的提醒。如需了解详情,请参阅配置基于日志的提醒

清理

  1. 删除您部署的示例工作负载。

    kubectl delete deployment helloweb
    
  2. (可选)删除您使用的集群。

    gcloud container clusters delete CLUSTER_NAME \
        --region=COMPUTE_REGION
    

停用工作负载配置审核

您可以使用 gcloud CLI 或 Google Cloud 控制台停用工作负载配置审核。

运行以下命令:

gcloud container clusters update CLUSTER_NAME \
    --region=LOCATION \
    --security-posture=disabled

替换以下内容:

  1. 进入 Google Cloud 控制台中的安全状况页面。

    进入“安全状况”
  2. 点击设置标签。
  3. 已启用配置审核的集群部分中,点击选择集群
  4. 审核已启用标签页中,选中要移除的集群对应的复选框。
  5. 点击停用审核,然后点击确认以在这些集群上停用审核。

工作负载配置审核的局限性

  • 不支持 Windows Server 节点池。
  • 工作负载配置审核不会扫描 GKE 管理的工作负载,例如 kube-system 命名空间中的工作负载。
  • 工作负载配置审核仅适用于节点少于 1,000 个的集群。
  • 安全状况信息中心支持每个集群最多 150,000 个活跃工作负载配置审核发现结果。当集群的发现结果数量超过此上限时,安全状况信息中心会停止显示该集群的配置发现结果。

    如需解决此问题,请使用 Logging 中的日志来识别配置问题并部署更新后的清单。当配置发现结果的数量少于 150,000 时,安全状况信息中心会开始显示集群的发现结果。

后续步骤