本页面介绍如何使用组织政策服务来要求 GKE 集群使用一个或多个持续验证 (CV) 基于检查的平台政策。您可以在自定义约束条件中指定所需的基于检查的平台政策。然后,在组织政策中强制执行自定义限制条件。
费用
本指南使用以下 Google Cloud 服务:
- Binary Authorization,但 CV 在预览阶段可免费使用
- 组织政策和限制条件可免费使用。
准备工作
- 启用 Binary Authorization。
- 设置基于检查的平台政策的 CV 和至少一项基于检查的平台政策的 CV。
所需的角色
如需获得创建限制条件和强制执行组织政策所需的权限,请让您的管理员向您授予 Google Cloud 组织的 Organization Policy Administrator (roles/orgpolicy.policyAdmin
) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
创建 CV 自定义约束条件
控制台
在 Google Cloud 控制台中,转到组织政策页面。
在组织政策页面上,点击
自定义限制条件。如果系统提示您切换到上级组织,请点击切换到上级组织。如需详细了解组织,请参阅组织政策服务简介
在约束条件详情部分,在相应字段中输入以下信息:
显示名称:约束条件的显示名称,例如
Require a Binary Authorization continuous validation policy for all GKE clusters
。您可以使用显示名称在保存限制条件后查找该限制条件。 显示名字段的长度上限为 200 个字符限制条件 ID:限制条件的 ID,例如
RequireBinAuthzCVPolicy
。说明(可选):直观易懂的限制条件说明,在违反政策时显示为错误消息。说明字段的长度上限为 2000 个字符。
在强制执行部分中,执行以下操作:
在资源类型中,输入
container.googleaips.com/Cluster
。在强制执行方法中,选择在创建和更新时强制执行。
在条件字段中输入表达式。 此字段的最大长度为 1000 个字符。当条件计算结果为
true
时,系统会强制执行自定义限制条件。条件采用通用表达式语言 (CEL) 语法中的表达式。您可以将表达式与 AND (&&
) 和 OR (||
) 组合使用,以创建复杂条件。CEL 是一种类似于 C 的表达式语言。如需详细了解 CEL 的语法和语义,请参阅 https://github.com/google/cel-spec。要输入条件,请执行以下操作:点击
修改条件。输入表达式以检查是否存在 CV 平台政策。 以下条件要求存在 CV 平台政策绑定,并且平台政策具有特定名称:
resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")
请替换以下内容:
PROJECT_ID
:平台政策的项目 ID。项目必须位于同一组织中。POLICY_ID
:您的平台政策的 ID。
以下条件要求存在两个 CV 平台政策绑定,并且每个绑定都具有特定的平台政策名称。
resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")
PROJECT_ID1
:第一个平台政策的项目 ID。项目必须位于同一组织中。POLICY_ID1
:第一个平台政策的 ID。PROJECT_ID2
:您的第二个平台政策的项目 ID。POLICY_ID2
:第二个平台政策的 ID。点击保存。
在操作中,选择允许。
如需创建自定义约束条件,请点击创建约束条件。
gcloud
为自定义限制条件创建 YAML 文件:
name: organizations/ORGANIZATION_ID/customConstraints/custom.CONSTRAINT_ID resource_types: container.googleapis.com/Cluster method_types: - CREATE - UPDATE condition: >- CONDITION action_type: ACTION display_name: DISPLAY_NAME description: DESCRIPTION
请替换以下内容:
ORGANIZATION_ID
:您的组织 ID,例如123456789
。CONSTRAINT_ID
:约束条件 ID,例如RequireBinAuthzCVPolicy
。CONDITION
:输入表达式,以检查是否存在 CV 平台政策。此字段的最大长度为 1000 个字符。当条件计算结果为true
时,系统会强制执行自定义限制条件。条件采用通用表达式语言 (CEL) 语法中的表达式。您可以将表达式与 AND (&&
) 和 OR (||
) 组合使用,以创建复杂条件。CEL 是一种类似于 C 的表达式语言。如需详细了解 CEL 的语法和语义,请参阅 https://github.com/google/cel-spec。 以下条件要求存在 CV 平台政策绑定,并且该平台政策具有特定名称:resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")
请替换以下内容:
PROJECT_ID
:平台政策的项目 ID。项目必须位于同一组织中。POLICY_ID
:您的平台政策的 ID。
以下条件要求存在两个 CV 平台政策绑定,并且每个绑定都具有特定的平台政策名称。
resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")
PROJECT_ID1
:第一个平台政策的项目 ID。项目必须位于同一组织中。POLICY_ID1
:第一个平台政策的 ID。PROJECT_ID2
:您的第二个平台政策的项目 ID。POLICY_ID2
:第二个平台政策的 ID。ACTION
:满足condition
时要执行的操作。可以是ALLOW
或DENY
。DISPLAY_NAME
:限制条件的直观易记名称,例如Require a Binary Authorization continuous validation policy for all GKE clusters
。 显示名字段的长度上限为 200 个字符DESCRIPTION
:直观易懂的限制条件说明,在违反政策时显示为错误消息。 说明字段的最大长度为 2000 个字符。
应用自定义限制条件:
gcloud org-policies set-custom-constraint CUSTOM_CONSTRAINT_PATH
将
CUSTOM_CONSTRAINT_PATH
替换为自定义约束条件定义的路径。验证自定义限制条件存在:
gcloud org-policies list-custom-constraints \ --organization=ORGANIZATION_ID
输出类似于以下内容:
CUSTOM_CONSTRAINT: custom.RequireBinAuthzCVPolicy ACTION_TYPE: ALLOW METHOD_TYPES: CREATE,UPDATE RESOURCE_TYPES: container.googleapis.com/Cluster DISPLAY_NAME: This cluster requires the continuous validation policy: projects/my-project/platforms/gke/policies/my-policy
如需启用您创建的自定义限制条件的强制执行,请创建组织政策。
使用组织政策来强制执行自定义限制条件
如需强制执行新的自定义限制条件,请创建一个引用该限制条件的组织政策,然后应用该组织政策。
控制台
如需强制执行限制条件,请执行以下操作:
在 Google Cloud 控制台中,转到组织政策页面。
选择项目选择器,然后选择相应组织。
从列表中搜索并选择所需的约束条件。
在该限制条件的政策详情页面中,点击管理政策。
在修改政策页面,选择覆盖父资源的政策。
点击添加规则。
在强制执行中,选择开启。
可选:点击测试更改以模拟此组织政策的效果。如需了解详情,请参阅使用 Policy Simulator 测试组织政策更改。
若要完成并应用组织政策,请点击设置政策。
gcloud
创建 YAML 政策定义文件:
name: organizations/ORGANIZATION_ID/policies/custom.CONSTRAINT_ID spec: rules: - enforce: true
请替换以下内容:
ORGANIZATION_ID
:组织 IDCONSTRAINT_ID
:约束条件 ID
强制执行政策:
gcloud org-policies set-policy ORG_POLICY_PATH
将
ORG_POLICY_PATH
替换为政策定义文件的路径。验证政策存在:
gcloud org-policies list \ --organization=ORGANIZATION_ID
将
ORGANIZATION_ID
替换为组织 ID。如需查看参数列表,请参阅
gcloud org-policies list
。输出类似于以下内容:
CONSTRAINT: custom.RequireBinAuthzCVPolicy LIST_POLICY: - BOOLEAN_POLICY: SET ETAG: CN622LIGEIDXnpMB-
该政策最多可能需要 15 分钟才能生效。
如需对基于 CV 检查的平台政策强制执行多个限制条件,请执行以下操作:
- 针对每项基于 CV 核对的政策创建一项自定义约束条件。
- 使用本部分中所述的每个自定义限制条件更新组织政策。
删除自定义限制条件
您可以使用 Google Cloud 控制台或 Google Cloud CLI 删除自定义限制条件。
控制台
在 Google Cloud 控制台中,转到组织政策页面。
选择页面顶部的项目选择器。
从项目选择器中选择您的组织。
从列表中搜索并选择所需的约束条件。
在限制条件详细信息中,点击
删除。点击删除,确认您要删除该约束条件。
gcloud
如需删除自定义限制条件,请使用 org-policies delete-custom-constraint
gcloud CLI 命令:
gcloud org-policies delete-custom-constraint custom.CONSTRAINT_ID \
--organization=ORGANIZATION_ID
请替换以下内容:
ORGANIZATION_ID
:您的组织 ID,例如123456789
CONSTRAINT_NAME
:自定义限制条件的名称
输出类似于以下内容:
Deleted custom constraint [organizations/123456789/customConstraints/CONSTRAINT_NAME]
删除自定义限制条件后,使用该限制条件创建的所有政策仍会继续存在,但会被忽略。您不能创建与已删除的自定义限制条件同名的其他自定义限制条件。