Identidade da função (1.ª geração)
Por motivos de segurança, a maioria das interações entre entidades no Google Cloud requer que cada entidade tenha uma identidade validável, protegida por algum tipo de segredo, como uma palavra-passe ou uma chave. Tal como outras entidades precisam de uma identidade para aceder às funções do Cloud Run, as próprias funções precisam frequentemente de aceder a outros recursos para fazer o seu trabalho. Google Cloud Cada função está associada a uma conta de serviço que serve como identidade quando a função acede a outros recursos. A conta de serviço que uma função usa como identidade também é conhecida como a respetiva conta de serviço de tempo de execução.
Para utilização em produção, a Google recomenda que atribua a cada função uma identidade dedicada, atribuindo-lhe uma conta de serviço gerida pelo utilizador. As contas de serviço geridas pelo utilizador permitem-lhe controlar o acesso concedendo um conjunto mínimo de autorizações através da gestão de identidade e de acesso.
Conta de serviço de tempo de execução
A menos que especifique uma conta de serviço de tempo de execução diferente quando implementar uma função, as funções do Cloud Run usam uma conta de serviço predefinida como identidade para a execução de funções:
As funções do Cloud Run usam a conta de serviço predefinida do App Engine,
PROJECT_ID@appspot.gserviceaccount.com
.Tenha em atenção que o número do projeto é diferente do ID do projeto e do nome do projeto. Pode encontrar o número do projeto na Google Cloud consola na página Painel de controlo.
Estas contas de serviço predefinidas têm a função de Editor, o que lhes permite um acesso amplo a muitos Google Cloud serviços. Embora seja a forma mais rápida de desenvolver funções, a Google recomenda a utilização da conta de serviço predefinida apenas para testes e desenvolvimento. Para produção, deve conceder à conta de serviço de tempo de execução apenas o conjunto mínimo de autorizações necessárias para atingir o respetivo objetivo.
Para proteger as suas funções em produção:
- Alterar as autorizações na conta de serviço de tempo de execução predefinida ou
- Crie contas de serviço individuais para as suas funções
Alterar autorizações na conta de serviço de tempo de execução predefinida
Consola
Aceda à página IAM na Google Cloud consola:
Selecione a conta de serviço predefinida do App Engine ou a conta de serviço de computação predefinida na tabela.
Clique no ícone de lápis no lado direito da linha para mostrar o separador Editar autorizações.
Adicione ou remova funções no menu pendente Função para conceder acesso com privilégios mínimos.
Clique em Guardar.
gcloud
Remova a função de Editor e, em seguida, use o comando
gcloud projects add-iam-policy-binding
para adicionar uma nova função:
# Remove the Editor role gcloud projects remove-iam-policy-binding PROJECT_ID \ --member="SERVICE_ACCOUNT_EMAIL" \ --role="roles/editor" # Add the desired role gcloud projects add-iam-policy-binding PROJECT_ID \ --member="SERVICE_ACCOUNT_EMAIL" \ --role="ROLE"
Em que PROJECT_ID
é o ID do projeto que está a usar, SERVICE_ACCOUNT_EMAIL
é o endereço de email da conta de serviço de tempo de execução predefinida, conforme mostrado anteriormente em Conta de serviço de tempo de execução, e ROLE
é a nova função a atribuir à conta de serviço de tempo de execução predefinida.
Usar contas de serviço individuais para as suas funções
Para lhe dar maior flexibilidade no controlo do acesso às suas funções, pode atribuir a cada uma delas a sua própria conta de serviço gerida pelo utilizador.
- Crie a sua conta de serviço. Anote o nome.
- Conceda-lhe as funções adequadas, com base nos recursos aos quais a função precisa de aceder para fazer o seu trabalho.
Se a conta de serviço e a função estiverem em projetos diferentes, a partir do projeto onde a conta de serviço está localizada:
- Configure a conta de serviço para funcionar em vários projetos.
Conceda a função Criador de tokens de conta de serviço (
roles/iam.serviceAccountTokenCreator
) ao agente de serviço das funções do Cloud Run (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
), em quePROJECT
se refere ao projeto no qual a função reside. O agente de serviço das funções do Cloud Run gere o acesso entre projetos para a sua conta de serviço.Conceda a autorização
iam.serviceaccounts.actAs
ao agente do serviço das funções do Cloud Run na conta de serviço do projeto diferente.
Conceda à conta de serviço acesso ao recurso. O método para o fazer depende do tipo de recurso.
Associe a conta de serviço à sua função. Pode fazê-lo no momento da implementação ou atualizando uma função implementada anteriormente.
Adicionar uma conta de serviço gerida pelo utilizador na implementação
Consola
Aceda à Google Cloud consola:
Especifique e configure a função da forma que quiser.
Clique em Tempo de execução, compilação… para apresentar definições adicionais.
Selecione o separador Tempo de execução.
Clique no menu pendente Conta de serviço e selecione a conta de serviço pretendida.
Clique em Seguinte e Implementar.
gcloud
Quando implementar uma função com gcloud functions deploy
, adicione a flag
--service-account
. Por exemplo:
gcloud functions deploy --no-gen2 FUNCTION_NAME --service-account SERVICE_ACCOUNT_EMAIL
onde FUNCTION_NAME
é o nome da função e SERVICE_ACCOUNT_EMAIL
é o email da conta de serviço.
Atualizar a conta de serviço de uma função existente
Pode atualizar a conta de serviço de tempo de execução de uma função existente.
Consola
Aceda à Google Cloud consola:
Clique no nome da função pretendida para aceder à respetiva página de detalhes.
Clique no lápis Editar na parte superior da página de detalhes para editar a função.
Clique em Tempo de execução, compilação… para apresentar definições adicionais.
Selecione o separador Tempo de execução.
Clique no menu pendente Conta de serviço e selecione a conta de serviço pretendida.
Clique em Seguinte e Implementar.
gcloud
Quando implementar uma função com gcloud functions deploy
, adicione a flag
--service-account
:
gcloud functions deploy FUNCTION_NAME --service-account SERVICE_ACCOUNT_EMAIL
em que FUNCTION_NAME
é o nome da função e SERVICE_ACCOUNT_EMAIL
é a conta de serviço.
A função reimplementada usa agora a nova conta de serviço de tempo de execução.
Usar o servidor de metadados para adquirir tokens
Embora as contas de serviço definidas pelo IAM sejam o método preferencial para gerir o acesso no Google Cloud, alguns serviços podem exigir outros modos, como uma chave de API, um cliente OAuth 2.0 ou uma chave de conta de serviço. O acesso a um recurso externo também pode exigir métodos alternativos.
Se o seu serviço de destino exigir que apresente um token de ID do OpenID Connect ou um token de acesso do Oauth 2.0, pode usar o servidor de metadados de computação para obter estes tokens em vez de configurar um cliente OAuth completo.
Tokens de identidade
Pode usar o servidor de metadados de computação para obter tokens de ID com um público-alvo específico da seguinte forma:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE" \ -H "Metadata-Flavor: Google"
Onde AUDIENCE
é o destino pedido, por exemplo, o URL de um serviço que está a invocar, como https://service.domain.com
, ou o ID de cliente OAuth de um recurso protegido pelo IAP, como 1234567890.apps.googleusercontent.com
.
Tokens de acesso
As chaves de acesso de OAuth 2.0 usam âmbitos para definir autorizações de acesso. Por predefinição, as chaves de acesso têm o âmbito cloud-platform
. Google Cloud Para aceder a outras APIs Google ou Google Cloud , tem de obter um token de acesso
com o âmbito adequado.
Pode usar o servidor de metadados de computação para obter tokens de acesso.
Se precisar de uma chave de acesso com um âmbito específico, pode gerá-la da seguinte forma:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token?scopes=SCOPES" \ -H "Metadata-Flavor: Google"
Onde SCOPES
é uma lista separada por vírgulas de âmbitos do OAuth
pedidos, por exemplo: https://www.googleapis.com/auth/drive,https://www.googleapis.com/auth/spreadsheets
.
Consulte a lista completa de âmbitos de OAuth da Google para saber de que âmbitos precisa.
Passos seguintes
Saiba como autorizar o acesso às suas funções ou autenticar programadores e outras funções para que possam invocar as suas funções.