配置分层安全政策

本页面介绍了如何配置分层安全政策来保护组织、文件夹或项目。在配置分层安全政策之前,请确保您已熟悉分层安全政策概览中的信息。

为分层安全政策设置 IAM 权限

以下操作要求您在目标资源层次结构节点或政策本身(如果政策已存在)上拥有 Identity and Access Management (IAM) 角色 Compute Organization Security Policy Admin role (roles/compute.orgSecurityPolicyAdmin):

  • 创建新的分层安全政策
  • 通过添加、更新或删除规则来修改分层安全政策
  • 删除分层安全政策

以下操作需要您在目标资源层次结构节点上拥有 IAM Compute Organization Resource Admin 角色 (roles/compute.orgSecurityResourceAdmin),并且在目标资源层次结构节点或政策本身上拥有 Compute Organization Security Policy Admin 角色 (roles/compute.orgSecurityPolicyAdmin) 或 Compute Organization Security Policy User 角色 (roles/compute.orgSecurityPolicyUser):

  • 将分层安全政策与资源层次结构节点相关联

最后,请参阅下表,了解如果您拥有所列出的任何角色,可以执行哪些其他操作:

运维 角色
查看后端资源的所有有效 Google Cloud Armor 规则
查看 organizationSecurityPolicy 涵盖的有效后端资源

配置分层安全政策

以下部分介绍了如何创建分层安全政策、将其与资源层次结构节点相关联、在节点之间移动分层安全政策、删除分层安全政策,以及如何查看适用于受保护资源的所有 Google Cloud Armor 安全政策规则。

创建分层安全政策

您可以使用 gcloud beta compute org-security-policies create 命令创建分层安全政策。您可以使用 --organization--folder 标志以及相应的 ORGANIZATION_IDFOLDER_ID 在组织或文件夹下创建分层安全政策。使用以下示例创建分层安全政策,并将 POLICY_NAME 替换为您要为新安全政策指定的名称:

  • 创建组织级分层安全政策:

    gcloud beta compute org-security-policies create \
        --organization=ORGANIZATION_ID \
        --type=CLOUD_ARMOR \
        --short-name=POLICY_NAME
    
  • 创建文件夹级分层安全政策:

    gcloud beta compute org-security-policies create \ 
        --folder=FOLDER_ID \
        --type=CLOUD_ARMOR \
        --short-name=POLICY_NAME
    

将现有安全政策与资源层次结构节点相关联

如果您有现有的安全政策,可以使用 gcloud beta compute org-security-policies associations create 命令将其与资源层次结构节点相关联。替换以下内容:

  • POLICY_ID:安全政策的 ID
  • POLICY_NAME:安全政策的名称
  • ORGANIZATION_ID:组织的 ID
  • FOLDER_ID:文件夹的 ID
  • PROJECT_ID:项目的 ID

  • 将分层安全政策与组织相关联:

    gcloud beta compute org-security-policies associations create \
        --security-policy=POLICY_ID \
        --organization=ORGANIZATION_ID \
        --name=ASSOCIATION_NAME
    
  • 将分层安全政策与文件夹相关联:

    gcloud beta compute org-security-policies associations create \
        --security-policy=POLICY_ID \
        --folder=FOLDER_ID \
        --name=ASSOCIATION_NAME
    
  • 将分层安全政策与项目相关联:

    gcloud beta compute org-security-policies associations create \
      --security-policy=POLICY_ID \
      --project-number=PROJECT_ID \
      --name=ASSOCIATION_NAME
    

从分层安全政策中排除项目

此外,您还可以从文件夹级分层安全政策中排除项目,并从组织级分层安全政策中排除项目和文件夹:

  • 您可以使用 beta compute org-security-policies associations create 命令和 --excluded-projects 标志从分层安全政策中排除项目。

    以下示例命令将安全政策 example-policy 与组织 10000001 相关联,同时排除 ID 为 2000000002 的项目:

    gcloud beta compute org-security-policies associations create \
        --security-policy=example-policy \
        --excluded-projects="projects/2000000002" \
        --organization=10000001
    
  • 您可以使用 beta compute org-security-policies associations create 命令和 --excluded-folders 标志从组织级层分层安全政策中排除文件夹。

    以下示例命令将安全政策 example-policy 与组织 10000001 相关联,同时排除 ID 为 3000000003 的文件夹:

    gcloud beta compute org-security-policies associations create \
        --security-policy=example-policy \
        --excluded-folders="folders/3000000003" \
        --organization=10000001
    

移动分层安全政策

您可以使用 gcloud beta compute org-security-policies move 将分层安全政策移至其他父资源层次结构节点下,从而更改分层安全政策的父级。您将来源作为第一个标志提供,将目的地作为第二个标志提供。 移动分层安全政策会更改其所有权,但不会更改与其关联的资源。只有组织和文件夹可以拥有分层安全政策,因此您无法将其移至项目下。

在以下示例中,您将分层安全政策从组织 ORGANIZATION_ID 移至文件夹 FOLDER_ID

gcloud beta compute org-security-policies move policy-1 \
    --organization ORGANIZATION_ID \
    --folder FOLDER_ID

删除分层安全政策

如需删除分层安全政策,您必须先删除该政策与资源层次结构节点的所有关联。在以下示例中,您可以使用 beta compute org-security-policies associations delete 命令移除名称为 POLICY_NAME 的分层安全政策与组织 ORGANIZATION_ID 之间名为 ASSOCIATION_NAME 的关联:

gcloud beta compute org-security-policies associations delete ASSOCIATION_NAME \
    --security-policy=POLICY_NAME \
    --organization=ORGANIZATION_ID

如果安全政策不仅有这一个关联,请针对每个关联重复上一步。当分层安全政策没有关联时,您可以使用 compute org-security-policies delete 命令将其删除,如以下示例所示:

gcloud beta compute org-security-policies delete POLICY_NAME \
    --organization=ORGANIZATION_ID

查看受保护资源的所有有效 Google Cloud Armor 规则

您可以使用 gcloud beta compute backend-services get-effective-security-policies 命令查看适用于受保护资源的所有 Google Cloud Armor 安全政策规则。在以下示例中,将 RESOURCE_NAME 替换为您要检查的受保护资源的名称:

gcloud beta compute backend-services get-effective-security-policies PROTECTED_RESOURCE

使用场景

以下部分介绍了分层安全政策的用例。

拒绝来自一组 IP 地址的流量访问您组织中的所有应用负载平衡器

您可以使用分层安全政策来管理不允许访问整个组织网络的 IP 地址列表,或拒绝来自特定区域或国家/地区的流量。这有助于您解决公司特有的安全问题或帮助您保持合规性。以下步骤展示了如何创建组织级层分层安全政策,以拒绝来自 IP 地址范围 192.0.2.0/24 的流量:

  1. 创建名为 org-level-deny-ip-policy 的分层安全政策,并将其附加到 ID 为 1000000001 的组织:

     gcloud beta compute org-security-policies create \
         --organization=1000000001 \
         --type=CLOUD_ARMOR \
         --description= "this is an org policy to deny a set of IP addresses for all resources" \
         --short-name=org-level-deny-ip-policy
    
  2. 添加一条优先级为 1000 的规则,该规则的匹配条件为 IP 地址范围 192.0.2.0/24,操作为 deny

     gcloud beta compute org-security-policies rules create 1000 \
         --action=deny \
         --security-policy=org-level-deny-ip-policy \
         --organization=1000000001 \
         --description "Deny traffic from 192.0.2.0/24" \
         --src-ip-ranges "192.0.2.0/24"
    
  3. 最后,将安全政策与组织相关联,拒绝来自 192.0.2.0/24 IP 地址的请求访问组织中的所有服务:

     gcloud beta compute org-security-policies associations create \
         --security-policy=org-level-deny-ip-policy \
         --organization=ORGANIZATION_ID
    

向一组源 IP 地址授予对组织内某些项目的访问权限

您可以向一个或多个 IP 地址授予对组织内某些项目的访问权限。如果您有可信的上游代理,但只想在部分项目中将其排除在规则评估之外,则可能需要执行此操作。在以下基于 Cloud CDN 的示例中,您使用文件夹级分层安全政策向 IP 地址范围 192.0.2.0/24 授予对组织 10000001 中名为 project-1project-2project-3 的项目的访问权限:

  1. 使用以下命令将 project-1project-2project-3 移至 ID 为 20000002 的文件夹:

    gcloud projects move project-1 --folder=20000002
    gcloud projects move project-2 --folder=20000002
    gcloud projects move project-3 --folder=20000002
    
  2. 使用以下命令创建名为 org-level-proxy-filtering 的安全政策:

     gcloud beta compute org-security-policies create \
         --folder=20000002 \
         --type=CLOUD_ARMOR \
         --short-name=org-level-proxy-filtering
    
  3. 添加一条优先级为 1000 的规则,该规则的匹配条件为 IP 地址范围 192.0.2.0/24,规则操作为 goto_next。如果请求与此条件匹配,Google Cloud Armor 会停止评估此安全政策中的规则:

     gcloud beta compute org-security-policies rules create 1000 \
         --action=goto_next \
         --security-policy=org-level-proxy-filtering \
         --organization=10000001 \
         --src-ip-ranges="192.0.2.0/24"
    
  4. 可选:如果您想对这些项目应用安全政策规则,以处理来自 192.0.2.0/24 以外的请求,请添加更多优先级低于 1000 的规则。您可以稍后执行此步骤。

  5. 使用以下命令将政策与您在第 1 步中将项目移至的 ID 为 20000002 的文件夹相关联:

     gcloud beta compute org-security-policies associations create \
         --security-policy=org-level-proxy-filtering \
         --folder=20000002
    

后续步骤