JSON 格式的 Google Cloud 服务帐号密钥中的哪些字段应保持私有?

cbd*_*per 5 security service-accounts google-cloud-platform google-cloud-iam

这是我来自 Google 的 JSON 服务帐户密钥的形状。

{
  "type": "service_account",
  "project_id": "",
  "private_key_id": "",
  "private_key": "",
  "client_email": "",
  "client_id": "",
  "auth_uri": "",
  "token_uri": "",
  "auth_provider_x509_cert_url": "",
  "client_x509_cert_url": "",
}
Run Code Online (Sandbox Code Playgroud)

哪些字段应该保密?我的意思是,我会将其中的大部分添加到我的 Git 存储库中,并将私有位添加为环境变量。

保护private_key够了吗?

例如:

帐户.ts

{
  "type": "service_account",
  "project_id": "VALUE",
  "private_key_id": "VALUE",
  "private_key": process.env.PRIVATE_KEY,  // Populating it via env variables
  "client_email": "VALUE",
  "client_id": "VALUE",
  "auth_uri": "VALUE",
  "token_uri": "VALUE",
  "auth_provider_x509_cert_url": "VALUE",
  "client_x509_cert_url": "VALUE",
}
Run Code Online (Sandbox Code Playgroud)

我也应该隐藏吗private_key_id

Joh*_*ley 6

必须private_key受到保护。如果该值与 一起披露project_id,那么有人可以轻松创建授权令牌并破坏您的 Google Cloud 项目。如果服务账户具有正确的 IAM 角色,他们就可以控制您的项目。

仍然可以在不公开的情况下创建授权令牌,project_id但这需要更多时间,因为可以通过其他方式推断出项目 ID。

用于private_key_id查找 RSA 公钥以验证private_key. 密钥 ID 是公开的,泄露不成问题。

只有这private_key是一个秘密。其他值是敏感数据或公共数据。

最佳实践:保护整个服务帐户。

  • 我认为您的[这篇文章](https://www.jhanley.com/blog/google-cloud-creating-oauth-access-tokens-for-rest-api-calls/)也解释了每个值的含义使用过所以在这里可能有用:) (2认同)