本页面介绍了如何使用组织政策服务来要求 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。