本页面介绍了如何对 Cloud SQL 实例创建、设置和管理自定义限制条件。如需简要了解自定义组织政策,请参阅自定义组织政策。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- 通过 IAM 和管理页面,为您的用户或服务账号添加 Organization Policy Administrator 角色 (
roles/orgpolicy.policyAdmin
)。 - 在执行此过程之前,请先参阅限制。
自定义限制条件支持的字段
您可以对以下字段设置自定义限制条件:
字段 | 用例示例 |
SqlDatabaseVersion | 强制使用特定的数据库版本 |
区域 | 将实例创建限制在特定区域 |
availabilityType | 强制实施高可用性 |
ipConfiguration > pscConfig > allowedConsumerProjects | 将 PSC 中的使用方项目的许可名单限制为特定项目 |
ipConfiguration > sslMode | 强制将 SSL 模式设为 ENCRYPTED_ONLY 或 TRUSTED_CLIENT_CERTIFICATE_REQUIRED 。在 Google Cloud 控制台中创建 Cloud SQL 实例时,您无法选择 SSL 模式。因此,如果您创建此自定义组织政策,需要使用 gcloud CLI、API 或 Terraform 创建 Cloud SQL 实例。
|
dataDiskType | 强制使用 SSD 或 HDD |
backupConfiguration > location | 将自动备份位置限制为特定位置 |
backupConfiguration > pointInTimeRecoveryEnabled | 强制所有实例启用 PITR |
backupConfiguration > transactionLogRetentionDays | 强制所有实例为事务日志保留使用特定保留期限 |
backupConfiguration > backupRetentionSettings > retentionUnit | 对所有备份强制实施保留天数 |
passwordValidationPolicy > minLength | 强制执行最小长度方面的密码政策 |
passwordValidationPolicy > complexity | 强制执行复杂性方面的密码政策 |
passwordValidationPolicy > reuseInterval | 强制执行特定重复使用间隔方面的密码政策 |
passwordValidationPolicy > disallowUsernameSubstring | 强制执行不允许将用户名用作密码的密码政策 |
版本 | 强制所有实例使用企业 Plus 版 |
connectorEnforcement | 要求所有连接都使用 Cloud SQL 连接器 |
dataCacheConfig | 要求所有实例都使用数据缓存 |
创建和设置自定义限制条件
自定义限制条件是在 YAML 文件中,使用实施组织政策的服务所支持的资源、方法、条件和操作定义的。自定义限制条件的条件使用通用表达式语言 (CEL) 进行定义。如需详细了解如何使用 CEL 构建自定义限制条件中的条件,请参阅通用表达式语言。
控制台
在 Google Cloud 控制台中,转到组织政策页面。
选择页面顶部的项目选择器。
在项目选择器中,选择要为其设置组织政策的资源。
点击
自定义限制条件。在显示名称框中,输入限制条件的名称。此字段的最大长度为 200 个字符。
在限制条件 ID 框中,为新的自定义限制条件输入所需的名称。自定义限制条件必须以
custom.
开头,只能包含大写字母、小写字母或数字,例如custom.requireCloudSqlPasswordMinLength
。该字段的最大长度为 70 个字符,不计算前缀,例如organizations/123456789/customConstraints/custom.
。在说明框中,输入直观易懂的限制条件说明,在违反政策时此说明内容会以错误消息的形式显示。此字段的最大长度为 2000 个字符。
在资源类型框中,选择包含要限制的对象和字段的 Google Cloud REST 资源的名称,例如
sqladmin.googleapis.com/Instance
。每种资源类型最多可有 20 个自定义限制条件。如果您尝试为已具有 20 个自定义限制条件的资源类型创建自定义限制条件,操作将失败。在强制执行方法下,选择是对 REST
CREATE
方法强制执行限制条件,还是同时对CREATE
和UPDATE
方法强制执行限制条件。修改条件,然后执行以下操作:
在添加条件面板中,创建一个引用受支持的服务资源的 CEL 条件,例如
resource.settings.passwordValidationPolicy.minLength > 10
。此字段的最大长度为 1,000 个字符。如需详细了解 CEL 用法,请参阅通用表达式语言。如需详细了解可在自定义限制条件中使用的服务资源,请参阅自定义限制条件支持的服务。点击保存。
在操作下,选择在满足前面的条件时是允许还是拒绝评估的方法。
如果条件计算结果为 true,则拒绝会阻止操作创建或更新资源。
如果条件计算结果为 true,则允许会允许操作创建或更新资源。除了条件中明确列出的情况之外,其他所有情况都会被阻止。
点击创建限制条件。
在每个字段中输入值后,右侧将显示此自定义限制条件的等效 YAML 配置。
gcloud
如需为自定义限制条件创建 YAML 文件,请使用以下格式:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- container.googleapis.com/RESOURCE_NAME
methodTypes:
- CREATE
- UPDATE
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
替换以下内容:
ORGANIZATION_ID
:您的组织 ID,例如123456789
。CONSTRAINT_NAME
:新的自定义限制条件的名称。 自定义限制条件必须以custom.
开头,只能包含大写字母、小写字母或数字,例如 custom.enableGkeAutopilot。该字段的长度上限为 70 个字符,不计算前缀,例如organizations/123456789/customConstraints/custom
。RESOURCE_NAME
:包含要限制的对象和字段的 GKE API REST 资源的名称(而非 URI)。例如Cluster
。CONDITION
:针对受支持的服务资源的表示法编写的 CEL 条件。此字段的长度上限为 1,000 个字符。ACTION
:满足condition
时要执行的操作。可以是ALLOW
或DENY
。如果条件计算结果为 true,则拒绝会阻止操作创建或更新资源。
如果条件计算结果为 true,则允许会允许操作创建或更新资源。除了条件中明确列出的情况之外,其他所有情况都会被阻止。
DISPLAY_NAME
:限制条件的名称。此字段的最大长度为 200 个字符。DESCRIPTION
:限制条件的说明,在违反政策时显示为错误消息。此字段的长度上限为 2,000 个字符。
gcloud org-policies set-custom-constraint
命令:gcloud org-policies set-custom-constraint CONSTRAINT_PATH将
CONSTRAINT_PATH
替换为自定义限制条件文件的完整路径。例如 /home/user/customconstraint.yaml
。完成后,您可发现您的自定义限制条件已成为 Google Cloud 组织政策列表中的可用组织政策。
如需验证自定义限制条件是否存在,请使用 gcloud org-policies list-custom-constraints
命令:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID将
ORGANIZATION_ID
替换为组织资源的 ID。如需了解详情,请参阅查看组织政策。强制执行自定义组织政策
设置自定义限制条件后,其运行方式与预定义的布尔值限制条件相同。Google Cloud 在评估是否允许用户请求时会先检查自定义限制条件。如果有任何自定义组织政策拒绝请求,则请求会被拒绝。Google Cloud 随后会检查对该资源强制执行的预定义组织政策。
如需强制执行布尔值限制条件,您可以创建引用该限制条件的组织政策,并将该组织政策应用于 Google Cloud 资源。控制台
如需强制执行布尔值限制条件,请执行以下操作:
- 在 Google Cloud 控制台中,转到组织政策页面。
- 选择页面顶部的项目选择器。
- 在项目选择器中,选择要设置组织政策的项目。
- 从组织政策页面的列表中选择限制条件。 此时应显示该限制条件的政策详情页面。
- 如需为该资源配置组织政策,请点击管理政策。
- 在修改政策页面,选择覆盖父级政策。
- 点击添加规则。
- 在强制执行下,选择开启还是关闭此组织政策的强制执行。
- (可选)如需使组织政策成为基于某个标记的条件性政策,请点击添加条件。请注意,如果您向组织政策添加条件规则,则必须至少添加一个无条件规则,否则无法保存政策。如需了解详情,请参阅使用标记设置组织政策。
- 如果是自定义限制条件,您可以点击测试更改来模拟此组织政策的效果。如需了解详情,请参阅使用 Policy Simulator 测试组织政策更改。
- 若要完成并应用组织政策,请点击设置政策。该政策将在 15 分钟内生效。
gcloud
如需创建强制执行布尔值限制条件的组织政策,请创建引用该限制条件的 YAML 政策文件:
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true
请替换以下内容:
-
PROJECT_ID
:要对其实施限制条件的项目。 -
CONSTRAINT_NAME
:您为自定义限制条件定义的名称。例如,custom.enableGkeAutopilot
。
如需强制执行包含限制条件的组织政策,请运行以下命令:
gcloud org-policies set-policy POLICY_PATH
将 POLICY_PATH
替换为组织政策 YAML 文件的完整路径。该政策将在 15 分钟内生效。
更新自定义限制条件
如需更新自定义限制条件,您可以在 Google Cloud 控制台中修改限制条件,也可以创建新的 YAML 文件并再次使用 set-custom-constraint
gcloud CLI 命令。自定义限制条件没有版本控制,因此这会覆盖现有的自定义限制条件。如果自定义限制条件已强制执行,则更新后的自定义限制条件会立即生效。
控制台
在 Google Cloud 控制台中,转到组织政策页面。
选择页面顶部的项目选择器。
在项目选择器中,选择要为其更新组织政策的资源。
从组织政策页面的列表中选择要修改的限制条件。系统应显示该限制条件的政策详情页面。
点击
修改限制条件。更改显示名称、说明、强制执行方法、条件和操作。创建限制条件后,您便无法更改限制条件 ID 或资源类型。
点击保存更改。
gcloud
如需使用 gcloud CLI 修改现有自定义限制条件,请创建包含您要进行的更改的新 YAML 文件:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- RESOURCE_NAME
methodTypes:
- METHOD1
- METHOD2
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
替换以下内容:
ORGANIZATION_ID
:您的组织 ID,例如123456789
。CONSTRAINT_NAME
:新的自定义限制条件的名称。 自定义限制条件必须以custom.
开头,只能包含大写字母、小写字母或数字,例如custom.disableGkeAutoUpgrade
。该字段的最大长度为 70 个字符,不计算前缀,例如organizations/123456789/customConstraints/custom.
。RESOURCE_NAME
:包含要限制的对象和字段的 Google Cloud REST 资源的完全限定名称。例如container.googleapis.com/NodePool
。如需详细了解可在自定义限制条件中使用的服务资源,请参阅自定义限制条件支持的服务。METHOD1,METHOD2
:要对其强制执行限制条件的 RESTful 方法的列表。可以是CREATE
或CREATE
和UPDATE
。 并非所有 Google Cloud 服务都支持这两种方法。如需查看每种服务支持的方法,请在支持的服务中找到相应服务。CONDITION
:引用受支持的服务资源的 CEL 条件,例如"resource.management.autoUpgrade == false"
。此字段的最大长度为 1,000 个字符。如需详细了解 CEL 用法,请参阅通用表达式语言。ACTION
:满足condition
时要执行的操作。可以是ALLOW
或DENY
。DISPLAY_NAME
:限制条件的名称。此字段的最大长度为 200 个字符。DESCRIPTION
:直观易懂的限制条件说明,在违反政策时显示为错误消息。 此字段的长度上限为 2,000 个字符。
使用 gcloud CLI 创建新的自定义限制条件后,您必须对其进行设置,以使其可用于组织中的组织政策。如需设置自定义限制条件,请使用 gcloud org-policies set-custom-constraint
命令:
gcloud org-policies set-custom-constraint CONSTRAINT_PATH将
CONSTRAINT_PATH
替换为自定义限制条件文件的完整路径。例如 /home/user/customconstraint.yaml
。完成后,您可发现您的自定义限制条件已成为 Google Cloud 组织政策列表中的可用组织政策。
如需验证自定义限制条件是否存在,请使用 gcloud org-policies list-custom-constraints
命令:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID将
ORGANIZATION_ID
替换为组织资源的 ID。如需了解详情,请参阅查看组织政策。删除自定义限制条件
您可以使用 Google Cloud 控制台或 gcloud CLI 删除自定义限制条件。
控制台
在 Google Cloud 控制台中,转到组织政策页面。
选择页面顶部的项目选择器。
在项目选择器中,选择要为其删除组织政策的资源。
从组织政策页面的列表中选择要删除的限制条件。系统应显示该限制条件的政策详情页面。
点击
删除。如需确认要删除限制条件,请点击删除。
gcloud
如需删除自定义限制条件,请使用 org-policies delete-custom-constraint
gcloud CLI 命令:
gcloud org-policies delete-custom-constraint custom.CONSTRAINT_NAME \
--organization=ORGANIZATION_ID
替换以下内容:
ORGANIZATION_ID
:您的组织 ID,例如123456789
。CONSTRAINT_NAME
:自定义限制条件的名称。例如
。custom.disableGkeAutoUpgrade
输出类似于以下内容:
Deleted custom constraint [organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade
]
如果您删除某个自定义限制条件,则使用该限制条件创建的所有政策都将继续存在,但会被忽略。您无法创建与已删除的自定义限制条件同名的其他自定义限制条件。
示例:使用自定义限制条件强制使用 SSD 而不是 HDD
创建
dataDiskType.yaml
文件,如下所示:name: organizations/651333429324/customConstraints/custom.dataDiskType resourceTypes: - sqladmin.googleapis.com/Instance methodTypes: - CREATE - UPDATE condition: resource.settings.dataDiskType == "PD_SSD" actionType: ALLOW displayName: dataDiskType must be PD_SDD description: dataDiskType must be PD_SSD
这可确保对实例执行的所有
CREATE
和UPDATE
方法都满足dataDiskType
为SSD
这一限制条件。因此,任何涉及HDD
的实例都会被拒绝。在组织级层设置自定义限制条件:
gcloud org-policies set-custom-constraint dataDiskType.yaml
创建“enforceDataDiskType.yaml”,如下所示:
name: projects/custom-constraints-cloudsql3/policies/custom.dataDiskType spec: rules: - enforce: true
在项目级层强制执行自定义限制条件:
gcloud org-policies set-policy enforceDataDiskType.yaml