Use a simulação de contas de serviço

Quando o principal que está a usar não tem as autorizações necessárias para concluir a sua tarefa ou quer usar uma conta de serviço num ambiente de desenvolvimento, pode usar a representação de contas de serviço.

Quando usa a representação da conta de serviço, começa com um principal autenticado (a sua conta de utilizador ou uma conta de serviço) e pede credenciais de curta duração para uma conta de serviço que tenha a autorização de que o seu exemplo de utilização precisa. A conta principal autenticada tem de ter as autorizações necessárias para usar a identidade da conta de serviço.

A representação da conta de serviço é mais segura do que usar uma chave da conta de serviço, porque a representação da conta de serviço requer uma identidade autenticada previamente, e as credenciais criadas através da representação não são persistentes. Em comparação, a autenticação com uma chave de conta de serviço não requer autenticação prévia e a chave persistente é uma credencial de alto risco se for exposta.

Para mais informações sobre a simulação da conta de serviço, consulte o artigo Simulação da conta de serviço.

Antes de começar

Antes de usar a representação de contas de serviço, tem de ativar as APIs necessárias e certificar-se de que tem as funções necessárias.

Ativar APIs

Para se fazer passar por uma conta de serviço, tem de ativar a API Service Account Credentials no seu projeto.

Roles required to enable APIs

To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

Enable the API

Funções necessárias

Para receber a autorização de que precisa para se fazer passar por uma conta de serviço, peça ao seu administrador para lhe conceder a função IAM Criador de tokens de contas de serviço (roles/iam.serviceAccountTokenCreator) na conta de serviço. 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.

Esta função predefinida contém a autorização iam.serviceAccounts.getAccessToken , que é necessária para usar a identidade de uma conta de serviço.

Também pode obter esta autorização com funções personalizadas ou outras funções predefinidas.

Tem de conceder estas funções à sua conta, mesmo quando está a trabalhar num projeto que criou.

Para mais informações sobre as funções necessárias para a representação, consulte o artigo Funções para autenticação de contas de serviço.

Pode usar a simulação da conta de serviço através dos seguintes métodos:

Use a CLI gcloud

A CLI gcloud oferece uma forma simples de usar a representação da conta de serviço. Este método funciona bem quando precisa de usar uma conta de serviço para aceder a recursos ou serviços através da CLI gcloud. Google Cloud

Pode roubar a identidade de uma conta de serviço para um comando específico da CLI gcloud ou configurar a CLI gcloud para usar o roubo de identidade para todos os comandos automaticamente.

Use a representação para um comando específico da CLI gcloud

Para usar a representação para um comando específico da CLI gcloud, use a flag --impersonate-service-account. Por exemplo, o comando seguinte lista os contentores de armazenamento, usando a identidade e o acesso fornecidos pela conta de serviço especificada:

gcloud storage buckets list --impersonate-service-account=SERVICE_ACCT_EMAIL

Quando usa esta flag, a CLI gcloud pede credenciais de curta duração para a conta de serviço especificada e usa-as para fazer a autenticação na API e autorizar o acesso. O principal com sessão iniciada na CLI gcloud (normalmente, a sua conta de utilizador) tem de ter a autorização necessária na conta de serviço.

Use a representação por predefinição com a CLI gcloud

Para configurar a CLI gcloud para usar a identidade e o acesso fornecidos por uma conta de serviço por predefinição, use o comando de configuração da CLI gcloud:

gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL

Com esta propriedade de configuração definida, a CLI gcloud pede credenciais de curta duração para a conta de serviço especificada e usa-as para autenticar na API e autorizar o acesso ao recurso para cada comando. A conta principal com sessão iniciada na CLI gcloud tem de ter a autorização necessária na conta de serviço.

Configure as Credenciais padrão da aplicação para usar bibliotecas de cliente

Pode usar a representação da conta de serviço para configurar um ficheiro de credenciais predefinidas da aplicação (ADC) local. As bibliotecas cliente que suportam a representação podem usar essas credenciais automaticamente. Os ficheiros ADC locais criados através da representação são suportados nos seguintes idiomas:

  • C#
  • Ir
  • Java
  • Node.js
  • Python

Use a representação da conta de serviço para criar um ficheiro ADC local:

gcloud auth application-default login --impersonate-service-account SERVICE_ACCT_EMAIL

Agora, pode usar bibliotecas de cliente nos idiomas suportados da mesma forma que o faria depois de configurar um ficheiro ADC local com credenciais do utilizador. As credenciais são encontradas automaticamente pelas bibliotecas de autenticação. Para mais informações, consulte o artigo Autentique-se para usar bibliotecas de cliente.

As credenciais de um ficheiro ADC local gerado através da representação da conta de serviço não são suportadas por todas as bibliotecas de autenticação. Para mais informações, consulte o artigo Erro devolvido para credenciais locais da representação da conta de serviço.

Gere e faça a gestão de credenciais de curta duração

Se nenhum dos métodos anteriores resolver o seu exemplo de utilização, tem de gerar e gerir tokens de curta duração. Por exemplo, se precisar de um tipo diferente de credencial de curta duração (algo que não seja um token de acesso) ou se precisar de usar a representação num ambiente de produção, use este método.

Para ver informações sobre como gerar tokens de curta duração, consulte o artigo Crie credenciais de curta duração para uma conta de serviço.

O que se segue?