本文档介绍了 App Lifecycle Manager 使用的 Google 托管式服务账号和用户管理的服务账号,以及每个服务账号所需的 Identity and Access Management 权限。
App Lifecycle Manager 可跨多个Google Cloud 项目预配和管理基础设施。为确保严格的安全边界并遵循最小权限原则,App Lifecycle Manager 使用不同的服务账号将系统编排与租户基础设施部署分开。了解这些服务账号的结构和角色有助于您仅授予必要的权限、保护构建和执行流水线,以及跨项目隔离租户资源。
App Lifecycle Manager 服务账号概览
App Lifecycle Manager 结合使用 Google 管理的服务账号和用户管理的服务账号:
App Lifecycle Manager 服务账号(由 Google 管理):此账号会在您创建第一个应用产品资源后自动创建。它由 Google 管理,并代表您执行操作,例如在单元预配期间与其他 Google Cloud 服务进行交互。
执行服务账号(用户管理):您创建和管理此服务账号。App Lifecycle Manager(通过 Infrastructure Manager)在预配或更新单元时,会使用此账号执行 Terraform 配置。此账号充当创建和管理 Terraform 配置中定义的资源的身份。执行服务账号权限与 Terraform 配置管理的资源直接相关。
您可以拥有多个执行服务账号。我们建议您为每个租户使用专用的执行服务账号。
可选:制品创建服务账号(用户管理):此服务账号用于构建和上传打包为 Open Container Initiative (OCI) 制品的 Terraform 配置。这通常是 Cloud Build 服务账号,但也可以是具有应用产品适当权限的任何服务账号。
App Lifecycle Manager 服务账号(由 Google 管理)
App Lifecycle Manager 服务账号是 Google 管理的服务代理,由 App Lifecycle Manager 用于在您的项目中执行操作。
此服务账号会在您创建第一个 App Lifecycle Manager 资源时自动预配。App Lifecycle Manager 服务账号采用以下格式引用:
service-PROJECT_NUMBER@gcp-sa-saasservicemgmt.
替换以下内容:
PROJECT_NUMBER:您的项目编号。
执行启动操作的服务账号(用户管理)
执行服务账号是您必须创建的用户代管式服务账号。App Lifecycle Manager(通过 Infra Manager)使用此服务账号来执行 Terraform 配置。它是创建、修改和删除 Terraform 配置中定义的资源的身份。
您负责在提供方项目或租户项目中创建此服务账号。
执行启动操作的服务账号输入变量
使用 Google Cloud CLI 创建单元时,您必须提供执行服务账号作为 Terraform 配置的键值对输入变量:
名称:
actuation_sa变量类型:
String变量值:执行服务账号邮箱:
my-actuation-sa@my-identifier.
所需权限
驱动服务账号需要拥有足够的权限,才能管理 Terraform 配置中定义的资源。它至少需要以下角色:
roles/iam.serviceAccountTokenCreator:允许服务账号生成用于身份验证的令牌。roles/config.admin:授予对 Infra Manager 资源的完全控制权。roles/storage.admin:授予对 Cloud Storage 的完全控制权限。
执行服务账号还需要具有创建和管理应用所使用的特定 Google Cloud 资源的权限。
例如:
如果您的 Terraform 配置创建了 Google Kubernetes Engine (GKE) 集群,则服务账号需要适当的 GKE 角色(例如
roles/container.admin)。如果您的 Terraform 配置创建了 Compute Engine 实例,则服务账号需要
roles/compute.admin角色。如果您的 Terraform 配置创建了 Cloud SQL 实例,则服务账号需要具有适当的 Cloud SQL 角色(例如
roles/cloudsql.admin)。
请参阅您在 Terraform 配置中使用的每个 Google Cloud 资源的相关文档,以确定必要的权限。授予应用运行所需的最小权限。
制品创建服务账号(用户管理)
制品创建服务账号是您创建的用户代管式服务账号,用于使用构建系统(例如 Cloud Build)打包 Terraform 制品并将其上传到 Artifact Registry。
此服务账号独立于 App Lifecycle Manager 和执行服务账号,用于构建 Terraform 代码并将生成的制品推送到 Artifact Registry。通常,这是 Cloud Build 服务账号。
手动创建制品
如果您手动构建和上传 Terraform 制品(例如,直接使用 docker build 和 docker push),则不需要单独的制品创建服务账号。
您可以改用自己的凭据或具有必要 Artifact Registry 权限的服务账号进行身份验证。
所需权限
如果您使用的是 Cloud Build,则 Cloud Build 服务账号通常需要以下角色:
roles/artifactregistry.writer:将制品推送到 Artifact Registry。roles/artifactregistry.repoAdmin:管理 Artifact Registry 代码库。roles/storage.admin:管理 Cloud Storage 存储桶。roles/developerconnect.admin:使用 Developer Connect 的权限。roles/developerconnect.readTokenAccessor:获取 Developer Connect 读取令牌的权限。roles/logging.logWriter:写入日志的权限。roles/cloudbuild.builds.builder:如果您使用 Developer Connect 部署 Terraform 配置,则需要执行构建。构建流程所需的任何其他权限(例如,对源代码库的访问权限)。
后续步骤
在使用 IAM 进行访问权限控制中查看预定义角色和权限。
在租户和租户项目中了解如何隔离租户资源。
如需详细了解 App Lifecycle Manager,请参阅 App Lifecycle Manager 概览。
首先,请参阅创建应用产品。