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


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

使用 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

更新集群:

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

运行以下命令:

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 时,安全状况信息中心会开始显示集群的发现结果。

后续步骤