Nesta página, explicamos o que são contas de serviço e descrevemos considerações importantes para gerenciar suas contas de serviço em cada etapa do ciclo de vida delas.
O que são contas de serviço?
Uma conta de serviço é um tipo especial de conta usada normalmente por um aplicativo ou carga de trabalho de computação, como uma instância do Compute Engine, em vez de uma pessoa. Uma conta de serviço é identificada por seu endereço de e-mail, que é exclusivo.
Os aplicativos usam contas de serviço para fazer chamadas de API autorizadas que autenticam como a própria conta de serviço ou como um usuário do Google Workspace ou do Cloud Identity por meio da delegação em todo o domínio. Quando um aplicativo é autenticado como uma conta de serviço, ele tem acesso a todos os recursos que a conta de serviço tem permissão para acessar.
A maneira mais comum de permitir que um aplicativo seja autenticado como uma conta de serviço é anexando uma conta de serviço ao recurso que está executando o aplicativo. Por exemplo, é possível anexar uma conta de serviço a uma instância do Compute Engine para que os aplicativos em execução nessa instância possam ser autenticados como a conta de serviço. Em seguida, conceda os papéis do IAM à conta de serviço para permitir que a conta de serviço e, por extensão, os aplicativos na instância acessem os recursos do Google Cloud.
Há outras maneiras de permitir que os aplicativos se autentiquem como contas de serviço, além de anexar uma conta de serviço. Por exemplo, é possível configurar a federação de identidade da carga de trabalho para permitir que cargas de trabalho externas sejam autenticadas como contas de serviço ou crie uma chave de conta de serviço e use-o em qualquer ambiente para obter tokens de acesso do OAuth 2.0.
Para saber mais sobre a autenticação da conta de serviço para aplicativos, consulte Visão geral das identidades das cargas de trabalho.
Os principais, como usuários e outras contas de serviço, também podem se autenticar como contas de serviço. Para mais informações, consulte Falsificação da conta de serviço nesta página.
Tipos de contas de serviço
No Google Cloud, há vários tipos de contas de serviço:
Contas de serviço gerenciadas pelo usuário: contas de serviço que você cria e gerencia. Essas contas de serviço geralmente são usadas como identidades para cargas de trabalho.
Contas de serviço padrão: contas de serviço gerenciadas pelo usuário que são criadas automaticamente quando você ativa determinados serviços do Google Cloud. Você é responsável por gerenciar essas contas de serviço.
Agentes de serviço: contas de serviço criadas e gerenciadas pelo Google Cloud, que permitem que os serviços acessem recursos em seu nome.
Para saber mais sobre os diferentes tipos de contas de serviço, consulte Tipos de contas de serviço.
Credenciais da conta de serviço
Aplicativos e principais são autenticados como uma conta de serviço seguindo um destes procedimentos:
- Como conseguir credenciais de curta duração. Em muitos casos, como contas de serviço e comandos anexados usando a sinalização
--impersonate-service-account
da CLI gcloud, essas credenciais são recebidas automaticamente. Não é preciso criá-las nem gerenciá-las. - Uso de uma chave de conta de serviço para assinar um JSON Web Token (JWT) e trocá-lo por um token de acesso. Como as chaves da conta de serviço são um risco de segurança quando não são gerenciadas corretamente, escolha uma alternativa mais segura para as chaves da conta de serviço sempre que possível.
Para saber mais sobre a autenticação da conta de serviço, consulte Credenciais da conta de serviço.
Representação da conta de serviço:
Quando um principal autenticado, como um usuário ou outra conta de serviço, é autenticado como uma conta de serviço para receber as permissões dela, isso é chamado de representação da conta de serviço. Representar uma conta de serviço permite que um principal autenticado acesse tudo o que ela pode acessar. Somente os principais autenticados com as permissões apropriadas podem representar contas de serviço.
A representação é útil quando você quer alterar as permissões de um usuário sem alterar as políticas do Identity and Access Management (IAM). Por exemplo, é possível usar a representação para conceder temporariamente um acesso elevado a um usuário ou para testar se um conjunto específico de permissões é suficiente para uma tarefa. Também é possível usar a representação para desenvolver localmente aplicativos que só podem ser executados como uma conta de serviço ou para autenticar aplicativos executados fora do Google Cloud.
Para saber mais sobre a representação de uma conta de serviço, consulte Representação da conta de serviço.
Contas de serviço e domínios do Google Workspace
As contas de serviço não pertencem ao seu domínio do Google Workspace, diferentemente das contas de usuário. Se você compartilhar recursos do Google Workspace, como documentos ou eventos, com todo o domínio do Google Workspace, eles não serão compartilhados com contas de serviço. Da mesma forma, os recursos do Google Workspace criados por uma conta de serviço não são criados no seu domínio do Google Workspace. Como resultado, os administradores do Google Workspace e do Cloud Identity não podem ser proprietários nem gerenciar esses recursos.
Permissões da conta de serviço
As contas de serviço são principais. Isso significa que é possível conceder
aos serviços acesso a recursos do Google Cloud. Por exemplo, é possível conceder a uma conta de serviço o papel de Administrador do Compute (roles/compute.admin
) em um projeto. A conta de serviço poderia gerenciar os recursos do Compute Engine
nesse projeto.
No entanto, as contas de serviço também são recursos. Isso significa que você pode conceder a outros principais permissão para acessar a conta de serviço. Por exemplo, é possível conceder a um usuário o papel de usuário da conta de serviço (roles/iam.serviceAccountUser
) em uma conta de serviço para permitir que ele anexe essa conta de serviço a recursos. Também é possível conceder a um usuário o papel de administrador da conta de serviço (roles/iam.serviceAccountAdmin
) para permitir que ele veja, edite, desative e exclua a conta de serviço.
As seções a seguir explicam como gerenciar contas de serviço como principais e recursos.
Contas de serviço como principais
Como as contas de serviço são principais, é possível permitir que uma conta de serviço acesse
recursos no seu projeto ao conceder a ela um papel, assim como você faria para qualquer
outro principal. Por exemplo, para permitir que a conta de serviço
do aplicativo acesse objetos em um bucket do Cloud Storage, conceda à conta de serviço o
papel de Leitor de objetos do Storage (roles/storage.objectViewer
)
no bucket.
Assim como em todos os tipos de participantes, conceda à conta de serviço o conjunto mínimo de permissões necessárias para atingir a meta.
Assim como acontece com outros principais, você pode adicionar contas de serviço a um grupo do Google e conceder papéis a ele. No entanto, não é recomendável adicionar contas de serviço a grupos. Contas de serviço são usadas por aplicativos, e cada aplicativo provavelmente terá os próprios requisitos de acesso.
Para saber como conceder papéis aos principais, incluindo contas de serviço, consulte Gerenciar o acesso a projetos, pastas e organizações.
Contas de serviço como recursos
As contas de serviço também são recursos que podem ter as próprias políticas de permissão. Como resultado, é possível permitir que outros principais acessem uma conta de serviço
concedendo a eles um papel na conta de serviço ou em um dos recursos pai da
conta de serviço. Por exemplo, para permitir que um usuário represente uma conta de serviço, conceda a ele o papel de criador do token da conta de serviço (roles/iam.serviceAccountTokenCreator
) na conta de serviço.
Ao conceder um papel que permite que um usuário personifique uma conta de serviço, lembre-se de que ele pode acessar todos os recursos disponíveis para a conta. Tenha cuidado ao permitir que os usuários representem contas de serviço altamente privilegiadas, como as contas de serviço padrão do Compute Engine e do App Engine.
Para mais informações sobre os papéis que podem ser concedidos aos principais das contas de serviço, consulte Permissões da conta de serviço.
Para saber como conceder um papel principal a uma conta de serviço, consulte Gerenciar acesso a contas de serviço.
Ciclo de vida da conta de serviço
Ao gerenciar seus projetos, você provavelmente criará, gerenciará e excluirá muitas contas de serviço diferentes. Nesta seção, descrevemos as principais considerações para gerenciar suas contas de serviço nos vários estágios do ciclo de vida.
Onde criar contas de serviço
Cada conta de serviço está localizada em um projeto. Depois de criar uma conta de serviço, não será possível movê-la para um projeto diferente.
Há algumas maneiras de organizar suas contas de serviço em projetos:
Crie contas de serviço e recursos no mesmo projeto.
Com essa abordagem, é fácil começar a usar as contas de serviço. No entanto, pode ser difícil acompanhar suas contas de serviço quando elas estão espalhadas por vários projetos.
Centralizar as contas de serviço em projetos separados.
Essa abordagem coloca todas as contas de serviço da sua organização em um pequeno número de projetos, o que pode facilitar o gerenciamento delas. No entanto, essa abordagem requer outras configurações se você anexar contas de serviço a recursos em outros projetos, o que permite que esses recursos usem a conta de serviço como identidade.
Quando uma conta de serviço está em um projeto e acessa um recurso em outro projeto, geralmente é necessário ativar a API para esse recurso nos dois projetos. Por exemplo, se você tem uma conta de serviço no projeto
my-service-accounts
e uma instância do Cloud SQL no projetomy-application
, você precisa ativar a API Cloud SQL emmy-service-accounts
emy-application
.Por padrão, é possível criar até 100 contas de serviço em um projeto. Se você precisar criar contas de serviço adicionais, solicite um aumento de cota.
Para saber como criar uma conta de serviço, consulte Criar contas de serviço.
Impedir a criação de contas de serviço
Para controlar melhor onde as contas de serviço são criadas, talvez você queira evitar a criação de contas de serviço em alguns projetos na organização.
É possível impedir a criação de contas de serviço aplicando a
restrição de política da organização
constraints/iam.disableServiceAccountCreation
em uma organização,
projeto ou pasta.
Antes de aplicar essa restrição, considere as seguintes limitações:
Se você aplicar essa restrição a um projeto ou a todos os projetos de uma organização, alguns serviços do Google Cloud não poderão criar contas de serviço padrão. Como resultado, se o projeto executar cargas de trabalho que precisem autenticar uma conta de serviço, o projeto poderá não conter uma conta de serviço que a carga de trabalho possa usar.
Para resolver esse problema, ative a personificação da conta de serviço entre projetos. Quando você ativa esse recurso, é possível criar contas de serviço em um projeto centralizado e, em seguida, anexá-las a recursos em outros projetos. As cargas de trabalho em execução nesses recursos podem usar as contas de serviço anexadas para autenticar, tornando as contas de serviço padrão desnecessárias.
Alguns recursos, como a federação de identidade da carga de trabalho, exigem que você crie contas de serviço.
Se você não usa a federação de identidade da carga de trabalho, considere usar as restrições da política da organização para bloquear a federação de todos os provedores de identidade.
Acompanhar as contas de serviço
Com o tempo e à medida que mais contas de serviços são criadas, pode ficar difícil manter o controle sobre o uso e a finalidade de cada uma delas.
O nome de exibição é uma boa maneira de conseguir informações adicionais sobre a conta de serviço como, por exemplo, finalidade ou contato. Ao criar novas contas, preencha esse nome. Para contas
de serviço atuais, use o método serviceAccounts.update()
para
modificar o nome de exibição.
Usar contas de serviço com o Compute Engine
As instâncias do Compute Engine precisam ser executadas como contas de serviço para terem acesso a outros recursos do Google Cloud. Para proteger as instâncias do Compute Engine, considere o seguinte:
Crie instâncias no mesmo projeto com diferentes contas de serviço. Para alterar a conta de serviço de uma instância depois da criação dela, use o método
instances.setServiceAccount
.Para definir a autorização das contas de serviço anexadas, defina escopos de acesso, além dos papéis do IAM.
As instâncias dependem das contas de serviço para acessar os recursos do Google Cloud. Por isso, evite excluí-las enquanto estiverem sendo usadas pelas instâncias.
Para saber mais sobre o uso de contas de serviço com o Compute Engine, consulte Contas de serviço na documentação do Compute Engine.
Identificar contas de serviço não usadas
Após algum tempo, pode haver contas de serviço nos seus projetos que você não usa mais.
As contas de serviço não usadas criam um risco de segurança desnecessário. Portanto, recomendamos desativar as contas de serviço não usadas e excluir as contas de serviço quando você tiver certeza de que não precisa mais delas. Use os métodos a seguir para identificar as contas de serviço não usadas:
- Os Insights da conta de serviço informam as contas de serviço no projeto que não foram autenticadas nos últimos 90 dias.
- Com o Activity Analyzer, é possível verificar quando uma conta de serviço ou chave foi usada pela última vez.
Também é possível utilizar métricas de uso da conta de serviço para rastrear o uso da conta de serviço e da chave em geral.
Se você for um cliente do Security Command Center Premium, poderá usar o Event Threat Detection para receber uma notificação quando uma conta de serviço inativa acionar uma ação. As contas de serviço inativas estão nesse estado há mais de 180 dias. Depois que uma conta de serviço é usada, ela não fica mais inativa.
Excluir contas de serviço
Antes de excluir uma conta de serviço, desative a conta de serviço para garantir que ela não seja necessária. É fácil reativar esse tipo de conta, desde que ela ainda esteja em uso.
Depois de confirmar que uma conta de serviço não é necessária, você pode excluí-la.
Recriar contas de serviço excluídas
É possível excluir uma conta de serviço e criar uma nova com o mesmo nome.
Quando você exclui uma conta de serviço, as respectivas vinculações de papéis não são removidas imediatamente. Em vez disso, as vinculações de papéis listam a conta de serviço com o prefixo deleted:
. Por exemplo, consulte
Políticas com participantes excluídos.
Se você criar uma nova conta de serviço com o mesmo nome de uma recém-excluída, as vinculações antigas talvez ainda existam. No entanto, elas não se aplicarão à nova conta de serviço, mesmo que as duas contas tenham o mesmo endereço de e-mail. Esse comportamento ocorre porque as contas de serviço recebem um ID exclusivo no gerenciamento de identidade e acesso (IAM) na criação. Internamente, todas as vinculações de papéis são concedidas usando esses IDs, e não o endereço de e-mail da conta de serviço. Portanto, as associações de papéis em uma conta de serviço excluída não se aplicam a uma nova conta com o mesmo endereço de e-mail.
Da mesma forma, se você anexar uma conta de serviço a um recurso, excluir a conta de serviço e criar uma nova com o mesmo nome, a nova conta de serviço não serão anexados ao recurso.
Para evitar esse comportamento inesperado, avalie a possibilidade de usar um nome novo e exclusivo para cada conta de serviço. Além disso, se você excluir acidentalmente uma conta de serviço, tente cancelar a exclusão em vez de criar uma nova conta de serviço.
Se não for possível cancelar a exclusão da conta de serviço original, e você precisar criar uma nova conta de serviço com o mesmo nome e os mesmos papéis, conceda os papéis a essa nova conta. Para detalhes, consulte Políticas com participantes excluídos.
Se você também precisar que a nova conta de serviço seja anexada aos mesmos recursos da conta de serviço original, siga um destes procedimentos:
- Para instâncias do Compute Engine, é possível alterar a conta de serviço anexada à instância para substituir a conta de serviço original pela nova.
- Em todos os outros recursos, é necessário excluir o recurso existente, criar um novo recurso do mesmo tipo e anexar a nova conta de serviço.
A seguir
- Saiba como criar contas de serviço.
- Confira as práticas recomendadas para trabalhar com contas de serviço.
- Práticas recomendadas para gerenciar chaves de contas de serviço
Faça um teste
Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
Comece a usar gratuitamente