审核集群是否符合合规性标准

本页面介绍了如何自动审核集群以发现合规性问题,并获取切实可行的建议,以提高 Google Kubernetes Engine (GKE) Enterprise 版本集群的合规性。合规性审核是 GKE Compliance 信息中心的一项功能。如需了解详情,请参阅 GKE“合规性”信息中心简介

支持的合规性标准

合规性审核会根据以下标准扫描集群以检查是否合规,并提供建议来改善合规状况:

名称

说明

CIS Google Kubernetes Engine 基准 v1.5.0

一组用于配置 Google Kubernetes Engine (GKE) 的建议安全控制措施,基于 CIS Google Kubernetes Engine (GKE) 基准 v1.5.0

Pod 安全标准基准

一组适用于 Kubernetes 集群的建议保护措施,基于 Kubernetes Pod 安全标准 (PSS) 基准政策

Pod 安全标准受限

一组适用于 Kubernetes 集群的建议保护措施,基于 Kubernetes Pod 安全标准 (PSS) 受限政策

默认的标准集包含所有三种支持的标准:

  • CIS Google Kubernetes Engine 基准 v1.5.0
  • Pod 安全标准基准
  • Pod 安全标准受限

价格

启用了 GKE Enterprise 的用户可使用 GKE Compliance 信息中心。

准备工作

在开始之前,请确保您已执行以下任务:

要求

如需获得使用合规性审核所需的权限,请让您的管理员为您授予 Google Cloud 项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

这些预定义角色可提供使用合规性审核所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

使用合规性审核需要以下权限:

  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • containersecurity.locations.list
  • containersecurity.locations.get
  • containersecurity.clusterSummaries.list
  • containersecurity.findings.list
  • container.clusters.list
  • gkehub.features.get
  • gkehub.memberships.list

您也可以使用自定义角色或其他预定义角色来获取这些权限。

审核集群合规性

您可以使用 Google Cloud 控制台在集群上启用合规性审核。

在现有集群上启用合规性审核

  1. 进入 Google Cloud 控制台中的合规性页面。

    转至“合规性”

  2. 设置卡片中,点击选择集群

  3. 审核已停用标签页中,选中要添加的集群对应的复选框。

  4. 点击启用以在这些集群上启用审核。

测试合规性审核

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

  1. 将以下清单保存为 noncompliant-sample.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      namespace: default
      name: wp-non-compliant
      labels:
        app: wordpress
    spec:
      containers:
      - image: nginx
        name: wordpress
        securityContext:
          capabilities:
            add:
            - NET_RAW
    
  2. 将资源应用于您的集群:

    kubectl apply -f noncompliant-sample.yaml
    

如果您要尝试其他违规行为,请使用其他不合规的配置修改 noncompliant-sample.yaml

查看和解决合规性问题

初始审核最多需要 30 分钟才能返回结果。您可以在合规性页面上查看结果,也可以采用集群日志中的条目形式来查看。

查看结果

如需大致了解项目集群中的合规性问题,请执行以下操作:

  1. 进入 Google Cloud 控制台中的合规性页面。

    转至“合规性”

  2. 点击问题标签页。

  3. 过滤问题窗格的标准部分中,选择要查看其详细信息的标准。

查看标准详细信息和建议

如需查看特定标准的详细信息,请展开标准部分,直到看到说明链接,然后点击标准说明以打开合规限制条件窗格。

详细信息标签页会显示以下信息:

  • 说明:标准的说明。
  • 推荐执行的操作:为修复合规性问题可执行的操作概览。

受影响的资源标签页会列出受标准影响的资源。

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

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"
    jsonPayload.configuration.violation:*
  3. 点击运行查询

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

清理

删除您部署的示例 Pod:

kubectl delete pod wp-non-compliant

停用合规性审核

您可以使用 Google Cloud 控制台停用合规性审核。

  1. 进入 Google Cloud 控制台中的合规性页面。

    转至“合规性”

  2. 在“设置”卡片中,点击选择集群

  3. 审核已启用标签页中,选中要移除的集群对应的复选框。

  4. 点击停用以在这些集群上停用审核。

限制

  • 不支持 Windows Server 节点池。
  • 合规性审核不会扫描 GKE 管理的工作负载,例如 kube-system 命名空间中的工作负载。
  • 合规性审核仅适用于节点少于 1,000 个的集群。

后续步骤