如何通过Terraform实现单个service account跨多个项目使用
跨项目复用已有服务账号实现方案
核心逻辑:无需在新项目创建新的服务账号,仅需为原有项目中已创建的服务账号授予目标新项目的对应访问权限即可,主流公有云、K8s集群的IAM体系均支持该操作。
操作步骤
- 第一步:获取原有服务账号的唯一标识
你可以从原有项目的IAM/身份管理控制台直接复制该标识,不同环境的标识格式不同:- GCP服务账号格式:
[SA名称]@[原有项目ID].iam.gserviceaccount.com - AWS服务账号格式:
arn:aws:iam::[原有账号ID]:role/[角色名称] - 阿里云RAM角色格式:
acs:ram::[原有账号ID]:role/[角色名称]
- GCP服务账号格式:
- 第二步:在目标新项目中添加权限授权
- 进入目标新项目的IAM权限管理页面,选择添加授权/新增身份绑定
- 授权主体填写第一步复制的原有服务账号唯一标识
- 为该账号分配你需要的对应项目权限(建议遵循最小权限原则,仅分配必要的操作权限)
- 保存配置即可
配置验证
配置完成后你可以在原有服务账号的运行环境中执行对应操作验证是否生效,以GCP环境为例,可以执行以下命令测试访问目标项目的计算资源:gcloud compute instances list --project [目标项目ID] --impersonate-service-account [原有服务账号标识]
如果命令正常返回目标项目的资源列表,说明配置生效。
注意:部分云服务商的权限配置存在1-5分钟的同步延迟,配置完成后如果立刻访问失败可稍等片刻后再重试。
内容的提问来源于stack exchange,提问作者TheJet 1
相关产品推荐
相关产品推荐

