GCP控制台部署Terraform时如何切换非默认服务账号认证?
解决GCP Terraform部署的服务账号认证问题
方法1:复用已登录用户账号权限部署
如果你的GCP控制台已经登录了具备对应权限的用户账号,可直接让Terraform复用该会话的认证信息:
- 在Cloud Shell中执行
gcloud auth application-default login,按提示完成浏览器端的身份验证。该命令会生成应用默认凭据,Terraform会自动读取此凭据,无需手动放置credentials.json文件。 - 完成认证后直接运行
terraform init、terraform apply等命令,部署操作将使用你当前登录的用户账号权限执行。
方法2:通过服务账号模拟使用低权限新账号
无需下载密钥文件,可通过模拟目标服务账号的方式实现认证:
- 确保当前登录的用户账号拥有
roles/iam.serviceAccountTokenCreator权限(允许模拟目标服务账号)。 - 在Cloud Shell中执行以下命令,设置要模拟的服务账号:
gcloud config set auth/impersonate_service_account NEW_SERVICE_ACCOUNT_EMAIL - 执行
gcloud auth application-default login生成默认凭据,此时凭据会自动关联模拟的低权限服务账号。 - 后续运行Terraform命令时,将使用该低权限服务账号执行操作,不再调用已禁用的默认服务账号。
方法3:Cloud Build部署时直接指定服务账号
若通过GCP控制台的Cloud Build部署Terraform,可在cloudbuild.yaml中直接配置目标服务账号:
steps: - name: 'hashicorp/terraform:latest' args: ['init'] - name: 'hashicorp/terraform:latest' args: ['apply', '-auto-approve'] serviceAccount: 'projects/[PROJECT_ID]/serviceAccounts/[NEW_SERVICE_ACCOUNT_EMAIL]'
配置后Cloud Build会直接使用你指定的服务账号完成部署,完全绕过默认服务账号。
内容的提问来源于stack exchange,提问作者Bruno Justino Praciano
相关产品推荐
相关产品推荐

