IAM 角色和权限

本页面介绍了 Cloud Deploy 服务帐号、角色和权限。

Cloud Deploy 中的访问权限通过 Identity and Access Management (IAM) 进行控制。通过 IAM,您可以创建和管理对 Google Cloud 资源的权限。Cloud Deploy 提供了一组特定的预定义 IAM 角色,其中每个角色都包含一组权限。您可以使用这些角色以更精细的方式授予对特定 Google Cloud 资源的访问权限,并防止对其他资源进行不必要的访问。IAM 允许您采用最小权限安全原则,您只需授予对您资源的必要访问权限。

如需了解高级访问权限控制安全功能,请参阅使用 IAM 限制 Cloud Deploy 访问权限

Cloud Deploy 中的服务账号

默认情况下,Cloud Deploy 使用默认的 Compute Engine 服务帐号运行。该服务账号具有足够的权限来渲染清单并将其部署到您的目标。

详细了解 Cloud Deploy 如何使用服务帐号。

预定义的 Cloud Deploy 角色

使用 IAM 时,Cloud Deploy API 中的每个 API 方法都要求发出 API 请求的身份具有使用相应资源的适当权限。您可以通过设置政策为项目主账号(用户、群组或服务账号)授予角色,进而授予相应权限。您可以就同一资源授予某个主账号多个角色。

IAM 文档包含所有预定义角色的可搜索参考文档

下表列出了 Cloud Deploy IAM 角色及其包含的权限:

角色 说明 权限
roles/clouddeploy.viewer 可以查看 Cloud Deploy

资源。

clouddeploy.*.get

clouddeploy.*.list

roles/clouddeploy.admin 拥有对 Cloud Deploy 资源的完全控制权。 clouddeploy.*
roles/clouddeploy.customTargetTypeAdmin 拥有对 Cloud Deploy 自定义目标类型的完全控制权。 clouddeploy.customTargetType.*
roles/clouddeploy.developer 可以创建、检索、更新和

删除 Cloud Deploy 交付流水线资源。

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.update

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.releases.*

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.operations.*

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.automations.get

clouddeploy.automations.list

clouddeploy.automationRuns.get

clouddeploy.automationRuns.list

roles/clouddeploy.operator 可以创建、检索、更新和删除

Cloud Deploy 交付流水线和目标资源。

可以创建和检索版本、发布和作业运行资源。

可以检索自定义目标类型资源。

clouddeploy.customTargetType.get

clouddeploy.customTargetType.list

clouddeploy.customTargetType.getIamPolicy

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.update

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.releases.*

clouddeploy.targets.get

clouddeploy.targets.list

clouddeploy.targets.create

clouddeploy.targets.delete

clouddeploy.targets.update

clouddeploy.targets.getIamPolicy

clouddeploy.rollouts.advance

clouddeploy.rollouts.cancel

clouddeploy.rollouts.create

clouddeploy.rollouts.get

clouddeploy.rollouts.ignoreJob

clouddeploy.rollouts.list

clouddeploy.rollouts.retryJob

clouddeploy.rollouts.rollback

clouddeploy.operations.*

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.jobRuns.terminate

clouddeploy.automations.*

clouddeploy.automationRuns.*

roles/clouddeploy.approver 可以查看和批准 Cloud Deploy

发布资源。

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.rollouts.approve

clouddeploy.operations.*

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

roles/clouddeploy.jobRunner 无需

部署到目标的权限。

logging.logEntries.create

storage.objects.create

storage.objects.list

storage.objects.get

roles/clouddeploy.releaser 可以创建和检索版本和发布 clouddeploy.customTargetType.get

clouddeploy.deliveryPipelines.get

clouddeploy.targets.get

clouddeploy.releases.create

clouddeploy.releases.get

clouddeploy.releases.list

clouddeploy.rollouts.advance

clouddeploy.rollouts.cancel

clouddeploy.rollouts.create

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.rollouts.rollback

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

除了 Cloud Deploy 预定义角色之外,基本 Viewer、Editor 和 Owner 角色还包含与 Cloud Deploy 相关的权限。但是,我们建议您尽可能授予预定义角色,以便符合最小权限安全原则

权限

下表列出了调用者调用每个方法必须具备的权限:

API 方法 所需权限 说明
automations.create() clouddeploy.automations.create 创建新的自动化资源。
automations.delete() clouddeploy.automations.delete 删除现有的自动化操作资源。
automations.get() clouddeploy.automations.get 检索单个自动化资源的详细信息。
automations.list() clouddeploy.automations.list 列出自动化资源及其元数据。
automations.update() clouddeploy.automations.update 更新现有自动化资源。
automationRuns.cancel() clouddeploy.automationRuns.cancel 取消正在运行的自动化操作。
automationRuns.get() clouddeploy.automationRuns.get 检索单个自动化运行的详细信息。
automationRuns.list() clouddeploy.automationRuns.list 列出自动化运行及其元数据。
customTargetTypes.create() clouddeploy.customTargetType.create 创建自定义目标类型资源。
customTargetTypes.delete() clouddeploy.customTargetType.delete 删除自定义目标类型资源。
customTargetTypes.get() clouddeploy.customTargetType.get 检索自定义目标类型的详细信息。
customTargetTypes.getIamPolicy() clouddeploy.customTargetType.getIamPolicy 获取自定义目标类型资源的 IAM 政策。
customTargetTypes.list() clouddeploy.customTargetType.list 列出可用的自定义目标类型及其元数据。
customTargetTypes.patch() clouddeploy.customTargetType.patch 更新现有的自定义目标类型。
customTargetTypes.setIamPolicy() clouddeploy.customTargetType.setIamPolicy 为自定义目标类型资源设置 IAM 政策。
deliveryPipelines.create() clouddeploy.deliveryPipelines.create 创建新的交付流水线资源。
deliveryPipelines.delete() clouddeploy.deliveryPipelines.delete 删除现有的交付流水线资源。
deliveryPipelines.get() clouddeploy.deliveryPipelines.get 检索个别交付流水线的详细信息。
deliveryPipelines.getIamPolicy() clouddeploy.deliveryPipelines.getIamPolicy 获取交付流水线资源的 IAM 政策。
deliveryPipelines.list() clouddeploy.deliveryPipelines.list 列出交付流水线及其元数据。
deliveryPipelines.rollbackTarget() clouddeploy.rollouts.rollback 回滚目标。
deliveryPipelines.setIamPolicy() clouddeploy.deliveryPipelines.setIamPolicy 为交付流水线资源设置 IAM 政策。
deliveryPipelines.update() clouddeploy.deliveryPipelines.update 更新现有的交付流水线资源。
jobRuns.get() clouddeploy.jobRuns.get 检索 JobRuns 资源。
jobRuns.list() clouddeploy.jobRuns.list 列出 JobRuns 资源及其元数据。
jobRuns.terminate() clouddeploy.jobRuns.terminate 终止正在进行的作业运行。
operations.cancel() clouddeploy.operations.cancel 取消长时间运行的操作。
operation.delete() clouddeploy.operations.delete 删除长时间运行的操作。
operations.get() clouddeploy.operations.get 获取特定的长时间运行的操作(例如,恢复到版本创建的状态)。
operations.list() clouddeploy.operations.list 列出长时间运行的操作。
releases.abandon() clouddeploy.releases.abandon 弃用某个版本并阻止对该版本进行进一步发布。
releases.create() clouddeploy.releases.create 创建新的版本资源。调用方还需要对用于渲染清单的服务账号拥有 iam.serviceAccounts.actAs 权限。
releases.get() clouddeploy.releases.get 检索各个版本的详细信息。
releases.list() clouddeploy.releases.list 列出版本和元数据。
releases.promote() clouddeploy.rollouts.create 将版本提升到下一个目标。
rollouts.advance() clouddeploy.rollouts.advance 将发布作业推进到下一阶段。
rollouts.approve() clouddeploy.rollouts.approve 批准或拒绝状态为 required 的发布。
rollouts.cancel() clouddeploy.rollouts.cancel 取消发布。
rollouts.create() clouddeploy.rollouts.create 创建新的发布资源。调用方还需要对用于部署的项目或服务账号拥有 iam.serviceAccounts.actAs 权限。
rollouts.get() clouddeploy.rollouts.get 检索个别发布的详细信息。
rollouts.ignoreJob() clouddeploy.rollouts.ignoreJob 忽略失败的作业。
rollouts.list() clouddeploy.rollouts.list 列出发布和元数据。
rollouts.retryJob() clouddeploy.rollouts.retryJob 重试失败的作业。
targets.create() clouddeploy.targets.create 创建新的目标资源。
targets.delete() clouddeploy.targets.delete 删除现有的目标资源。
targets.get() clouddeploy.targets.get 检索个别目标的详细信息。
targets.getIamPolicy() clouddeploy.targets.getIamPolicy 获取目标资源的 IAM 政策。
targets.list() clouddeploy.targets.list 列出目标及其元数据。
targets.setIamPolicy() clouddeploy.targets.setIamPolicy 设置目标资源的 IAM 政策。
targets.update() clouddeploy.targets.update 更新现有的目标资源。

使用 IAM 限制对 Cloud Deploy 资源的操作

您可以通过以下方式使用 IAM 保护 Cloud Deploy 资源:

您可以使用这些政策和条件来限制对 Cloud Deploy 资源执行以下操作:

  • 创建交付流水线或目标

    您可以向特定用户或群组授予此访问权限。

  • 更新或删除特定的交付流水线

    您可以向特定用户或群组授予此访问权限。

  • 为特定交付流水线创建版本

    您可以向特定用户或群组授予此访问权限。

  • 更新或删除特定目标

    您可以向特定用户或群组授予此访问权限。

  • 创建或批准发布或提升版本

    您可以向特定用户或组授予对特定目标或交付流水线的此访问权限。

    您还可以设置条件,将此访问权限限制在指定的时间范围内。

后续步骤