本页面介绍了如何配置分层安全政策来保护组织、文件夹或项目。在配置分层安全政策之前,请确保您已熟悉分层安全政策概览中的信息。
为分层安全政策设置 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_ID
或 FOLDER_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
:安全政策的 IDPOLICY_NAME
:安全政策的名称ORGANIZATION_ID
:组织的 IDFOLDER_ID
:文件夹的 IDPROJECT_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
的流量:
创建名为
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
添加一条优先级为
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"
最后,将安全政策与组织相关联,拒绝来自
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-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 beta 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
。如果请求与此条件匹配,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"
可选:如果您想对这些项目应用安全政策规则,以处理来自
192.0.2.0/24
以外的请求,请添加更多优先级低于1000
的规则。您可以稍后执行此步骤。使用以下命令将政策与您在第 1 步中将项目移至的 ID 为
20000002
的文件夹相关联:gcloud beta compute org-security-policies associations create \ --security-policy=org-level-proxy-filtering \ --folder=20000002