上传服务账号密钥

本页面介绍如何上传服务账号的公钥。上传公钥后,您可以使用密钥对中的私钥通过服务账号进行身份验证。

须知事项

所需的角色

如需获得上传服务账号密钥所需的权限,请让管理员向您授予项目或者您要管理其密钥的服务账号的 Service Account Key Admin (roles/iam.serviceAccountKeyAdmin) IAM 角色。 如需详细了解如何授予角色,请参阅管理访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

如需了解详情,请参阅服务账号角色

IAM 基本角色还包含管理服务账号密钥的权限。您不应在生产环境中授予基本角色,但可以在开发或测试环境中授予这些角色。

上传服务账号的公钥

您可以上传用户管理的密钥对的公钥部分,以将其与服务账号相关联。上传公钥后,您可以将密钥对中的私钥用作服务账号密钥。

您上传的密钥必须是封装在 X.509 v3 证书中并以 base64 编码的 RSA 公钥。您可以使用 OpenSSL 等工具生成此格式的密钥和证书。

请勿在 X.509 证书中包含任何私密信息。具体来说,请使用通用主题,并且不要添加任何可选特性。证书会公开显示;证书中的任何私密信息对检索证书的所有人都可见。如需了解详情,请参阅避免在上传的 X.509 证书中披露机密信息

例如,以下命令会生成 2048 位 RSA 密钥对,并将公钥封装在有效期为 365 天的自签名证书中:

openssl req -x509 -nodes -newkey rsa:2048 -days 365 \
    -keyout /path/to/private_key.pem \
    -out /path/to/public_key.pem \
    -subj "/CN=unused"

然后,您可以上传 public_key.pem 文件作为服务账号的公钥。

控制台

  1. 在 Google Cloud 控制台中,转到服务账号页面。

    转到“服务账号”

    其余步骤将自动显示在 Google Cloud 控制台中。

  2. 选择一个项目。
  3. 服务账号页面上,点击要为其上传密钥的服务账号的电子邮件地址。
  4. 点击密钥标签页。
  5. 点击添加密钥下拉菜单,然后选择上传现有密钥
  6. 点击浏览,然后找到并选择您的公钥文件。或者,您也可以复制公钥文件的内容,并将其粘贴到粘贴现有密钥框中。
  7. 点击上传

gcloud

执行 gcloud iam service-accounts keys upload 命令来上传用于签署服务账号密钥的公钥。

替换以下值:

  • KEY_FILE:包含要上传的密钥数据的文件的路径,例如 ./public_key.pem
  • SA_NAME:要为其上传密钥的服务账号的名称。
  • PROJECT_ID:您的 Google Cloud 项目 ID。
gcloud iam service-accounts keys upload KEY_FILE \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com

输出包含所上传密钥的唯一标识符:

Name: projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys/c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0

如需确定该命令是否成功运行,请执行 gcloud iam service-accounts keys list 命令:

gcloud iam service-accounts keys list \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com

输出将包含创建密钥后返回的相同唯一标识符:

KEY_ID CREATED_AT EXPIRES_AT 已停用
c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0 2019-06-26T21:01:42Z 9999-12-31T23:59:59Z  

REST

projects.serviceAccounts.keys.upload 方法可上传用户管理的密钥对中的公钥,并将此公钥添加到服务账号。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的 Google Cloud 项目 ID。项目 ID 是字母数字字符串,例如 my-project
  • SA_NAME:要与密钥关联的服务账号的名称。
  • PUBLIC_KEY_DATA:密钥对的公钥数据。必须是封装在 X.509 v3 证书中的 RSA 公钥。使用 base64 对公钥数据进行编码,包括第一行 -----BEGIN CERTIFICATE----- 和最后一行 -----END CERTIFICATE-----

HTTP 方法和网址:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys:upload

请求 JSON 正文:

{
  "publicKeyData": "PUBLIC_KEY_DATA"
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0",
  "validAfterTime": "2020-05-17T19:31:19Z",
  "validBeforeTime": "2021-05-17T19:31:19Z",
  "keyAlgorithm": "KEY_ALG_RSA_2048",
  "keyOrigin": "USER_PROVIDED",
  "keyType": "USER_MANAGED"
}

停用公钥上传功能

如需停用为项目上传密钥的功能,请参阅限制服务账号密钥上传

后续步骤

自行试用

如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。

免费开始使用