限制组织中的特权 GKE 工作负载

您可以使用政策来控制哪些特权工作负载可以在 整个组织的 Google Kubernetes Engine (GKE) 集群中运行 Cloud de Confiance by S3NS 。本文档介绍如何使用政策定义获批的工作负载来源,以及如何强制执行良好实践来改善安全状况。

本文档适用于想要仅允许获批的特权工作负载在组织内的任何位置运行的身份和账号管理员。您应该已熟悉以下页面中的概念:

组织如何控制特权工作负载准入

默认情况下,GKE Autopilot 会对 安全措施强制执行一组 工作负载。如需运行违反这些限制条件的工作负载,唯一的方法是为这些工作负载安装许可名单。 如需从特定来源安装许可名单,必须将集群配置为允许来自该来源的许可名单。

默认情况下, Cloud de Confiance 组织允许平台管理员将 集群配置为允许来自 GKE 合作伙伴 和 经过验证的开源项目的许可名单。 如果您的组织有安全要求,需要将特权工作负载限制为一组明确已知的来源,则可以使用组织政策修改默认行为。

当您为组织、文件夹或项目强制执行获批的许可名单来源列表时,平台管理员在创建或更新 Autopilot 或 Standard 集群时只能指定这些来源。如果创建或更新集群时指定了未经批准的来源,则操作会失败。

您应配置的组织政策取决于您的使用场景,如下所示:

准备工作

  1. Enable the Resource Manager API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  2. 如果您的团队拥有特权工作负载的许可名单,请让他们 向您提供这些许可名单在 Cloud Storage 中的路径。

所需的角色和权限

如需获得管理组织政策所需的权限,请让您的管理员为您授予组织、文件夹或项目的 Organization policy administrator (roles/orgpolicy.policyAdmin) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。

您也可以通过自定义 角色或其他预定义 角色来获取所需的权限。

为许可名单配置组织政策

您可以基于 constraints/container.managed.autopilotPrivilegedAdmission 受管限制条件创建或更新组织政策,以控制组织、文件夹或项目的获批许可名单来源。当您强制执行此组织政策时,集群管理员只能从您在政策中定义的来源安装许可名单。

除了这些步骤之外,我们还建议您强制执行组织政策,以仅允许 Autopilot 集群在您的环境中运行。当环境中没有 Standard 集群时,只有获批的特权工作负载才能运行。如需了解详情,请参阅 配置组织政策以仅允许 Autopilot 集群 部分。

如需为获批的特权工作负载许可名单配置组织政策,请选择以下选项之一:

控制台

  1. 在 Cloud de Confiance 控制台中,前往 组织政策 页面:

    转到“组织政策”

  2. 在限制条件表中,找到 container.managed.autopilotPrivilegedAdmission 受管限制条件。

  3. 依次点击 操作 > 修改政策。修改政策 页面随即打开。

  4. 在政策来源 部分中,选择覆盖父资源的政策。

  5. 在规则 部分中,点击添加规则 。

  6. 在强制执行 部分中,选择开启 。参数 部分随即显示。

  7. 如需控制是否可以安装 GKE 批准的许可名单,请按以下步骤操作:

    1. 在 allowAnyGKEPath 参数中,点击 修改。修改参数值 窗格随即打开。
    2. 在值类型 部分中,选择用户定义 。
    3. 在用户定义的值 部分中,选择以下选项之一:

      • True:管理员可以将集群配置为运行许可名单 ,这些许可名单来自以 gke:// 开头的任何路径。此设置为默认值。
      • False:管理员可以将集群配置为仅运行组织政策的 allowPaths 参数中指定的路径中的许可名单。如果您未在 allowPaths 参数中指定路径,则集群无法运行任何来源的任何许可名单。
    4. 点击保存 。修改参数值 窗格随即关闭。

  8. 如需定义可以安装的特定许可名单,请按以下步骤操作:

    1. 在 allowPaths 参数中,点击 修改。修改参数值 窗格随即打开。
    2. 在值类型 部分中,选择用户定义 。
    3. 在用户定义的值 部分中,指定一个或多个许可名单来源的路径。如需详细了解可以指定的内容, 请参阅 许可名单路径。
    4. 点击保存 。修改参数值 窗格随即关闭。
    5. 在修改规则 部分中,点击完成 。
  9. (可选)如需测试强制执行组织政策的影响,请点击测试更改 。如需了解详情,请参阅 使用 Policy Simulator 测试组织政策更改。

  10. 如需在 试运行模式下强制执行政策, 请点击设置试运行政策。

  11. 验证试运行模式下的组织政策按预期运行后,点击设置政策 来设置现行政策。

对组织政策的更改最长可能需要 15 分钟才能完全实施。

gcloud

  1. 创建一个 YAML 文件,用于定义组织政策:

    name: RESOURCE_TYPE/RESOURCE_ID/policies/container.managed.autopilotPrivilegedAdmission
    spec:
      rules:
      - enforce: true
        parameters:
          allowAnyGKEPath: ALLOW_GKE_PATHS
          allowPaths:
          - ALLOWLIST1_PATH
          - ALLOWLIST2_PATH
    

    替换以下内容:

    • RESOURCE_TYPE:资源的类型。Cloud de Confiance 此值必须是以下值之一:

      • organizations
      • folders
      • projects
    • RESOURCE_ID:组织 ID、文件夹 ID 或项目 ID。

    • ALLOW_GKE_PATHS:是否允许任何 GKE 批准的许可名单。请指定以下某个值:

      • True:允许使用任何 GKE 合作伙伴工作负载或经过验证的开源工作负载进行集群配置。此设置为默认值。
      • False:仅允许使用 allowPaths 字段中的路径进行集群配置。

    • ALLOWLIST1_PATH、ALLOWLIST2_PATH:许可名单的路径。如需详细了解可以 指定的内容,请参阅 许可名单路径。

    (可选)如需使组织政策成为基于某个标记的条件性政策,请向 rules 字段添加 condition 块。如果您向组织政策添加条件规则,则必须至少添加一个无条件规则,否则无法保存政策。如需了解详情,请参阅 设置带有标记的组织政策。

  2. 如需在 试运行模式下设置组织政策 ,请在 gcloud org-policies set-policy 命令中为 --update-mask 标志指定 dryRunSpec 值:

    gcloud org-policies set-policy POLICY_FILEPATH \
        --update-mask=dryRunSpec
    

    将 POLICY_FILEPATH 替换为您在上一步中创建的 YAML 文件的路径。

  3. (可选)如需测试强制执行此组织政策的影响,请使用 gcloud policy-intelligence simulate org-policy 命令:

    gcloud policy-intelligence simulate org-policy \
        --organization=ORGANIZATION_ID \
        --policy-path=POLICY_FILEPATH
    

    将 ORGANIZATION_ID 替换为您的组织 ID。

  4. 验证试运行模式下的组织政策按预期运行后,通过在 gcloud org-policies set-policy 命令中为 --update-mask 标志指定 spec 值来设置现行政策:

    gcloud org-policies set-policy POLICY_FILEPATH \
        --update-mask=spec
    

    对组织政策的更改最长可能需要 15 分钟才能完全实施。

配置组织政策以仅允许 Autopilot 集群

本部分介绍如何配置仅允许 Autopilot 集群的组织政策。我们建议您在 为许可名单创建组织政策之外,还配置此政策, 因为 Standard 集群可以运行大多数特权工作负载。仅允许 Autopilot 集群意味着您的环境仅运行您允许的特权工作负载。本部分中的步骤是可选的。

如需配置此政策,请选择以下选项之一:

控制台

  1. 创建仅允许创建 Autopilot 集群的自定义限制条件:

    1. 在 Cloud de Confiance 控制台中,前往 组织政策 页面:

      转到“组织政策”

    2. 点击 自定义限制条件。创建自定义限制条件 页面随即打开。

    3. 为限制条件指定显示名称和唯一 ID。

    4. 在强制执行 部分中,执行以下步骤:

      1. 在资源类型 列表中,选择 container.googleapis.com/Cluster 。
      2. 在强制执行方法 列表中,选择创建时强制执行 。
      3. 在条件 部分中,点击 修改条件。添加条件 窗格随即打开。
      4. 指定以下表达式:

        resource.autopilot.enabled == true
        
      5. 点击保存 。添加条件 窗格随即关闭。

      6. 在操作 部分中,选择允许 。

    5. 点击创建限制条件 。

  2. 创建强制执行限制条件的自定义组织政策:

    1. 在限制条件表中,找到您在上一步中创建的自定义限制条件。
    2. 依次点击 操作 > 修改政策。修改政策 页面随即打开。
    3. 在政策来源 部分中,选择覆盖父资源的政策。
    4. 点击添加规则 。
    5. 在强制执行 部分中,选择开启 。
    6. 如需测试强制执行组织政策的影响,请点击测试更改 。如需了解详情,请参阅 使用 Policy Simulator 测试组织政策更改。
    7. 如需在 试运行模式下强制执行政策, 请点击设置试运行政策。
    8. 验证试运行模式下的组织政策按预期运行后,点击设置政策 来设置现行政策。

    对组织政策的更改最长可能需要 15 分钟才能完全实施。

gcloud

  1. 创建仅允许创建 Autopilot 集群的自定义限制条件:

    1. 创建一个 YAML 文件,用于定义自定义限制条件:

      name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
      resourceTypes: container.googleapis.com/Cluster
      methodTypes:
      - CREATE
      condition: resource.autopilot.enabled == true
      actionType: ALLOW
      displayName: "Allow only Autopilot clusters"
      

      替换以下内容:

      • ORGANIZATION_ID:您的组织 ID。
      • CONSTRAINT_NAME:新限制条件的名称。
    2. 设置自定义限制条件:

      gcloud org-policies set-custom-constraint CONSTRAINT_FILEPATH
      

      将 CONSTRAINT_FILEPATH 替换为您在上一步中创建的 YAML 文件的路径。

    自定义限制条件可在组织政策中使用。

  2. 创建强制执行限制条件的自定义组织政策:

    1. 创建一个 YAML 文件,用于定义组织政策:

      name: RESOURCE_TYPE/RESOURCE_ID/policies/custom.CONSTRAINT_NAME
      spec:
        rules:
        - enforce: true
      

      替换以下内容:

      • RESOURCE_TYPE:资源的类型。Cloud de Confiance 此值必须是以下值之一:

        • organizations
        • folders
        • projects
      • RESOURCE_ID:组织、文件夹或项目的 ID。

      (可选)如需使组织政策成为基于某个标记的条件性政策,请向 rules 字段添加 condition 块。如果您向组织政策添加条件规则,则必须至少添加一个无条件规则,否则无法保存政策。如需了解详情,请参阅 设置带有标记的组织政策。

    2. 如需在 试运行模式下设置组织政策 ,请在 gcloud org-policies set-policy 命令中为 --update-mask 标志指定 dryRunSpec 值:

      gcloud org-policies set-policy POLICY_FILEPATH \
          --update-mask=dryRunSpec
      

      将 POLICY_FILEPATH 替换为您在上一步中创建的 YAML 文件的路径。

    3. 如需测试强制执行此组织政策的影响,请使用 gcloud policy-intelligence simulate org-policy 命令:

      gcloud policy-intelligence simulate org-policy \
          --organization=ORGANIZATION_ID \
          --policy-path=POLICY_FILEPATH
      

      将 ORGANIZATION_ID 替换为您的组织 ID。

    4. 验证试运行模式下的组织政策按预期运行后,通过在 gcloud org-policies set-policy 命令中为 --update-mask 标志指定 spec 值来设置现行政策:

      gcloud org-policies set-policy POLICY_FILEPATH \
          --update-mask=spec
      

      对组织政策的更改最长可能需要 15 分钟才能完全实施。

后续步骤