Esta página explica como carregar uma chave pública para uma conta de serviço. Depois de carregar a chave pública, pode usar a chave privada do par de chaves para se autenticar como a conta de serviço.
Antes de começar
Enable the IAM API.
Compreenda as credenciais da conta de serviço.
Funções necessárias
Para receber as autorizações de que
precisa para carregar chaves de contas de serviço,
peça ao seu administrador que lhe conceda a função de
administrador de chaves de contas de serviço (roles/iam.serviceAccountKeyAdmin
)
do IAM no projeto ou na conta de serviço cujas chaves quer
gerir.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Para mais informações, consulte o artigo Funções das contas de serviço.
Consoante a configuração da política da organização, também pode ter de permitir o carregamento de chaves de contas de serviço no seu projeto antes de carregar uma chave.
Para receber as autorizações de que precisa para permitir o carregamento de chaves de contas de serviço num projeto, peça ao seu administrador para lhe conceder as seguintes funções do IAM na sua organização:
-
Administrador da política da organização (
roles/orgpolicy.policyAdmin
) -
Visualizador da organização (
roles/resourcemanager.organizationViewer
) -
Administrador de etiquetas (
roles/resourcemanager.tagAdmin
)
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Estas funções predefinidas contêm as autorizações necessárias para permitir o carregamento de chaves de contas de serviço num projeto. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para permitir o carregamento de chaves de contas de serviço num projeto:
-
orgpolicy.constraints.list
-
orgpolicy.customConstraints.create
-
orgpolicy.customConstraints.delete
-
orgpolicy.customConstraints.get
-
orgpolicy.customConstraints.list
-
orgpolicy.customConstraints.update
-
orgpolicy.policies.create
-
orgpolicy.policies.delete
-
orgpolicy.policies.list
-
orgpolicy.policies.update
-
orgpolicy.policy.get
-
orgpolicy.policy.set
-
resourcemanager.organizations.get
-
resourcemanager.projects.listTagBindings
-
resourcemanager.projects.listEffectiveTags
-
resourcemanager.tagKeys.get
-
resourcemanager.tagKeys.list
-
resourcemanager.tagValues.list
-
resourcemanager.tagValues.get
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Permita o carregamento da chave da conta de serviço
Antes de criar uma chave de conta de serviço, certifique-se de que a restrição da política da organização iam.disableServiceAccountKeyUpload
não é aplicada ao seu projeto. Se esta restrição for aplicada ao seu projeto,
não pode carregar chaves de contas de serviço nesse projeto.
Recomendamos que aplique esta restrição à maioria dos projetos e que apenas isente os projetos que realmente necessitam de chaves de contas de serviço. Para mais informações sobre métodos de autenticação alternativos, consulte o artigo Escolha o método de autenticação certo para o seu exemplo de utilização.
Para isentar um projeto da restrição da política de organização iam.disableServiceAccountKeyUpload
, peça a um administrador da política de organização que faça o seguinte:
-
Ao nível da organização, crie uma chave de etiqueta e um valor de etiqueta que vai usar para definir se um recurso deve estar isento da política da organização. Recomendamos que crie uma etiqueta com a chave
disableServiceAccountKeyUpload
e os valoresenforced
enot_enforced
.Para saber como criar chaves de etiquetas e valores de etiquetas, consulte o artigo Criar e definir uma nova etiqueta.
-
Anexe a etiqueta
disableServiceAccountKeyUpload
à organização e defina o respetivo valor comoenforced
. Todos os recursos na organização herdam este valor da etiqueta, a menos que seja substituído por um valor da etiqueta diferente.Para saber como anexar etiquetas a recursos, consulte o artigo Anexar etiquetas a recursos.
-
Para cada projeto ou pasta que quer isentar da política da organização, anexe a etiqueta
disableServiceAccountKeyUpload
e defina o respetivo valor comonot_enforced
. Definir um valor de etiqueta para um projeto ou uma pasta desta forma substitui o valor de etiqueta herdado da organização. -
Crie ou atualize a política da organização que impede o carregamento de chaves de contas de serviço para que não aplique a restrição a recursos isentos. Esta política deve ter as seguintes regras:
-
Configure a restrição
iam.disableServiceAccountKeyUpload
para não ser aplicada a recursos com a etiquetadisableServiceAccountKeyUpload: not_enforced
. A condição nesta regra deve ter o seguinte aspeto:"resource.matchTag('ORGANIZATION_ID/disableServiceAccountKeyUpload', 'not_enforced')"
-
Configure a restrição
iam.disableServiceAccountKeyUpload
para ser aplicada a todos os outros recursos.
-
Carregue uma chave pública para uma conta de serviço
Pode carregar a parte da chave pública de um par de chaves gerido pelo utilizador para a associar a uma conta de serviço. Depois de carregar a chave pública, pode usar a chave privada do par de chaves como uma chave de conta de serviço.
A chave que carregar tem de ser uma chave pública RSA incluída num certificado X.509 v3 e codificada em base64. Pode usar ferramentas como o OpenSSL para gerar uma chave e um certificado neste formato.
Não inclua informações privadas no certificado X.509. Em concreto, use um assunto genérico e não adicione atributos opcionais. Os certificados são visíveis publicamente. Todas as informações privadas no certificado são visíveis para qualquer pessoa que obtenha o certificado. Para mais informações, consulte o artigo Evite a divulgação de informações confidenciais em certificados X.509 carregados.
Se a restrição da política da organização iam.serviceAccountKeyExpiryHours
for aplicada ao seu projeto, a chave que carregar tem de expirar no período especificado na restrição.
Para definir a hora de validade da chave, use o valor -days
no comando que usa para gerar o certificado X.509. Se o valor -days
for superior ao período especificado na restrição, o comando falha.
Por exemplo, o comando seguinte gera um par de chaves RSA de 2048 bits e envolve a chave pública num certificado autoassinado válido durante 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, pode carregar o ficheiro public_key.pem
como a chave pública de uma conta de serviço.
Consola
- Na Google Cloud consola, aceda à página Contas de serviço.
Os passos restantes aparecem na Google Cloud consola.
- Selecione um projeto.
- Na página Contas de serviço, clique no endereço de email da conta de serviço para a qual quer carregar uma chave.
- Clique no separador Chaves.
- Clique no menu pendente Adicionar chave e, de seguida, selecione Carregar chave existente.
- Clique em Procurar e, de seguida, encontre e selecione o ficheiro de chave pública. Em alternativa, pode copiar e colar o conteúdo do ficheiro de chave pública na caixa Colar chave existente.
- Clique em Carregar.
gcloud
Execute o comando
gcloud iam service-accounts keys upload
para carregar uma chave pública para assinar chaves de contas de serviço.
Substitua os seguintes valores:
KEY_FILE
: o caminho para o ficheiro que contém os dados principais a carregar, por exemplo,./public_key.pem
.SA_NAME
: o nome da conta de serviço para a qual carregar uma chave.PROJECT_ID
: o ID do seu Google Cloud projeto.
gcloud iam service-accounts keys upload KEY_FILE \ --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
O resultado contém um identificador exclusivo para a chave carregada:
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
O resultado vai conter o mesmo identificador exclusivo que foi devolvido após a criação da chave:
KEY_ID | CREATED_AT | EXPIRES_AT | DESATIVADA |
c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0 | 2019-06-26T21:01:42Z | 9999-12-31T23:59:59Z |
REST
O método
projects.serviceAccounts.keys.upload
carrega a chave pública de um par de chaves gerido pelo utilizador e adiciona esta chave à conta de serviço.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: O ID do seu Google Cloud projeto. Os IDs dos projetos são strings alfanuméricas, comomy-project
.SA_NAME
: o nome da conta de serviço à qual associar a chave.PUBLIC_KEY_DATA
: os dados da chave pública para o par de chaves. Tem de ser uma chave pública RSA envolvida num certificado X.509 v3. Codifique os dados da chave pública em base64, incluindo a primeira linha,-----BEGIN CERTIFICATE-----
, e a última linha,-----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 do pedido:
{ "publicKeyData": "PUBLIC_KEY_DATA" }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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" }
Desative os carregamentos de chaves públicas
Para desativar a capacidade de carregar chaves para o seu projeto, consulte o artigo Restringir o carregamento de chaves de contas de serviço.
O que se segue?
- Saiba como criar e eliminar chaves de contas de serviço.
- Saiba como listar e obter chaves de contas de serviço.
- Saiba mais sobre as alternativas às chaves de contas de serviço para autenticação.
- Saiba como usar chaves de contas de serviço para se autenticar como uma conta de serviço.
- Compreenda as práticas recomendadas para gerir chaves de contas de serviço.
Experimente
Se for um novo utilizador do Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em cenários reais. Os novos clientes também recebem 300 USD em créditos gratuitos para executar, testar e implementar cargas de trabalho.
Comece gratuitamente