Fazer upload das chaves da conta de serviço

Nesta página, explicamos como fazer upload de uma chave pública para uma conta de serviço. Depois de fazer upload da chave pública, use a chave privada do par de chaves para autenticar como a conta de serviço.

Antes de começar

Funções exigidas

Para ter as permissões necessárias para fazer upload das chaves da conta de serviço, peça ao administrador que conceda a você o papel do IAM Administrador da chave da conta de serviço (roles/iam.serviceAccountKeyAdmin) no projeto ou a conta de serviço com as chaves que você quer gerenciar. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

Para mais informações, consulte papéis de contas de serviço.

Os papéis básicos do IAM também contêm permissões para gerenciar as chaves da conta de serviço. Não conceda papéis básicos em um ambiente de produção, recomendamos que você faça isso em um ambiente de desenvolvimento ou teste.

Fazer upload de uma chave pública em uma conta de serviço

É possível fazer upload parte pública da chave de um par de chaves gerenciadas pelo usuário para associá-la a uma conta de serviço. Depois de fazer upload da chave pública, é possível usar a chave privada do par de chaves como uma chave de conta de serviço.

A chave enviada precisa ser uma chave pública RSA, encapsulada em um certificado X.509 v3 e codificada em base64. É possível usar ferramentas como o OpenSSL para gerar uma chave e um certificado nesse formato.

Não inclua informações particulares no certificado X.509. Especificamente, use um assunto genérico e não adicione atributos opcionais. Os certificados são visíveis publicamente. As informações particulares no certificado ficam visíveis para qualquer pessoa que recupere o certificado. Para mais informações, consulte Evitar divulgar informações confidenciais em certificados X.509 enviados.

Por exemplo, o comando a seguir gera um par de chaves RSA de 2.048 bits e encapsula a chave pública em um certificado autoassinado válido por 365 dias:

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

Em seguida, faça o upload do arquivo public_key.pem como a chave pública de uma conta de serviço.

Console

  1. No console do Google Cloud, acesse a página Contas de serviço.

    Acessar Contas de serviço

    As etapas restantes serão exibidas automaticamente no console do Google Cloud.

  2. Selecione um projeto.
  3. Na página Contas de serviço, clique no endereço de e-mail da conta de serviço que vai receber o upload de uma chave.
  4. Clique na guia Chaves.
  5. Clique no menu suspenso Adicionar chave e depois em Fazer upload de uma chave atual.
  6. Clique em Procurar, localize e selecione o arquivo da chave pública. Se preferir, copie e cole o conteúdo do arquivo da chave pública na caixa Colar chave atual.
  7. Clique em Fazer upload.

gcloud

Execute o comando gcloud iam service-accounts keys upload para fazer upload de uma chave pública a fim de assinar chaves de contas de serviço.

Substitua os seguintes valores:

  • KEY_FILE: o caminho para o arquivo que contém os dados da chave a serem enviados, por exemplo, ./public_key.pem.
  • SA_NAME: o nome da conta de serviço para a qual fazer o upload de uma chave.
  • PROJECT_ID: é o ID do projeto do Google Cloud.
gcloud iam service-accounts keys upload KEY_FILE \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com

A saída contém um identificador exclusivo para a chave enviada:

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

Para determinar se o comando foi bem-sucedido, execute o comando gcloud iam service-accounts keys list:

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

A saída terá o mesmo identificador exclusivo que foi retornado após a criação da chave:

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

REST

O método projects.serviceAccounts.keys.upload faz upload da chave pública de um par de chaves gerenciado pelo usuário e adiciona essa chave à conta de serviço.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto do Google Cloud. Os IDs do projeto são strings alfanuméricas, como my-project.
  • SA_NAME: o nome da conta de serviço à qual associar a chave.
  • PUBLIC_KEY_DATA: os dados da chave pública do par de chaves. Precisa ser uma chave pública RSA encapsulada em um certificado X.509 v3. Codifique os dados da chave pública em base64, incluindo a primeira linha, -----BEGIN CERTIFICATE-----, e a última, -----END CERTIFICATE-----.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "publicKeyData": "PUBLIC_KEY_DATA"
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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"
}

Desativar uploads de chave pública

Para desativar a capacidade de fazer upload de chaves no seu projeto, consulte Como restringir o upload da chave de conta de serviço.

A seguir

Faça um teste

Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.

Comece a usar gratuitamente