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.
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
- Configure as Credenciais padrão da aplicação para usar bibliotecas de cliente
- Gere e faça a gestão de credenciais de curta duração
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
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?
- Saiba mais sobre como o ADC encontra credenciais.
- Explore os métodos de autenticação.