GCP IAM REST API 服务帐号密钥问题
Posted
技术标签:
【中文标题】GCP IAM REST API 服务帐号密钥问题【英文标题】:GCP IAM REST API Service account key issue 【发布时间】:2021-12-29 18:12:22 【问题描述】:我一直在努力解决 GCP 中的这个特殊问题。我正在尝试使用 GCP 之外的 Rest API 调用生成服务帐户密钥。下面是服务帐号和角色的屏幕截图。
据我所知,服务帐户“服务帐户管理员密钥”是创建、列出等子权限的父级。
因此,当调用 Rest API 调用以使用此文档生成密钥时:2 我收到以下错误
"error":
"code": 403,
"message": "Permission iam.serviceAccountKeys.create is required to perform this operation on service account projects/XXXYYYZZZZZZ/serviceAccounts/XXXYYYYZZZZZZ.iam.gserviceaccount.com.",
"status": "PERMISSION_DENIED"
我错过了什么?!
更新:添加有关我如何设置授权和测试 Rest API 调用的其他屏幕截图。
【问题讨论】:
编辑您的问题并展示您如何使用具有这些权限的服务帐户设置授权。换句话说,您很可能使用的凭据与您认为自己使用的不同。 您能展示一下您是如何调用 API 的吗?以及您的安全(ADC、当前使用的凭据)配置? 由于您是在 GCP 之外拨打电话,您是否关注了Workload identity federation? 不,我没有使用工作负载身份联合。当通过 curl 在 GCP 的 shell 中使用时,相同的 rest API 调用有效。我缺少 GCP 之外的东西。 【参考方案1】:按照您的步骤,我能够复制它而没有任何错误。作为替代方案,您可以生成访问令牌作为身份验证。
-
添加身份验证标头。使用以下命令生成 Bearer Token:
gcloud auth application-default print-access-token
-
将 API 密钥删除到您的 URL。此示例 URL 检索:
https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys
-
添加键类型
USER_MANAGED
-
从上面的 gcloud 结果中添加访问令牌。
请参阅下面的示例屏幕截图:
如果您想生成服务帐户密钥,也可以参考此内容,只需确保更新您的 URL,添加带有 keyAlgorithm
的 JSON 正文,并使用 POST
而不是 GET
。欲了解更多信息,请关注this guide。
【讨论】:
以上是关于GCP IAM REST API 服务帐号密钥问题的主要内容,如果未能解决你的问题,请参考以下文章
使用GCP API密钥限制对特定GCP App Engine服务的访问?