开发者预览和部署应用时,可以使用现有的服务账号,也可以让 App Design Center 自动创建新的服务账号。如果您希望开发者使用您的服务账号,则必须执行以下操作:
- 向服务账号和用户账号添加 IAM 政策绑定。
- 向服务账号授予部署每项资源所需的角色。
- 向服务账号添加权限,以便在创建该服务账号的项目之外进行部署。
- 更新组织政策,以允许跨项目使用服务账号。
如需配置服务账号,请执行以下操作:
为服务账号的服务代理添加
roles/iam.serviceAccountUser角色的 IAM 政策绑定:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --member="serviceAccount:service-SERVICE_ACCOUNT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser"替换以下内容:
SERVICE_ACCOUNT_EMAIL:您的服务账号电子邮件地址。 例如my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com。SERVICE_ACCOUNT_PROJECT_ID:包含您的服务账号的项目的项目 ID。SERVICE_ACCOUNT_PROJECT_NUMBER:包含您的服务账号的项目的项目编号。
为用户向您的服务账号添加
roles/iam.serviceAccountUser角色的 IAM 政策绑定:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --member="user:USER_EMAIL" \ --role="roles/iam.serviceAccountUser"替换以下内容:
SERVICE_ACCOUNT_EMAIL:您的服务账号电子邮件地址。 例如my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com。USER_EMAIL:执行部署的用户的电子邮件地址。
在包含您的服务账号的项目中,为包含您的空间的管理项目添加所需服务代理角色的 IAM 政策绑定:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \ --role="roles/apphub.editor"gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \ --role="roles/config.agent"gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \ --role="roles/serviceusage.serviceUsageAdmin"替换以下内容:
SERVICE_ACCOUNT_PROJECT_ID:包含您的服务账号的项目的项目 ID。MANAGEMENT_PROJECT_NUMBER:包含您的空间的管理项目的项目编号。
在具有服务账号的项目中,确保未强制执行
iam.disableCrossProjectServiceAccountUsage组织政策限制条件。默认情况下,系统会强制执行此限制条件。如需停用组织政策限制条件的强制执行,请运行以下命令:
gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage \ --project=SERVICE_ACCOUNT_PROJECT_ID替换以下内容:
SERVICE_ACCOUNT_PROJECT_ID:包含您的服务账号的项目的项目 ID。
为您的服务账号授予在项目中部署资源所需的角色。开发者部署应用时,系统会显示所需的角色。
例如,如需授予
roles/run.admin角色,请添加以下政策绑定:gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-DEPLOYMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \ --role="roles/run.admin"替换以下内容:
SERVICE_ACCOUNT_PROJECT_ID:包含您的服务账号的项目的项目 ID。DEPLOYMENT_PROJECT_NUMBER:您要部署资源的项目对应的项目编号。
应用设计中心使用 Infrastructure Manager 在控制台中部署应用。如需使用您自己的服务账号通过 Infrastructure Manager 进行部署,请完成授予项目访问权限中的步骤。
如果您部署的应用包含通过 Developer Connect 连接导入的私有组件,请执行以下操作:
向您的服务账号授予您创建该服务账号的项目中的
roles/iam.serviceAccountTokenCreator角色。gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/iam.serviceAccountTokenCreator"替换以下内容:
SERVICE_ACCOUNT_PROJECT_ID:包含您的服务账号的项目的项目 ID。SERVICE_ACCOUNT_EMAIL:您的服务账号电子邮件地址。 例如my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com。