我正在编写代码来为 Google Cloud 服务帐户生成和下载私钥。
使用 IAM API,我能够创建一个服务帐户,并且我生成密钥的调用似乎正在工作。我取回了IAM API 创建密钥页面中描述的服务帐户密钥,例如
{
"privateKeyType": "TYPE_GOOGLE_CREDENTIALS_FILE",
"privateKeyData": "random-key-stringkajdkjakjfke", ...
}
我将此文件下载为 JSON 响应并尝试对其进行身份验证:
gcloud auth activate-service-account --key-file=service-account-key-file.json
不幸的是,我收到一条错误消息
The .json key file is not in a valid format.
当我通过 Google Cloud Console 流程(IAM 和管理员 -> 服务帐户 -> ... -> 创建密钥 -> 创建)时,我得到一个下载的 JSON 文件,看起来像
{
"type": "service_account",
"private_key": "----BEGIN-PRIVATE-KEY-----",
"auth_uri": "https://gaiastaging.corp.google.com/o/oauth2/auth",
}
此文件看起来与 IAM API 的响应完全不同。解释我的错误!不幸的是,这种格式似乎没有在任何地方描述。在一些文档中简要提到了它。它是 Google 凭据文件吗?
我想获取 IAM 响应文件/JSON 并将其转换为第二个凭证文件。我已经尝试编写一些代码来转换它,但是有些字段"auth_provider_x509_cert_url"
我不明白。
也许转换文件也是错误的方法?更普遍:
如何生成文件,然后使用它通过 gcloud 进行身份验证?
我应该如何描述/区分上述两个文件?为什么每种类型的文件都有用?