借助 VPC Service Controls,您可以围绕 Google Cloud 资源设置安全边界,以防范数据渗漏。您可以将 Cloud Scheduler 作业添加到 VPC Service Controls 边界中,以保护预定工作负载并限制作业目标。
限制
以下限制适用于 Cloud Scheduler 的 VPC Service Controls 支持。
强制执行的操作
对以下操作实施 VPC Service Controls:
- 创建 Cloud Scheduler 作业
- 更新 Cloud Scheduler 作业
这一点为什么非常重要?
由于 VPC Service Controls 仅在作业创建和更新时强制执行,因此对于在您将 Cloud Scheduler 添加到 VPC Service Controls 边界之前创建的作业,系统不会自动强制执行 VPC Service Controls。即使作业目标不属于 VPC Service Controls 边界或不是受支持的目标,作业也会继续执行。如需对所有 Cloud Scheduler 作业强制执行 VPC Service Controls,请执行以下操作:
- 目标不受支持或位于边界之外的作业:删除作业。在本文档中,请参阅删除不合规的作业。
- 目标受支持且位于边界内的作业:将 Cloud Scheduler 添加到边界后,对每个作业运行更新。在本文档中,请参阅对预先存在的作业强制执行 VPC Service Controls。
支持的目标
Cloud Scheduler 与 VPC Service Controls 的集成支持以下目标。如果列出了 HTTP 端点,则支持这些端点;但是,不支持任意 HTTP 端点。
- Cloud Run 服务 - 必须使用规范的默认
run.app网域。不支持自定义网域和自定义 DNS,否则会导致作业创建失败。 - Cloud Run functions - 必须使用规范的默认
cloudfunctions.net或run.app网域。不支持自定义网域和自定义 DNS,否则会导致作业创建失败。 Google Cloud 符合 VPC Service Controls 要求的 API(预览版或正式版)可以位于与 Cloud Scheduler 作业不同的 Google Cloud 项目中。
您必须使用全球端点格式 (
https://SERVICE.googleapis.com)。区域端点(例如*.rep.googleapis.com、LOCATION.SERVICE.googleapis.com和REGION-SERVICE.googleapis.com)以及 mTLS 端点 (*.mtls.googleapis.com) 会被拒绝。此要求仅适用于作业目标 URI。如需通过区域级端点向 Cloud Scheduler API 发送您自己的请求,请参阅使用区域级端点。
对于 Cloud Run 作业,支持的 URI 格式如下:
https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB_NAME:run如需了解 Cloud Run 服务和作业资源之间的区别,请参阅服务、作业、工作器池和实例:运行代码的四种方式。
Pub/Sub
不支持的定位条件
当 Cloud Scheduler 是 VPC Service Controls 边界中的受限服务时,任何尝试创建或更新具有不受支持的目标的作业都会失败,并显示 TARGET_TYPE_NOT_PERMITTED_FOR_VPC 错误代码。使用试运行模式时,此操作不会生成违规日志。
无服务器端点的自定义网域(例如外部应用负载均衡器或自定义 DNS)不是受支持的目标。由于缺少边界内凭据,目标服务会阻止对自定义网域的运行时调用,即使在边界注册之前创建的预先存在的作业也是如此。
为避免意外屏蔽工作负载,请先删除具有不受支持的目标或目标位于您计划使用的 VPC Service Controls 边界之外的所有作业,然后再将边界切换到实施模式。
删除不合规的作业
推荐。删除具有以下任一目标的 Cloud Scheduler 作业:
- 不支持(请参阅支持的对象)
- 位于您计划使用的 VPC Service Controls 边界之外
如需了解如何删除作业,请参阅删除作业。
如果您在将 Cloud Scheduler 添加到 VPC Service Controls 边界之前未删除这些作业,则这些作业会继续运行,但 VPC Service Controls 不会对其强制执行。在本文档中,请参阅强制执行的操作。
例如,如果您有一个 Cloud Scheduler 作业以不受支持的目标(例如任意 HTTP 端点)为目标,则在您将 Cloud Scheduler 添加到 VPC Service Controls 边界后,该作业会继续运行,但不受 VPC Service Controls 保护。对于目标位于 VPC Service Controls 边界之外的预先存在的作业,情况也是如此。但是,如果预先存在的作业以边界内的无服务器自定义网域为目标,则目标服务会阻止运行时调用。
添加所需的 IAM 角色
必需。如需使用 VPC Service Controls,Cloud Scheduler 服务账号必须具有 Cloud Scheduler Service Agent IAM 角色。系统会自动为您的项目创建 Cloud Scheduler 服务账号。如需验证其是否具有 Cloud Scheduler Service Agent IAM 角色或授予此角色,请执行以下步骤:
在 Google Cloud 控制台中,前往 IAM
选中包括 Google 提供的角色授权复选框。
在过滤条件中,输入 Cloud Scheduler Service Account,然后选择此主账号。
查看 Cloud Scheduler 服务账号主账号的角色列。如果列出了以下角色,则可以继续操作:
- Cloud Scheduler Service Agent
如果未列出 Cloud Scheduler Service Agent 角色,请点击修改图标,然后向 Cloud Scheduler 服务账号主账号授予 Cloud Scheduler Service Agent 角色。
指定 VPC Service Controls 边界
必需。您可以使用现有边界或创建新边界,以保护具有受支持目标的 Cloud Scheduler 作业。这两种方法都允许您指定要限制的服务。 指定 Cloud Scheduler API。
现有边界:如需更新现有 VPC Service Controls 边界以包含 Cloud Scheduler,请按照更新服务边界中的步骤操作。
新边界:如需为 Cloud Scheduler 创建新边界,请按照创建服务边界的步骤操作。
对现有作业强制执行 VPC Service Controls
推荐。如需对您在将 Cloud Scheduler 添加到 VPC Service Controls 边界之前创建的 Cloud Scheduler 作业强制执行 VPC Service Controls,请对该作业运行 update。您无需更改作业,但必须运行更新,以便 VPC Service Controls 应用于该作业及其未来的执行。
您可以使用 Google Cloud 控制台(选择作业并点击修改)、API 或 gcloud CLI 运行作业更新。
如需使用 gcloud CLI 对现有作业强制执行 VPC Service Controls,请运行以下命令:
HTTP 目标
gcloud scheduler jobs update http JOB_ID
将 JOB_ID 替换为您的作业的 ID。
Pub/Sub 目标
gcloud scheduler jobs update pubsub JOB_ID
将 JOB_ID 替换为您的作业的 ID。