Cloud Load Balancing 的组织政策限制条件

本页面提供适用于 Cloud Load Balancing 的组织政策限制条件的补充信息。您可以使用组织政策限制条件在整个项目、文件夹或组织中强制执行设置。

组织政策仅应用于新资源;限制条件不会追溯性向后强制执行。如果您的现有负载均衡资源违反了新的组织政策,您需要手动解决此类违规行为。

如需查看可用限制条件的完整列表,请参阅组织政策限制条件

限制负载均衡器类型

使用组织政策来限制可以在组织中创建的 Cloud Load Balancing 类型。请设置以下组织政策限制条件:

  • 名称:根据负载均衡器类型限制负载均衡器的创建
  • IDconstraints/compute.restrictLoadBalancerCreationForTypes

设置 compute.restrictLoadBalancerCreationForTypes 限制条件时,您可以指定允许或拒绝的 Cloud Load Balancing 类型。允许或拒绝值列表只能包含以下列表中的值:

  • 应用负载均衡器
    • GLOBAL_EXTERNAL_MANAGED_HTTP_HTTPS(代表全球外部应用负载均衡器)
    • EXTERNAL_HTTP_HTTPS(代表传统应用负载均衡器)
    • EXTERNAL_MANAGED_HTTP_HTTPS(代表区域级外部应用负载均衡器)
    • GLOBAL_INTERNAL_MANAGED_HTTP_HTTPS(代表跨区域内部应用负载均衡器)
    • INTERNAL_HTTP_HTTPS(代表区域级内部应用负载均衡器)
  • 代理网络负载均衡器
    • GLOBAL_EXTERNAL_MANAGED_TCP_PROXY(代表具有 TCP 代理的全球外部代理网络负载均衡器)
    • GLOBAL_EXTERNAL_MANAGED_SSL_PROXY(代表具有 SSL 代理的全球外部代理网络负载均衡器)
    • EXTERNAL_TCP_PROXY(代表具有 TCP 代理的传统代理网络负载均衡器)
    • EXTERNAL_SSL_PROXY(代表具有 SSL 代理的传统代理网络负载均衡器)
    • REGIONAL_EXTERNAL_MANAGED_TCP_PROXY(代表具有 TCP 代理的区域外部代理网络负载均衡器)
    • REGIONAL_INTERNAL_MANAGED_TCP_PROXY(代表具有 TCP 代理的区域内部代理网络负载均衡器)
    • GLOBAL_INTERNAL_MANAGED_TCP_PROXY(代表具有 TCP 代理的跨区域内部代理网络负载均衡器)
  • 直通式网络负载均衡器
    • EXTERNAL_NETWORK_TCP_UDP(代表外部直通网络负载均衡器)
    • INTERNAL_TCP_UDP(代表内部直通网络负载均衡器)

如需包含所有的内部或外部负载均衡器类型,请使用 in: 前缀,后跟 INTERNALEXTERNAL。例如,使用 in:INTERNAL 将允许上述列表中的所有内部负载均衡器。

如需查看有关如何使用此限制条件的示例说明,请参阅为组织政策设置列表限制条件

设置政策后,系统会在添加相应的 Google Cloud 转发规则时强制执行政策。系统不会对现有的 Cloud Load Balancing 配置强制执行限制条件。

如果您尝试创建违反限制条件的负载均衡器类型,该尝试将失败并生成错误消息。错误消息的格式如下:

Constraint constraints/compute.restrictLoadBalancerCreationForTypes
violated for projects/PROJECT_NAME. Forwarding Rule projects/PROJECT_NAME/region/REGION/forwardingRules/FORWARDING_RULE_NAME
of type SCHEME is not allowed.

如果您在不同资源级层设置多个 restrictLoadBalancerCreationForTypes 限制条件,则这些限制条件会被分层执行。因此,我们建议您将 inheritFromParent 字段设置为 true,以确保更高层级的政策也得到考虑。

GKE 错误消息

如果您使用的是 Google Kubernetes Engine (GKE) 服务Ingress 对象,则使用此组织政策限制负载均衡器的创建会导致与以下内容类似的错误消息:

Warning  Sync    28s   loadbalancer-controller  Error during sync: error running
load balancer syncing routine: loadbalancer FORWARDING_RULE_NAME
does not exist: googleapi: Error 412:
Constraint constraints/compute.restrictLoadBalancerCreationForTypes violated for
projects/PROJECT_ID. Forwarding Rule
projects/PROJECT_ID/global/forwardingRules/FORWARDING_RULE_NAME
of type LOAD_BALANCER_TYPE is not allowed, conditionNotMet

您可以通过运行以下命令来查看 GKE 错误消息:

kubectl get events -w
kubectl describe RESOURCE_KIND NAME

替换以下内容:

  • RESOURCE_KIND:负载均衡器的类型(ingressservice
  • NAME:负载均衡器的名称

停用全球负载均衡

此布尔值限制条件禁止创建全球负载均衡产品。强制执行时,您只能创建没有全球依赖项的区域级负载均衡产品。

  • *名称:停用全球负载均衡
  • *IDconstraints/compute.disableGlobalLoadBalancing

默认情况下,系统允许用户创建全球负载均衡产品。

如需查看有关如何使用此限制条件的示例说明,请参阅为组织政策设置布尔值限制条件

限制协议转发类型

使用组织政策限制可以在您的组织中创建的协议转发类型。请设置以下组织政策限制条件:

  • 名称:根据 IP 地址类型限制协议转发
  • IDconstraints/compute.restrictProtocolForwardingCreationForTypes

设置 compute.restrictProtocolForwardingCreationForTypes 限制条件时,您可以指定允许或拒绝的协议转发类型。允许或拒绝值列表只能包含以下列表中的值:

  • INTERNAL
  • EXTERNAL

如需查看有关如何使用此限制条件的示例说明,请参阅为组织政策设置列表限制条件

设置政策后,系统会在添加相应的 Google Cloud 转发规则时强制执行政策。系统不会对现有的协议转发配置强制执行限制条件。

如果您尝试创建违反限制条件的协议转发部署类型,该尝试将失败并生成错误消息。错误消息的格式如下:

Constraint constraints/compute.restrictProtocolForwardingCreationForTypes
violated for projects/PROJECT_NAME. Forwarding Rule
projects/PROJECT_NAME/region/REGION/forwardingRules/FORWARDING_RULE_NAME
of type SCHEME is not allowed.

如果您在不同的资源级层设置多个 restrictProtocolForwardingCreationForTypes 限制条件,并且将 inheritFromParent 字段设置为 true,则系统会分层实施这些限制条件。

强制执行共享 VPC 限制

您可以使用以下组织政策来限制允许用户设置共享 VPC 部署的方式。

限制共享 VPC 宿主项目

通过此列表限制条件,您可以限制资源可以关联到的共享 VPC 宿主项目。

  • 名称:限制共享 VPC 宿主项目
  • IDconstraints/compute.restrictSharedVpcHostProjects

默认情况下,一个项目可以关联到同一组织中的任何宿主项目,从而成为服务项目。设置 compute.restrictSharedVpcHostProjects 限制条件时,您可以通过以下方式指定允许或拒绝的宿主项目:

  • 请按以下格式指定项目:
    • projects/PROJECT_ID
  • 指定项目、文件夹或组织。该限制条件应用于资源层次结构中指定资源下的所有项目。请使用以下格式:
    • under:organizations/ORGANIZATION_ID
    • under:folders/FOLDER_ID

如需查看有关如何使用此限制条件的示例说明,请参阅为组织政策设置列表限制条件

限制共享 VPC 子网

此列表限制条件定义了符合条件的资源可以使用的一组共享 VPC 子网。此限制条件不适用于同一项目中的资源。

  • 名称:限制共享 VPC 子网
  • IDconstraints/compute.restrictSharedVpcSubnetworks

默认情况下,符合条件的资源可以使用任何共享 VPC 子网。设置 compute.restrictSharedVpcSubnetworks 限制条件时,您可以通过以下方式指定受限子网列表:

  • 请按以下格式指定子网:
    • projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
  • 指定项目、文件夹或组织。该限制条件应用于资源层次结构中指定资源下的所有子网。请使用以下格式:
    • under:organizations/ORGANIZATION_ID
    • under:folders/FOLDER_ID
    • under:projects/PROJECT_ID

如需查看有关如何使用此限制条件的示例说明,请参阅为组织政策设置列表限制条件

限制跨项目后端服务

您可以使用此限制条件来限制网址映射可以引用的后端服务。此限制条件不适用于网址映射所在项目中的后端服务。

  • 名称:限制跨项目后端服务
  • IDconstraints/compute.restrictCrossProjectServices

默认情况下,只要执行操作的用户具有 compute.backendServices.use 权限,所有宿主或服务项目中的网址映射都可以引用同一共享 VPC 部署中其他服务项目或宿主项目中的兼容后端服务。设置 restrictCrossProjectServices 限制条件时,您可以通过以下方式指定允许或拒绝的后端服务:

  • 请按以下格式指定后端服务:
    • projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME
  • 指定项目、文件夹或组织。该限制条件应用于资源层次结构中指定资源下的所有后端服务。请使用以下格式:
    • under:organizations/ORGANIZATION_ID
    • under:folders/FOLDER_ID
    • under:projects/PROJECT_ID

设置组织政策使用此限制条件后,在您下次使用 gcloud compute url-maps 命令将后端服务关联到网址映射时,该限制条件即会生效。该限制条件不会追溯性向后影响对任何跨项目后端服务的现有引用。

如需查看有关如何使用此限制条件的示例说明,请参阅为组织政策设置列表限制条件

限制共享 VPC 项目安全锁移除作业

设为 True 时,此布尔值限制条件会限制在没有组织级别权限的情况下可以移除共享 VPC 宿主项目安全锁的一组用户。

  • 名称:限制共享 VPC 项目安全锁移除作业
  • IDconstraints/compute.restrictXpnProjectLienRemoval

默认情况下,任何具有安全锁更新权限的用户都可以移除共享 VPC 宿主项目的安全锁。强制执行此限制条件需要在组织级别授予该权限。

如需查看有关如何使用此限制条件的示例说明,请参阅为组织政策设置布尔值限制条件

为组织政策设置布尔值限制条件

控制台

如需通过控制台设置组织政策,请完成以下步骤:

  1. 在 Google Cloud 控制台中,转到组织政策页面。

    转到组织政策

  2. 过滤条件字段中,按名称或按 ID 搜索限制条件。
  3. 点击限制条件的名称。
  4. 点击修改以修改该限制条件。
  5. 修改页面,选择自定义
  6. 强制执行下,选择强制执行选项:
    • 如需对相关限制条件启用强制执行,请选择启用
    • 若要停用该限制条件的强制执行,请选择关闭
  7. 完成更改后,点击保存以应用限制条件设置。

如需详细了解如何使用 Google Cloud 控制台自定义组织政策,请参阅为政策自定义布尔值限制条件

gcloud

如需为组织政策强制执行布尔值限制条件,请使用 gcloud resource-manager org-policies enable-enforce 命令,如下所示。

如需启用共享 VPC 项目安全锁移除作业限制,请执行以下命令:

gcloud resource-manager org-policies enable-enforce \
    --organization ORGANIZATION_ID \
    constraints/compute.restrictXpnProjectLienRemoval

如需停用全球负载均衡,请执行以下命令:

gcloud resource-manager org-policies enable-enforce \
    --organization ORGANIZATION_ID \
    constraints/compute.disableGlobalLoadBalancing

有关在 gcloud 中使用布尔值限制条件的详细说明,请参阅使用限制条件

为组织政策设置列表限制条件

控制台

如需通过控制台设置组织政策,请完成以下步骤:

  1. 在 Google Cloud 控制台中,转到组织政策页面。

    转到组织政策

  2. 过滤条件字段中,按名称或按 ID 搜索限制条件。例如,如需限制共享 VPC 宿主项目,请搜索如下 ID:constraints/compute.restrictSharedVpcHostProjects
  3. 点击限制条件的名称。
  4. 点击修改以修改该限制条件。
  5. 如需创建自定义政策,请选择自定义并指定资源的许可名单或拒绝名单。如需详细了解如何使用 Google Cloud 控制台自定义组织政策,请参阅为政策自定义列表限制条件
  6. 完成更改后,点击保存以应用限制条件设置。

gcloud

本部分提供了几个配置示例,向您展示如何创建组织政策文件并为其设置列表限制条件。如需详细了解如何在 gcloud 中使用列表限制条件和组织政策,请参阅使用限制条件

  1. 创建政策文件。使用以下 JSON 配置示例,根据您的要求创建自己的政策文件。

    • 限制负载均衡器类型

      • 仅允许部分负载均衡器

        {
        "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes",
        "listPolicy": {
          "allowedValues": [
            "INTERNAL_TCP_UDP",
            "INTERNAL_HTTP_HTTPS",
            "EXTERNAL_NETWORK_TCP_UDP",
            "EXTERNAL_TCP_PROXY",
            "EXTERNAL_SSL_PROXY",
            "EXTERNAL_HTTP_HTTPS"
          ]
        }
        }
        
      • 拒绝所有外部负载均衡器

        {
        "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes",
        "listPolicy": {
          "deniedValues": [
            "in:EXTERNAL"
          ]
        }
        }
        
      • 拒绝所有负载均衡器

        {
        "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes",
        "listPolicy": {
          "allValues": "DENY"
        }
        }
        
    • 限制协议转发类型

      • 拒绝所有协议转发

        {
        "constraint": "constraints/compute.restrictProtocolForwardingCreationForTypes",
        "listPolicy": {
          "allValues": "DENY"
        }
        }
        
      • 仅允许内部协议转发

        {
        "constraint": "constraints/compute.restrictProtocolForwardingCreationForTypes",
        "listPolicy": {
          "deniedValues": [
            "EXTERNAL"
          ]
        }
        }
        
    • 限制共享 VPC 配置

      • 限制共享 VPC 宿主项目

        {
        "constraint": "constraints/compute.restrictSharedVpcHostProjects",
        "listPolicy": {
          "allowedValues": [
            "under:folders/FOLDER_ID",
            "under:projects/PROJECT_ID"
          ]
        }
        }
        
      • 限制共享 VPC 子网

        {
        "constraint": "constraints/compute.restrictSharedVpcSubnetworks",
        "listPolicy": {
          "deniedValues": [
            "under:organizations/ORGANIZATION_ID",
            "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
          ]
        }
        }
        
      • 限制共享 VPC 后端服务

        {
        "constraint": "constraints/compute.restrictCrossProjectServices",
        "listPolicy": {
          "allowedValues": [
            "under:folders/FOLDER_ID",
            "under:projects/PROJECT_ID",
            "projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME"
          ]
        }
        }
        
  2. 将限制条件应用于资源:组织、文件夹或项目。

    对于组织,请运行以下命令:

    gcloud resource-manager org-policies set-policy POLICY_FILE \
        --organization=ORGANIZATION_ID
    

    对于文件夹,请运行以下命令:

    gcloud resource-manager org-policies set-policy POLICY_FILE \
        --folder=FOLDER_ID
    

    对于项目,请运行以下命令:

    gcloud resource-manager org-policies set-policy POLICY_FILE \
        --project=PROJECT_ID
    

    请替换以下内容:

后续步骤