本页面介绍了如何配置分层安全政策来保护组织、文件夹或项目。在配置分层安全政策之前,请确保您已熟悉分层安全政策概览中的信息。
为分层安全政策设置 IAM 权限
以下操作要求您对目标资源层次结构节点或政策本身(如果政策已存在)拥有 Identity and Access Management (IAM) 角色 Compute Organization Security Policy Admin 角色 (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):
- 将分层安全政策与资源层次结构节点相关联
最后,请参阅下表,了解您在拥有所列出的任何角色时可以执行的其他操作的列表:
| 运维 | 角色 |
|---|---|
| 查看适用于后端资源的所有有效 Cloud Armor 规则 |
|
查看 organizationSecurityPolicy 涵盖的有效后端资源 |
配置分层安全政策
以下部分介绍了如何创建分层安全政策、将其与资源层次结构节点相关联、在节点之间移动分层安全政策、删除分层安全政策,以及如何查看适用于受保护资源的所有 Cloud Armor 安全政策规则。
创建分层安全政策
您可以使用 gcloud compute org-security-policies create 命令创建分层安全政策。您可以使用 --organization 或 --folder 标志以及相应的 ORGANIZATION_ID 或 FOLDER_ID 在组织或文件夹下创建分层安全政策。使用以下示例创建分层安全政策,并将 POLICY_NAME 替换为您要为新安全政策提供的名称:
创建组织级分层安全政策:
gcloud compute org-security-policies create \ --organization=ORGANIZATION_ID \ --type=CLOUD_ARMOR \ --short-name=POLICY_NAME创建文件夹级分层安全政策:
gcloud compute org-security-policies create \ --folder=FOLDER_ID \ --type=CLOUD_ARMOR \ --short-name=POLICY_NAME
将现有安全政策与资源层次结构节点相关联
如果您具有现有的安全政策,可以使用 gcloud compute org-security-policies associations create 命令将其与资源层次结构节点相关联。
将分层安全政策关联到组织:
gcloud compute org-security-policies associations create \ --security-policy=POLICY_ID \ --organization=ORGANIZATION_ID \ --name=ASSOCIATION_NAME将分层安全政策关联到文件夹:
gcloud compute org-security-policies associations create \ --security-policy=POLICY_ID \ --folder=FOLDER_ID \ --name=ASSOCIATION_NAME将分层安全政策关联到项目:
gcloud compute org-security-policies associations create \ --security-policy=POLICY_ID \ --project-number=PROJECT_ID \ --name=ASSOCIATION_NAME
替换以下内容:
POLICY_ID:安全政策的 IDORGANIZATION_ID:组织的 IDASSOCIATION_NAME:关联的名称FOLDER_ID:文件夹的 IDPROJECT_ID:项目的 ID
从分层安全政策中排除项目
此外,您还可以从文件夹级分层安全政策中排除项目,并且可以从组织级分层安全政策中排除项目和文件夹:
您可以使用带有
--excluded-projects标志的gcloud compute org-security-policies associations create命令从分层安全政策中排除项目。以下示例命令将安全政策
example-policy与组织10000001相关联,同时排除 ID 为2000000002的项目:gcloud compute org-security-policies associations create \ --security-policy=example-policy \ --excluded-projects="projects/2000000002" \ --organization=10000001您可以使用带有
--excluded-folders标志的gcloud compute org-security-policies associations create命令从组织级分层安全政策中排除文件夹。以下示例命令将安全政策
example-policy与组织10000001相关联,同时排除 ID 为3000000003的文件夹:gcloud compute org-security-policies associations create \ --security-policy=example-policy \ --excluded-folders="folders/3000000003" \ --organization=10000001
移动分层安全政策
您可以使用 gcloud compute org-security-policies move 命令将分层安全政策移至其他父资源层次结构节点下,从而更改分层安全政策的父级。您需要将来源作为第一个标志提供,将目标位置作为第二个标志提供。
移动分层安全政策会更改其所有权,但不会更改与其关联的资源。只有组织和文件夹可以拥有分层安全政策,因此您无法将这些政策移至项目下。
在以下示例中,您将分层安全政策从组织 ORGANIZATION_ID 移至文件夹 FOLDER_ID:
gcloud compute org-security-policies move policy-1 \
--organization ORGANIZATION_ID \
--folder FOLDER_ID
删除分层安全政策
您必须先删除分层安全政策与资源层次结构节点的所有关联,然后才能删除相应政策。在以下示例中,您使用 gcloud compute org-security-policies associations delete 命令移除名为 POLICY_NAME 的分层安全政策与组织 ORGANIZATION_ID 之间名为 ASSOCIATION_NAME 的关联:
gcloud compute org-security-policies associations delete ASSOCIATION_NAME \
--security-policy=POLICY_NAME \
--organization=ORGANIZATION_ID
如果这不是安全政策所具有的唯一关联,请针对每个关联重复上一步。当分层安全政策没有关联时,您可以使用 gcloud compute org-security-policies delete 命令将其删除,如以下示例所示:
gcloud compute org-security-policies delete POLICY_NAME \
--organization=ORGANIZATION_ID
查看适用于受保护资源的所有有效 Cloud Armor 规则
您可以使用 gcloud compute backend-services get-effective-security-policies 命令查看适用于受保护资源的所有 Cloud Armor 安全政策规则。
gcloud compute backend-services get-effective-security-policies PROTECTED_RESOURCE
将 PROTECTED_RESOURCE 替换为您要检查的受保护资源的名称。
如果您在继承了分层安全政策的项目中对后端服务运行 gcloud compute backend-services get-effective-security-policies 命令,即使该特定后端服务的类型不受分层安全政策支持,响应也可能包含分层安全政策。如需查看分层安全政策支持的后端配置列表,请参阅分层安全政策概览。
使用场景
以下部分介绍了适用于分层安全政策的应用场景。
拒绝从一组 IP 地址到您组织中的所有应用负载均衡器的流量
您可以使用分层安全政策来管理不允许访问整个组织网络的 IP 地址的列表,或拒绝来自特定区域或国家/地区的流量。这有助于您解决公司特有的安全问题或帮助您保持合规性。以下步骤展示了如何创建组织级分层安全政策,以拒绝来自 IP 地址范围 192.0.2.0/24 的流量:
创建名为
org-level-deny-ip-policy的分层安全政策,并将其附加到 ID 为 1000000001 的组织:gcloud compute org-security-policies create \ --organization=1000000001 \ --type=CLOUD_ARMOR \ --description= "this org policy denies a set of IP addresses for all resources" \ --short-name=org-level-deny-ip-policy添加优先级为
1000的规则,其中包含针对 IP 地址范围192.0.2.0/24的匹配条件以及deny操作:gcloud 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"最后,将安全政策与组织相关联,拒绝从
192.0.2.0/24IP 地址向组织中的所有服务发出的请求:gcloud 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-1、project-2 和 project-3 的项目的访问权限:
使用以下命令将
project-1、project-2和project-3移至 ID 为20000002的文件夹:gcloud projects move project-1 --folder=20000002 gcloud projects move project-2 --folder=20000002 gcloud projects move project-3 --folder=20000002
使用以下命令创建名为
org-level-proxy-filtering的安全政策:gcloud compute org-security-policies create \ --folder=20000002 \ --type=CLOUD_ARMOR \ --short-name=org-level-proxy-filtering添加优先级为
1000的规则,其中包含针对 IP 地址范围192.0.2.0/24的匹配条件以及goto_next规则操作。如果请求与此条件匹配,Cloud Armor 会停止评估此安全政策中的规则:gcloud 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"可选:如果您想对这些项目应用安全政策规则,以处理不是来自
192.0.2.0/24的请求,请添加更多优先级低于1000的规则。您可以稍后执行此步骤。使用以下命令将政策关联到您在第 1 步中将项目移至的文件夹(ID 为
20000002):gcloud compute org-security-policies associations create \ --security-policy=org-level-proxy-filtering \ --folder=20000002