限制资源使用

本页面简要介绍了限制资源服务使用 组织政策限制条件,该限制条件允许企业管理员控制其 Google Cloud 资源层次结构中可以使用哪些 Google Cloud 服务。只能对资源为组织、文件夹或项目资源的直接后代的服务强制执行此限制条件。例如,Compute Engine 和 Cloud Storage。

限制资源服务使用限制条件排除了某些作为 Google Cloud 产品基本依赖项的服务(例如 Identity and Access Management (IAM)、Cloud Logging 和 Cloud Monitoring),并且不适用于这些服务。如需查看此限制条件支持的云资源服务列表,请参阅限制支持的服务使用

管理员可以使用此限制条件来定义对资源容器(如组织、文件夹或项目)中允许的 Google Cloud 资源服务的分层限制。例如,允许项目 X 内的 storage.googleapis.com 运行,或拒绝文件夹 Y 内的 compute.googleapis.com

限制资源服务使用限制条件可通过两种互斥的方式使用:

  • 拒绝名单 - 允许任何未拒绝的服务的资源。

  • 许可名单 - 拒绝任何不允许的服务的资源。

限制资源服务使用限制条件会控制对所有范围内资源的运行时访问权限。当更新包含该限制条件的组织政策时,它会立即应用于对该政策范围内所有资源的所有访问,并且具有最终一致性。

我们建议管理员谨慎管理对包含此限制条件的组织政策的更新。您可以使用标记有条件地实施限制条件,更安全地发布此政策变更。如需了解详情,请参阅设置带有标记的组织政策

当某项服务受此政策限制时,某些直接依赖于受限服务的 Google Cloud 服务也会受到限制。这仅适用于管理相同客户资源的服务。 例如,Google Kubernetes Engine (GKE) 依赖于 Compute Engine。 如果 Compute Engine 受到限制,GKE 也会受到限制。

使用“限制资源服务使用”限制条件

您可以在组织、文件夹和项目级别设置组织政策限制条件。每项政策都会应用于其相应资源层次结构中的所有资源,但可以在资源层次结构中的较低级别覆盖。

如需详细了解政策评估,请参阅了解层次结构评估

设置组织政策

要设置、更改或删除组织政策,您必须拥有组织政策管理员角色。

控制台

如需设置包含限制资源服务使用限制条件的组织政策,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到组织政策页面。

    转到“组织政策”

  2. 从项目选择器中,选择您要设置组织政策的资源。

  3. 在组织政策表中,选择限制资源服务使用 (Restrict Resource Service Usage)。

  4. 点击管理政策

  5. 应用对象下方,选择覆盖父级政策

  6. 政策执行下,选择此政策的继承方式。

    1. 如果要继承父资源的组织政策并将其与此政策合并,请选择与父资源规则合并

    2. 如果您要替换任何现有组织政策,请选择替换

  7. 点击添加规则

  8. 政策值下方,选择自定义

  9. 政策类型下,选择拒绝表示列入拒绝名单,选择允许表示列入许可名单。

  10. 自定义值下,将您要阻止或允许的服务添加到列表中。

    1. 例如,如需屏蔽 Cloud Storage,您可以输入 storage.googleapis.com

    2. 如需添加更多服务,请点击添加价值

  11. 如需强制执行政策,请点击设置政策

gcloud

可以通过 Google Cloud CLI 设置组织政策。如需强制执行包含限制资源服务使用限制条件的组织政策,请先创建一个包含要更新的政策的 YAML 文件:

name: organizations/ORGANIZATION_ID/policies/gcp.restrictServiceUsage
spec:
   rules:
   - values:
       deniedValues:
       - file.googleapis.com
       - bigquery.googleapis.com
       - storage.googleapis.com

ORGANIZATION_ID 替换为您的组织资源的 ID。如需对资源设置此政策,请运行以下命令:

gcloud beta resource-manager org-policies set-policy \
  --project='PROJECT_ID' /tmp/policy.yaml

PROJECT_ID 替换为您要强制执行此组织政策的资源的项目 ID

如需了解如何在组织政策中使用限制条件,请参阅使用限制条件

限制未标记的资源

您可以使用标记和条件组织政策来限制任何未使用特定标记的资源。如果您为限制服务的资源设置组织政策,并基于某个标记的存在,则使用该资源的子资源(除非已标记)子资源。这样,您必须先按照治理方案设置资源,然后才能使用这些资源。

如需限制未标记的组织、文件夹或项目资源,您可以在创建组织政策时在条件查询中使用 ! 逻辑运算符。

例如,如需仅允许在具有 sqladmin=enabled 标记的项目中使用 sqladmin.googleapis.com,您可以创建一个组织政策,在没有 sqladmin=enabled 标记的项目中拒绝 sqladmin.googleapis.com

  1. 创建标记,用于标识资源是否已应用适当的治理。例如,您可以创建键为 sqlAdmin 且值为 enabled 的标记,指定此资源应允许使用 Cloud SQL Admin API。例如:

    创建标记键和值

  2. 点击新创建的代码的名称。在接下来的步骤中,您需要知道标记键路径下列出的标记键的命名空间名称,才能创建条件。

  3. 在组织资源级层创建限制 Resource Service Usage 组织政策,以拒绝访问 Cloud SQL Admin API。例如:

    创建用于限制资源的组织政策

  4. 向上述组织政策添加条件,指定在治理标记不存在时强制执行该政策。条件构建器不支持逻辑 NOT 运算符,因此必须在条件编辑器中构建此条件。例如:

    构建条件组织政策

    !resource.matchTag("012345678901/sqlAdmin", "enabled")

现在,sqlAdmin=enabled 标记必须附加到项目或由项目继承,然后您的开发者才能针对该项目使用 Cloud SQL Admin API。

如需详细了解如何创建条件组织政策,请参阅使用标记设置组织政策

在试运行模式下创建组织政策

试运行模式下的组织政策是一种组织政策,其中系统会审核违反政策的行为,但不会拒绝违规操作。您可以在试运行模式下使用限制资源服务使用限制条件创建组织政策,以便在实施当前政策之前监控其对组织的影响。如需了解详情,请参阅在试运行模式下创建组织政策

错误消息

如果您设置了一项组织政策来拒绝资源层次结构 B 中的服务 A,则当客户端尝试使用资源层次结构 B 中的服务 A 时,操作将失败。系统会返回错误消息,说明失败的原因,此外还会生成一个 AuditLog 条目以进一步监控、提醒或调试。

错误消息示例

Request is disallowed by organization's constraints/gcp.restrictServiceUsage
constraint for projects/PROJECT_ID attempting to use service
storage.googleapis.com.

Cloud Audit Logs 示例

Audit Log 条目示例的屏幕截图