Esta página descreve as duas identidades do Cloud Run e como as bibliotecas cliente da nuvem usam a identidade de serviço para chamar APIs Google Cloud . Exemplos de Google Cloud produtos que têm bibliotecas cliente da nuvem, incluindo Cloud Storage, Firestore, Cloud SQL, Pub/Sub e Cloud Tasks. Esta página destina-se a administradores, operadores ou programadores que gerem políticas organizacionais e acesso dos utilizadores, ou a qualquer pessoa que queira saber mais sobre estes tópicos.
Identidades do Cloud Run
Para usar o Cloud Run, Google Cloud é necessário que o utilizador do Cloud Run e a instância do Cloud Run tenham cada um uma identidade.
- A identidade do utilizador do Cloud Run é denominada conta do implementador do Cloud Run. Quando gere uma revisão ou uma tarefa, usa esta identidade para fazer pedidos à API Cloud Run Admin.
- A identidade da instância do Cloud Run é denominada identidade do serviço do Cloud Run. Quando o código que escreveu no Cloud Run interage com as bibliotecas de cliente do Google Cloud ou chama outro serviço do Cloud Run para comunicação de serviço para serviço, usa esta identidade para fazer pedidos do Cloud Run paraGoogle Cloud APIs ou outros serviços do Cloud Run.
Para aceder e fazer pedidos às Google Cloud APIs ou comunicar entre serviços, cada identidade tem de ter as autorizações adequadas concedidas na gestão de identidade e de acesso (IAM).
Chame a API Cloud Run Admin com a conta do implementador
Pode chamar a Cloud Run Admin API a partir do Cloud Run através da conta do implementador do Cloud Run. A conta do implementador pode ser uma conta de utilizador ou uma conta de serviço e representa a conta com sessão iniciada no ambiente Google Cloud .
Quando a conta de implementação usa o Cloud Run, o IAM verifica se a conta de implementação tem as autorizações necessárias para realizar a operação do Cloud Run. O diagrama seguinte mostra como uma conta de utilizador chama a API Cloud Run Admin para implementar uma nova revisão a partir da consolaGoogle Cloud :
Chame Google Cloud APIs com a identidade do serviço
Quando uma instância do Cloud Run interage com outros serviços do Cloud Run autenticados pelo IAM ou chama as bibliotecas cliente Google através do código da aplicação ou de funcionalidades incorporadas, como as integrações do Cloud Run ou as montagens de volumes do Cloud Storage, o Google Cloud ambiente usa as credenciais predefinidas da aplicação (ADC) para detetar automaticamente se a identidade do serviço do Cloud Run está autenticada para realizar a operação da API. A identidade do serviço do Cloud Run é uma conta de serviço que foi atribuída como a identidade da instância do Cloud Run quando implementa uma revisão ou executa uma tarefa.
Uma conta de serviço usada como conta de implementação só é usada como identidade de serviço se configurar a mesma conta de serviço na configuração do Cloud Run.
O resto deste guia descreve como um serviço ou uma tarefa do Cloud Run usa a identidade do serviço para chamar e aceder aos serviços e às APIs Google. Para mais informações sobre a configuração da identidade do serviço, consulte as páginas de configuração da identidade do serviço para serviços e tarefas.
Tipos de contas de serviço para identidade de serviço
Quando a sua instância do Cloud Run faz chamadas para Google Cloud APIs para realizar as operações de que precisa, o Cloud Run usa automaticamente uma conta de serviço como a identidade do serviço. Os dois tipos de contas de serviço que podem ser usados como identidade de serviço são os seguintes:
- Conta de serviço gerida pelo utilizador (recomendada): cria manualmente esta conta de serviço e determina o conjunto de autorizações mais reduzido de que a conta de serviço precisa para aceder a recursos Google Cloud específicos. A conta de serviço gerida pelo utilizador segue o formato
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
. - Conta de serviço predefinida do Compute Engine: o Cloud Run fornece automaticamente a conta de serviço predefinida do Compute Engine como a identidade de serviço predefinida. A conta de serviço predefinida do Compute Engine segue o formato
PROJECT_NUMBER-compute@developer.gserviceaccount.com
.
Evite a conta de serviço predefinida ao configurar a identidade do serviço
Por predefinição, a conta de serviço predefinida do Compute Engine é criada automaticamente. Se não especificar uma conta de serviço quando o serviço ou a tarefa do Cloud Run for criado, o Cloud Run usa esta conta de serviço.
Consoante a configuração da política da organização, a conta de serviço predefinida pode receber automaticamente a função de editor no seu projeto. Recomendamos vivamente que desative a concessão automática de funções
aplicando a restrição da política da organização iam.automaticIamGrantsForDefaultServiceAccounts
. Se tiver criado a sua organização após 3 de maio de 2024, esta restrição é aplicada por predefinição.
Se desativar a concessão automática de funções, tem de decidir que funções conceder às contas de serviço predefinidas e, em seguida, conceder estas funções.
Se a conta de serviço predefinida já tiver a função de editor, recomendamos que substitua a função de editor por funções menos permissivas.Para modificar as funções da conta de serviço em segurança, use o Simulador de políticas para ver o impacto da alteração e, em seguida, conceda e revogue as funções adequadas.
Como funciona a identidade de serviço
Quando o seu código chama ou faz pedidos às bibliotecas de cliente do Google Cloud, acontece o seguinte:
- As bibliotecas cliente detetam que é feito um pedido a uma API Google Cloud ou às bibliotecas cliente da nuvem e pedem uma chave de acesso OAuth 2.0 para a identidade do serviço a partir do servidor de metadados da instância.
- O servidor de metadados da instância fornece um token de acesso da IAM para a conta de serviço configurada como identidade de serviço.
- O pedido à API Google Cloud é enviado com uma chave de acesso OAuth 2.0.
- O IAM valida a identidade do serviço referenciada no token de acesso para as autorizações necessárias e verifica as associações de políticas antes de encaminhar a chamada para o ponto final da API.
- A API Google Cloud executa a operação.
Gere um token de acesso para o pedido do Cloud Run chamar as Google Cloud APIs
Se o seu código do Cloud Run usar as bibliotecas de cliente do Google Cloud, configura a identidade do serviço no Cloud Run atribuindo uma conta de serviço na implementação ou na execução. Isto permite que a biblioteca adquira automaticamente um token de acesso para autenticar o pedido do seu código. Se o seu código do Cloud Run comunicar com outros serviços autenticados do Cloud Run, tem de adicionar o token de acesso aos seus pedidos.
Para atribuir uma conta de serviço como identidade do serviço, consulte os seguintes guias:
No entanto, se usar o seu próprio código personalizado ou precisar de fazer pedidos programaticamente, pode usar o servidor de metadados diretamente para obter manualmente os tokens de identidade e o token de acesso descritos na secção seguinte. Tenha em atenção que não pode consultar este servidor diretamente a partir do seu computador local, uma vez que o servidor de metadados só está disponível para cargas de trabalho executadas noGoogle Cloud.
Obtenha tokens de acesso e IDs através do servidor de metadados
Seguem-se os dois tipos de tokens que pode obter com o servidor de metadados:
- Chaves de acesso OAuth 2.0, que são usadas para chamar a maioria das bibliotecas cliente de APIs Google.
- Tokens de ID, que são usados para chamar outros serviços do Cloud Run ou para invocar qualquer serviço para validar um token de ID.
Para obter um token, siga as instruções no separador adequado para o tipo de token que está a usar:
Tokens de acesso
Por exemplo, se quiser criar um tópico do Pub/Sub, use o método
projects.topics.create
.
Use o servidor de metadados de computação para obter um token de acesso:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \ --header "Metadata-Flavor: Google"
Este ponto final devolve uma resposta JSON com um atributo
access_token
.No seu pedido de protocolo HTTP, o pedido tem de ser autenticado com um token de acesso no cabeçalho
Authorization
:PUT https://pubsub.googleapis.com/v1/projects/
PROJECT_ID
/topics/TOPIC_ID
Authorization: BearerACCESS_TOKEN
Onde:
PROJECT_ID
é o ID do seu projeto.TOPIC_ID
é o ID do seu tópico.ACCESS_TOKEN
é a chave de acesso que obteve no passo anterior.
Resposta:
{ "name": "projects/
PROJECT_ID
/topics/TOPIC_ID
" }
Tokens de ID
Use o servidor de metadados de computação para obter um token de identidade com um público-alvo específico:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE" \
--header "Metadata-Flavor: Google"
Onde AUDIENCE
é o público-alvo do JWT pedido.
Para os serviços do Cloud Run, o público-alvo deve ser o URL do serviço que está a invocar ou um público-alvo personalizado, como um domínio personalizado, configurado para o serviço.
https://service.domain.com
Para outros recursos, é provável que seja o ID de cliente OAuth de um recurso protegido por IAP:
1234567890.apps.googleusercontent.com
Passos seguintes
- Configure a identidade do serviço para serviços ou tarefas.
- Saiba como gerir o acesso ou autenticar de forma segura programadores, serviços e utilizadores finais aos seus serviços.
- Para uma explicação passo a passo de uma aplicação que usa a identidade do serviço para minimizar o risco de segurança, siga o tutorial sobre como proteger serviços do Cloud Run.