使用 IAM 进行访问权限控制

本页面介绍了 Identity and Access Management (IAM) 如何控制对 App Lifecycle Manager 的访问。本文档适用于配置用户访问权限和自动化部署流水线的平台管理员、安全工程师和运维人员。

App Lifecycle Manager 中的访问权限控制涉及两个主要概念:

  • 主账号(用户、群组和服务账号)的 IAM 角色:这些标准 IAM 角色可控制谁可以使用 Google Cloud 控制台、Google Cloud CLI 或 API 直接与 App Lifecycle Manager 资源(例如 SaaS 产品、单元、版本和发布)进行交互。
  • 专用服务账号的权限:这些权限使 App Lifecycle Manager 使用的特定服务账号能够代表您执行自动化操作,例如使用 Terraform 构建工件或预配基础设施。

区分您(或其他主账号)管理 App Lifecycle Manager 本身所需的权限,以及底层服务账号执行 App Lifecycle Manager 委托的任务所需的权限。

用户和主账号访问权限控制

如需直接与 App Lifecycle Manager 资源交互(例如查看 SaaS 产品或管理发布),主账号必须具有适当的预定义 App Lifecycle Manager IAM 角色。主账号可以是调用 API 的用户、群组或服务账号。

这些角色用于控制直接针对 App Lifecycle Manager API 或在 Google Cloud 控制台中执行的操作。

如需查看现有的 App Lifecycle Manager 资源(例如 SaaS 产品、单元、版本和发布),您只需要拥有相关的 Viewer 角色,例如 roles/saasservicemgmt.viewer 角色。您无需为只读操作配置专用服务账号或向其授予权限。

专用服务账号的权限

App Lifecycle Manager 执行的某些自动化操作需要具有适当权限的特定服务账号:

  • App Lifecycle Manager 服务代理(由 Google 管理):当您创建第一个 App Lifecycle Manager 资源时,App Lifecycle Manager 会自动预配一个由 Google 代管式服务代理。此服务代理使用 App Lifecycle Manager Service Agent 角色 (roles/saasservicemgmt.serviceAgent) 代表您跨 Google Cloud服务执行操作。
  • 预配和管理单元(执行启动操作的服务账号,由用户管理):当 App Lifecycle Manager 预配、更新或删除单元时,App Lifecycle Manager 会使用 Infrastructure Manager,后者通过使用用户管理的执行启动操作的服务账号来执行 Terraform 配置。
  • 构建和上传制品(制品创建服务账号,用户管理,可选):当您使用 Cloud Build 等自动化构建系统时,用户管理的制品创建服务账号会构建 Terraform OCI 制品并将其推送到 Artifact Registry。如果您使用复合模板或手动推送 OCI 映像,则此服务账号是可选的。

这些服务账号(详见 App Lifecycle Manager 服务账号)需要特定的权限集:

  • 基本权限:用户代管式服务</term>账号需要具有与<term ref="core services">核心服务</term>(例如 <term ref="Artifact Registry">Artifact Registry</term>、<term ref="Cloud Storage">Cloud Storage</term>、<term ref="Infra Manager">Infra Manager</term> 和 <term ref="IAM">IAM</term>)<term ref="interaction">互动</term>的<term ref="role">角色</term>(例如 roles/artifactregistry.writer、roles/config.admin 和 roles/iam.serviceAccountTokenCreator <term ref="role">角色</term>)。App Lifecycle Manager 服务账号中列出了每个服务账号所需的角色。
  • Terraform 资源权限(仅限执行服务账号):执行服务账号还必须具有 IAM 权限,才能创建、修改和删除 Terraform 配置中定义的特定 Google Cloud 资源。例如,如果您的 Terraform 配置创建了 Google Kubernetes Engine (GKE) 集群和 Cloud SQL 实例,则执行服务账号需要 roles/container.admin 和 roles/cloudsql.admin 等角色。在创建这些资源的项目中授予这些角色。这些权限是运行 Infra Manager 所需的基本权限之外的权限。

向这些服务账号授予权限后,App Lifecycle Manager 即可执行其自动化任务,并以不同的身份执行基础设施更改(执行启动操作的服务账号)或制品管理(制品创建服务账号)。这些服务账号权限与您或其他主账号查看或管理 App Lifecycle Manager 资源所需的权限是分开的。

预定义的 App Lifecycle Manager 角色

IAM 提供的预定义角色可以授予对特定 Google Cloud 资源的访问权限,并防止对其他资源进行未经授权的访问。

下表列出了 App Lifecycle Manager IAM 角色及其具备的权限:

角色 说明 权限
App Lifecycle Manager Admin (roles/saasservicemgmt.admin) 拥有对所有 App Lifecycle Manager 资源的完整访问权限。 saasservicemgmt.rollouts.create
saasservicemgmt.rollouts.update
saasservicemgmt.rollouts.delete
saasservicemgmt.rolloutKinds.create
saasservicemgmt.rolloutKinds.update
saasservicemgmt.rolloutKinds.delete
saasservicemgmt.releases.create
saasservicemgmt.releases.update
saasservicemgmt.releases.delete
saasservicemgmt.units.create
saasservicemgmt.units.update
saasservicemgmt.units.delete
saasservicemgmt.unitKinds.create
saasservicemgmt.unitKinds.update
saasservicemgmt.unitKinds.delete
saasservicemgmt.unitOperations.create
saasservicemgmt.unitOperations.update
saasservicemgmt.unitOperations.delete
saasservicemgmt.tenants.create
saasservicemgmt.tenants.update
saasservicemgmt.tenants.delete
saasservicemgmt.saas.create
saasservicemgmt.saas.update
saasservicemgmt.saas.delete
resourcemanager.projects.get
resourcemanager.projects.list
saasservicemgmt.locations.list
saasservicemgmt.locations.get
saasservicemgmt.rollouts.list
saasservicemgmt.rollouts.get
saasservicemgmt.rolloutKinds.list
saasservicemgmt.rolloutKinds.get
saasservicemgmt.releases.list
saasservicemgmt.releases.get
saasservicemgmt.units.list
saasservicemgmt.units.get
saasservicemgmt.unitKinds.list
saasservicemgmt.unitKinds.get
saasservicemgmt.unitOperations.list
saasservicemgmt.unitOperations.get
saasservicemgmt.tenants.list
saasservicemgmt.tenants.get
saasservicemgmt.saas.list
saasservicemgmt.saas.get
App Lifecycle Manager Viewer (roles/saasservicemgmt.viewer) 读取 App Lifecycle Manager 资源:发布、发布、rolloutKinds、单元、unitKinds、unitOperations、saas 和租户。 resourcemanager.projects.get
resourcemanager.projects.list
saasservicemgmt.locations.list
saasservicemgmt.locations.get
saasservicemgmt.rollouts.list
saasservicemgmt.rollouts.get
saasservicemgmt.rolloutKinds.list
saasservicemgmt.rolloutKinds.get
saasservicemgmt.releases.list
saasservicemgmt.releases.get
saasservicemgmt.units.list
saasservicemgmt.units.get
saasservicemgmt.unitKinds.list
saasservicemgmt.unitKinds.get
saasservicemgmt.unitOperations.list
saasservicemgmt.unitOperations.get
saasservicemgmt.tenants.list
saasservicemgmt.tenants.get
saasservicemgmt.saas.list
saasservicemgmt.saas.get

权限

REST API 参考文档中列出了调用者调用每种方法必须具备的权限。

后续步骤