2 回答
TA贡献1893条经验 获得超10个赞
在某些时候,我使用CLI来模拟一个帐户:
gcloud config set auth/impersonate_service_account <service account>
然后,稍后在尝试使用应用程序默认凭据命令时,它会使用服务帐户凭据包装您的凭据。
gcloud auth application-default login
您最终得到的是一个如下所示的文件:
{
"delegates": [],
"service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/example@example-project.iam.gserviceaccount.com:generateAccessToken",
"source_credentials": {
"client_id": "123abc.apps.googleusercontent.com",
"client_secret": "XXXXXXXXX",
"refresh_token": "XXXXXXXXX",
"type": "authorized_user"
},
"type": "impersonated_service_account"
}
这似乎会导致第三方服务(如terraform)出现很多问题。
奇怪的是,Terraform只是使用Google SDK对Google进行API调用,因此它确实与Google有关。
您需要删除模拟:
gcloud config unset auth/impersonate_service_account
然后再次运行应用程序默认凭据命令:
gcloud auth application-default login
现在,如果您检查文件,它应该如下所示:
{
"client_id": "XXXXXXXXX",
"client_secret": "XXXXXXXXX",
"quota_project_id": "example-project",
"refresh_token": "XXXXXXXXXX",
"type": "authorized_user"
}
当我尝试模拟帐户时,我遇到了同样的问题,因此我可以将Terraform命令作为服务帐户而不是我的个人帐户运行,但它不喜欢这样。
编辑:重读你的问题,听起来你和我在同一条船上。我们希望使用服务帐户,而无需实际下载密钥。谷歌甚至提到这是最佳实践。但这样做会导致他们自己的SDK出现问题。
- 2 回答
- 0 关注
- 162 浏览
添加回答
举报