Cloud SQL 组织政策

本页面介绍如何在 Cloud SQL 项目中使用组织政策。要开始创建组织政策,请参阅添加组织政策

概览

组织管理员可利用组织政策来限制用户如何配置该组织名下的实例。组织政策使用组织管理员对项目、文件夹或组织实施的规则(称为限制条件)。限制条件会在所有实例中强制执行该政策。举例来说,如果您尝试将实例添加到具有组织政策的实体,则相应限制条件会运行检查以确保实例配置符合其要求。如果检查失败,则 Cloud SQL 不会创建相应实例。

将项目添加到使用组织政策的组织或文件夹时,项目会继承该政策的限制条件。

如需详细了解组织政策,请参阅组织政策服务限制条件层次结构评估

特定于 Cloud SQL 的组织政策有两种类型:

连接组织政策

连接组织政策可集中控制 Cloud SQL 的公共 IP 地址设置,从而减少互联网对 Cloud SQL 实例的安全攻击面。组织政策管理员可以使用连接政策在项目、文件夹或组织级层限制 Cloud SQL 的公共 IP 地址配置。

连接组织政策限制条件

对于连接组织政策,存在两种强制访问 Cloud SQL 实例的限制条件。

限制条件 说明 默认值
限制 Cloud SQL 实例的公共 IP 访问权限 设置为 True 时,此布尔值限制条件会限制在 Cloud SQL 实例上配置公共 IP 地址。此限制条件不具有追溯性。在实施此限制条件后,已有公共 IP 访问权限的 Cloud SQL 实例仍然照常工作。

默认情况下,允许从公共 IP 地址访问 Cloud SQL 实例。

constraints/sql.restrictPublicIp
允许
限制 Cloud SQL 实例的授权网络 设置为 True 时,此布尔值限制条件会限制添加授权网络以对 Cloud SQL 实例进行无代理的数据库访问。此限制条件不具有追溯性。在实施此限制条件之后,已有授权网络的 Cloud SQL 实例仍然照常工作。
默认情况下,您可以向 Cloud SQL 实例添加已获授权的网络。

constraints/sql.restrictAuthorizedNetworks
允许

连接组织政策的限制

为每个项目设置组织政策时,您需要确定项目是否存在以下任何一种情况:

读取副本公共 IP 地址冲突

Cloud SQL 读取副本通过非代理数据库连接来连接到主实例。您可以使用主实例的已获授权网络设置来明确或隐式配置读取副本的公共 IP 地址。

如果主实例和副本实例位于同一区域并启用了专用 IP 地址,则不会存在连接组织政策限制条件冲突。

使用 gcloud sql connect 时出现不兼容问题

gcloud sql connect 命令使用公共 IP 地址直接连接到 Cloud SQL 实例。因此,它与 sql.restrictPublicIp 限制条件不兼容。使用专用 IP 地址的实例通常会出现此问题。

此外,gcloud sql connect 命令不使用代理,这使其与 sql.restrictAuthorizedNetworks 限制条件不兼容。

请改用此命令的 Beta 版:

gcloud beta auth login
gcloud beta sql connect [INSTANCE_ID]

此版本使用 Cloud SQL Auth 代理。如需了解参考信息,请参阅 gcloud beta sql connect

首次运行此命令时,系统会提示您安装 gcloud Cloud SQL Auth 代理组件。为此,您需要对客户端机器上的 gcloud SDK 安装目录拥有写入权限。

GCP 托管的服务访问权限

如果您的应用需要从其他 GCP 托管的服务(如 App Engine)访问 Cloud SQL 实例,则应用必须使用公共 IP 地址。请勿对项目强制执行 sql.restrictPublicIp 限制条件。不过,当来自 App Engine 的连接通过安全(代理)连接时,您可以强制执行 sql.restrictAuthorizedNetworks

MySQL 故障切换副本公共 IP 地址冲突

对于连接组织政策,MySQL 故障切换副本的作用与读取副本相同。如果主实例和副本实例位于同一区域并启用了专用 IP 地址,则不会存在连接组织政策限制条件冲突。

非 RFC 1918 专用 IP 地址

使用专用 IP 地址连接到 Cloud SQL 实例时会自动获得授权来使用 RFC 1918 地址范围。这允许所有专用客户端无需经过代理即可访问数据库。您必须将非 RFC 1918 地址范围配置为已获授权的网络

如需使用未在授权网络中配置的非 RFC 1918 专用 IP 地址范围,您可以执行以下一项或两项操作:

  1. 不强制执行 sql.restrictAuthorizedNetworks。如果已获授权的网络也强制执行 sql.restrictPublicIp,则您无法在控制台中配置它们。请改用 Cloud SQL API 或 gcloud CLI
  2. 将代理连接用于专用 IP 实例。

连接组织政策的已知问题

“限制已获授权的网络”限制条件

对于已经拥有“已获授权的网络”条目的 Cloud SQL 实例,即使在使用“限制已获授权的网络”(sql.restrictAuthorizedNetworks) 限制条件时,也会允许其他“已获授权的网络”条目。这也会影响已启用只读或故障切换副本的实例,因为在这些实例中,对用户不可见的副本存在“已获授权的网络”条目。

如果该限制条件仅允许移除“已获授权的网络”条目,而不允许添加该条目,则可解决此已知问题。

客户管理的加密密钥 (CMEK) 组织政策

Cloud SQL 支持两种组织政策限制条件,以帮助确保整个组织中的 CMEK 保护:constraints/gcp.restrictNonCmekServicesconstraints/gcp.restrictCmekCryptoKeyProjects

constraints/gcp.restrictNonCmekServices 限制条件要求对 sqladmin.googleapis.com 使用 CMEK 保护。如果添加此限制条件并将 sqladmin.googleapis.com 添加到服务的 Deny 政策列表中,则除非启用了 CMEK,否则 Cloud SQL 会拒绝创建新实例。

constraints/gcp.restrictCmekCryptoKeyProjects 限制条件限制用于 Cloud SQL for MySQL 实例中的 CMEK 保护的 Cloud KMS CryptoKey。添加此限制条件后,当 Cloud SQL 使用 CMEK 创建新实例时,CryptoKey 必须来自允许的项目、文件夹或组织。

这些限制条件仅在新创建的 Cloud SQL for MySQL 实例上强制执行。

如需了解详情,请参阅 CMEK 组织政策。如需了解 CMEK 组织政策限制条件,请参阅组织政策限制条件

组织政策强制执行规则

Cloud SQL 会在以下操作期间强制执行组织政策:

  • 创建实例
  • 创建副本
  • 实例重启
  • 实例迁移
  • 克隆实例

与所有组织政策限制条件一样,政策更改不会应用于现有实例。

  • 新政策对现有实例没有任何影响。
  • 现有实例配置仍然有效,除非用户使用控制台、gcloud CLI 或 RPC 将实例配置从合规状态更改为不合规状态。
  • 由于维护不会更改实例的配置,因此计划的维护更新不会导致政策强制执行。

后续步骤