本页介绍 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 执行服务账号文档。
详细了解 Cloud Deploy 如何使用服务账号。
预定义的 Cloud Deploy 角色
使用 IAM 时,Cloud Deploy API 中的每个 API 方法都会要求发出 API 请求的身份拥有适当的资源使用权限。您可以通过设置政策为项目主账号(用户、群组或服务账号)授予角色,进而授予相应权限。您可以就同一资源授予某个主账号多个角色。
IAM 文档包含所有预定义角色的可搜索参考文档。
下表列出了 Cloud Deploy IAM 角色及其具备的权限:
Cloud Deploy 角色 |
权限 |
Cloud Deploy Admin( 拥有对 Cloud Deploy 资源的完全控制权。 |
|
Cloud Deploy Approver( 拥有批准或拒绝发布的权限。 |
|
Cloud Deploy Custom Target Type Admin( 管理 CustomTargetType 资源的权限 |
|
Cloud Deploy Developer( 有权管理部署配置,但无权访问操作资源,例如目标。 |
|
Cloud Deploy Runner( 拥有执行 Cloud Deploy 作业的权限,但无权将其传送到目标。 |
|
Cloud Deploy Operator( 拥有管理部署配置的权限。 |
|
Cloud Deploy Policy Admin Beta 版( 拥有管理部署政策的权限。 |
|
Cloud Deploy Policy Overrider Beta 版( 拥有覆盖部署政策的权限。 |
|
Cloud Deploy Releaser( 拥有创建 Cloud Deploy 版本和发布的权限。 |
|
Cloud Deploy Viewer( 可以查看 Cloud Deploy 资源。 |
|
除了 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.customTargetTypes.create |
创建自定义目标类型资源。 |
customTargetTypes.delete() |
clouddeploy.customTargetTypes.delete |
删除自定义目标类型资源。 |
customTargetTypes.get() |
clouddeploy.customTargetTypes.get |
检索自定义目标类型的详细信息。 |
customTargetTypes.getIamPolicy() |
clouddeploy.customTargetTypes.getIamPolicy |
获取自定义目标类型资源的 IAM 政策。 |
customTargetTypes.list() |
clouddeploy.customTargetTypes.list |
列出可用的自定义目标类型及其元数据。 |
customTargetTypes.patch() |
clouddeploy.customTargetTypes.patch |
更新现有的自定义目标类型。 |
customTargetTypes.setIamPolicy() |
clouddeploy.customTargetTypes.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 |
更新现有的交付流水线资源。 |
deployPolicies.create() |
clouddeploy.deployPolicies.create |
创建部署政策资源。 |
deployPolicies.delete() |
clouddeploy.deployPolicies.delete |
删除部署政策资源。 |
deployPolicies.get() |
clouddeploy.deployPolicies.get |
检索部署政策资源的详细信息。 |
deployPolicies.list() |
clouddeploy.deployPolicies.list |
列出可用的部署政策及其元数据。 |
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 |
列出版本和元数据。 |
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 |
重试失败的作业。 |
rollouts.advance() 、rollouts.approve() 、rollouts.cancel() 、rollouts.create() 、rollouts.ignoreJob() 、rollouts.retryJob() 、deliveryPipelines.rollbackTarget() 、jobRuns.terminate() |
clouddeploy.deployPolicies.override |
替换部署政策资源。 |
deployPolicies.update() |
clouddeploy.deployPolicies.update |
更新现有的部署政策资源。 |
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 资源:
IAM 元 API
针对 Cloud Deploy 资源使用
setIamPolicy
来限制对这些资源执行的操作。条件 IAM
您可以使用这些政策和条件来限制对 Cloud Deploy 资源的以下操作:
创建交付流水线或目标
您可以向特定用户或群组授予此访问权限。
更新或删除特定的交付流水线
您可以向特定用户或群组授予此访问权限。
为特定交付流水线创建版本
您可以向特定用户或群组授予此访问权限。
更新或删除特定目标
您可以向特定用户或群组授予此访问权限。
创建或批准发布或提升版本
您可以向特定用户或组授予对特定目标或交付流水线的此访问权限。
您还可以设置条件,将此访问权限限制在指定的时间范围内。
后续步骤
- 了解 IAM。
- 详细了解如何在 IAM 中使用条件
- 详细了解 Cloud Deploy 服务账号。