标记提供了一种根据资源是否有特定标记,有条件地允许或拒绝政策的方法。您可以使用标记并有条件地执行组织政策,以便集中控制层次结构中的资源。
准备工作
如需详细了解标记及其工作原理,请参阅标记概览。
如需详细了解如何使用标记,请参阅创建和管理标记。
设置带有标记的组织政策
如需使用标记来决定组织政策应在何处生效,您必须在组织政策 YAML 文件中指定条件。您可以将条件设置为与特定标记键值对相匹配,这会要求实施设置给组织政策的特定标记值。
大多数组织政策在资源被分配到时, 创建或更新不能先将标记附加到资源 因此条件组织政策无法评估 仅在从父级继承的标记上创建此资源 资源。
系统会评估组织、文件夹和项目资源的标记。大多数人 资源层次结构中位于项目下的资源 组织政策,但有一些例外情况,例如 Cloud Run 服务。如需了解特定组织政策限制条件,请参阅 组织政策限制条件。
列表政策示例
以下示例展示了如何设置执行 gcp.resourceLocations
限制条件的组织政策文件。此组织政策同时使用在同一政策文件中设置的条件值和无条件值。
控制台
要设置组织政策,请执行以下操作:
在 Google Cloud 控制台中,转到组织政策页面。
从项目选择器中,选择您要设置 组织政策
在组织政策页面上,从列表中选择限制条件。 系统会显示该限制条件的政策详情页面。
如需更新此资源的组织政策,请点击 管理政策。
在修改政策页面,选择覆盖父资源的政策。
在强制执行下,选择强制执行选项:
要合并和评估组织政策,请选择与父资源规则合并。如需详细了解继承机制与资源层次结构,请参阅了解层次结构评估。
如需覆盖从父资源继承的政策,请选择替换。
点击添加规则。
在政策值下,选择该组织政策是允许所有值、拒绝所有值还是指定一组自定义值。
- 政策接受的特定值取决于应用此政策的服务。如需查看限制条件列表及其接受的值,请参阅组织政策限制条件。
(可选)如需使组织政策成为基于某个标记的条件政策,请点击添加条件。
在名称字段中,输入条件的名称。
在说明字段中,输入条件的说明。该说明介绍了所需标记的背景信息以及它们如何影响资源。
您可以使用条件构建器创建条件,要求具有特定标记限制条件才会生效。
在条件类型框中,选择代码。
为条件选择运算符。要匹配整个标记,请使用匹配运算符。要匹配标记键和标记值,请使用匹配 ID 运算符。
如果您选择了匹配运算符,请输入标记的值命名空间名称。如果您选择了匹配 ID 运算符,请输入键和值 ID。
您可以通过点击添加创建多个条件。如果添加了其他条件,则可以通过切换和将条件逻辑设置为要求满足所有条件。您可以通过切换或将条件逻辑设置为仅要求其中一个条件为真。
您可以通过点击条件字段右侧的 X 来删除表达式。
完成条件修改后,点击保存。
下图展示了包含条件的组织政策配置示例。
条件编辑器可用于以编程方式创建条件表达式。它还会以编程方式呈现您当前的条件集。
- 您可以使用条件编辑器来应用
!
逻辑运算符。例如,查询!resource.matchTag('ORGANIZATION_ID/location', 'us-west1')
会将组织政策限制条件应用于没有us-west1
标记的所有资源。
- 您可以使用条件编辑器来应用
如需强制执行政策,请点击设置政策。
gcloud
如需设置组织政策,请创建一个 YAML 文件来存储组织 政策:
name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.resourceLocations
spec:
rules:
# As there is no condition specified, this allowedValue is enforced unconditionally.
- values:
allowedValues:
- us-east1-locations
# This condition applies to the values block.
- condition:
expression: "resource.matchTag('ORGANIZATION_ID/location', 'us-west1')"
values:
allowedValues:
- us-west1-locations
运行 set-policy
命令:
gcloud org-policies set-policy POLICY_PATH
替换以下内容:
POLICY_PATH
:组织的完整路径 YAML 格式的政策文件RESOURCE_TYPE
:organizations
、folders
或projects
RESOURCE_ID
:您的组织 ID、文件夹 ID 项目 ID 或项目编号,具体取决于指定的资源类型RESOURCE_TYPE
后ORGANIZATION_ID
:您的 标记键
对于此组织政策,该资源及其所有子资源
将对其强制执行 gcp.resourceLocations
限制条件,即
只有 allowedValues
项,共 us-east1-locations
项。系统对任何具有标记 location: us-west1
的资源都将执行 gcp.resourceLocations
限制条件,其中 allowedValues
为 us-east1-locations
和 us-west1-locations
。
通过这种方式,可以针对单个组织政策中的限制条件采用有条件和无条件值组。
布尔值政策示例
以下示例展示了如何设置执行 compute.disableSerialPortAccess
限制条件的组织政策文件。此组织政策指定所有串行端口均可访问资源,但使用条件来仅限制串行端口访问具有匹配标记的资源。
控制台
要设置组织政策,请执行以下操作:
在 Google Cloud 控制台中,转到组织政策页面。
从项目选择器中,选择您要创建的项目 设置组织政策
从组织政策页面的列表中选择限制条件。此时应显示该限制条件的政策详情页面。
如需更新此资源的组织政策,请点击 管理政策。
在修改政策页面,选择覆盖父资源的政策。
点击添加规则。
在强制执行下,选择开启还是关闭此组织政策的强制执行。
(可选)如需使组织政策成为基于某个标记的条件政策,请点击添加条件。请注意,如果您向 组织政策,则只能添加一条无条件规则或 无法保存政策。
在名称字段中,输入条件的名称。
在说明字段中,输入条件的说明。该说明介绍了所需标记的背景信息以及它们如何影响资源。
您可以使用条件构建器创建条件,要求具有特定标记限制条件才会生效。
在条件类型框中,选择代码。
为条件选择运算符。要匹配整个标记,请使用匹配运算符。要匹配标记键和标记值,请使用匹配 ID 运算符。
如果您选择了匹配运算符,请输入标记的值命名空间名称。如果您选择了匹配 ID 运算符,请输入键和值 ID。
您可以通过点击添加创建多个条件。如果添加了其他条件,则可以通过切换和将条件逻辑设置为要求满足所有条件。您可以通过切换或将条件逻辑设置为仅要求其中一个条件为真。
您可以通过点击条件字段右侧的 X 来删除表达式。
完成条件修改后,点击保存。
已强制执行条件的组织政策必须有: 一条无条件规则。点击添加规则,并设置该组织政策的强制执行应默认设置为开启还是关闭。
下图展示了包含条件的组织政策配置示例。
条件编辑器可用于以编程方式创建条件表达式。它还会以编程方式呈现您当前的条件集。
- 您可以使用条件编辑器来应用
!
逻辑运算符。例如,查询!resource.matchTag('ORGANIZATION_ID/location', 'us-west1')
会将组织政策限制条件应用于没有us-west1
标记的所有资源。
- 您可以使用条件编辑器来应用
要完成并应用组织政策,请点击保存。
gcloud
如需设置组织政策,请创建一个 YAML 文件来存储组织 政策:
name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.disableSerialPortAccess
spec:
rules:
- condition:
expression: "resource.matchTag(\"ORGANIZATION_ID/disableSerialAccess\", \"yes\")"
enforce: true
- enforce: false
运行 set-policy
命令:
gcloud org-policies set-policy POLICY_PATH
替换以下内容:
POLICY_PATH
:组织的完整路径 YAML 格式的政策文件RESOURCE_TYPE
:organizations
、folders
或projects
RESOURCE_ID
:您的组织 ID、文件夹 ID 项目 ID 或项目编号ORGANIZATION_ID
:您的 标记键
对于此组织政策,该资源及其所有子资源
将对其强制执行 gcp.disableSerialPortAccess
限制条件。
任何具有标记 disableSerialAccess: yes
的资源都将被组织政策拒绝。任何没有标记 disableSerialAccess: yes
的资源都不会执行限制条件。
有条件地向组织政策添加限制条件
您可以根据资源附加的标记,使用标记有条件地将组织政策限制条件添加到资源。您可以在同一组织政策中添加多个条件,从而精确控制组织政策应用到的资源。
通用表达式语言 (CEL) 是用来指定
条件表达式。条件表达式由一个或多个语句组成,这些语句使用逻辑运算符(&&
、||
或 !
)连接。如需了解详情,请参阅 CEL 规范及其语言定义。
考虑使用一个组织政策,以根据应用于资源的标记来限制这些资源的创建位置。为此,请创建一个执行 gcp.resourceLocations
限制条件的组织政策,并使用条件将执行范围限定为仅允许特定的资源。
首先,创建一个临时文件 /tmp/policy.yaml
以包含您的组织政策:
name: organizations/ORGANIZATION_ID/policies/gcp.resourceLocations
spec:
rules:
- condition:
expression: "resource.matchTag('ORGANIZATION_ID/location', 'us-east')"
values:
allowedValues:
- in:us-east1-locations
- condition:
expression: "resource.matchTag('ORGANIZATION_ID/location', 'us-west')"
values:
allowedValues:
- in:us-west1-locations
- values:
deniedValues:
- in:asia-south1-locations
将 ORGANIZATION_ID
替换为以下组织的上级组织:
您的标记键。
在此示例中,附加了 location: us-east
标记的任何资源
将仅限在 us-east1-locations
值组中的位置。附加了 location: us-west
标记的所有资源都将被限制位于 us-west1-locations
值组中的位置。组织中的所有资源都将屏蔽在 asia-south1-locations
值组中的位置之外。
然后,使用 set-policy
命令设置政策:
gcloud org-policies set-policy /tmp/policy.yaml
限制未标记的资源
您可以使用标记和条件组织政策来限制任何资源 没有使用特定代码的广告如果您针对 资源,该资源限制服务,并以 标记中,则只能使用源自该资源的子资源,除非它们 已标记。这样,必须按照您的 然后才能使用它们。
如需限制未添加标记的组织、文件夹或项目资源,您可以使用
创建组织时在条件查询中使用 !
逻辑运算符
政策。
例如,仅允许在项目中使用 sqladmin.googleapis.com
具有 sqladmin=enabled
标记,则可以创建一项组织政策,
对没有此标记的项目拒绝 sqladmin.googleapis.com
sqladmin=enabled
。
创建代码 确定是否对资源进行了适当的治理 。例如,您可以创建一个标记,其中键为
sqlAdmin
,键为 值enabled
,用于指定该资源应允许 Cloud SQL Admin API。例如:点击新创建的代码的名称。您需要命名空间名称 标记键的值(列在标记键路径下), 条件。
在级别创建 Restrict Resource Service Usage 组织政策 组织资源,以拒绝对 Cloud SQL Admin API 的访问。例如:
向上述组织政策添加条件,指定该政策 。逻辑 NOT 运算符 条件构建器不支持,因此必须构建此条件 。例如:
!resource.matchTag("012345678901/sqlAdmin", "enabled")
现在,sqlAdmin=enabled
标记必须附加到项目或者由项目继承。
然后您的开发者才能对该项目使用 Cloud SQL Admin API。
组织政策继承
根据继承的常规规则,使用标记启用的组织政策列表限制条件将与现有的组织政策合并。这些条件规则仅在条件为 true 时适用。
使用标记启用的组织政策布尔值限制条件将会覆盖现有的组织政策。另外,由于布尔值政策只能有两个状态(即 true 或 false),因此所有条件语句都必须与非条件语句相反,以防止多个标记相互冲突。
例如,请考虑实施 disableSerialPortAccess
限制条件的组织政策。无条件值(如果没有条件覆盖它则使用该值)为 true。因此,必须将此政策的任何其他条件语句设置为 false 才能避免冲突。
后续步骤
如需了解如何使用标记,请参阅创建和管理标记页面。
如需详细了解如何创建和管理组织政策限制条件,请参阅使用限制条件。