Contas de serviço

Nesta página são explicadas as contas de serviço e os tipos de contas, além dos papéis de IAM disponíveis.

Antes de começar

  • Entenda os conceitos básicos do IAM.

O que são contas de serviço?

Uma conta de serviço é um tipo especial de conta usada por um aplicativo ou instância de máquina virtual (VM), não uma pessoa. Os aplicativos usam contas de serviço para fazer chamadas de API autorizadas 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.

Por exemplo, uma VM do Compute Engine pode ser executada como uma conta de serviço, e essa conta pode receber permissões para acessar os recursos de que precisa. Isso significa que essa conta é a identidade que controla o acesso a esses recursos.

Uma conta de serviço é identificada pelo endereço de e-mail dela, que é exclusivo.

Diferenças entre uma conta de serviço e uma conta de usuário

As contas de serviço diferem das contas de usuário de algumas maneiras principais:

  • As contas de serviço não têm senhas e não podem fazer login por meio de navegadores ou cookies.
  • As contas de serviço são associadas a pares de chaves RSA privada/pública que são usadas para autenticação no Google.
  • É possível permitir que outros usuários ou contas de serviço personifiquem uma conta de serviço.
  • As contas de serviço não são membros do seu domínio do Google Workspace, diferentemente das contas de usuário. Se você compartilhar recursos do Google Workspace, como documentos ou eventos, com todos os membros no seu 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 gerenciar esses recursos.

Chaves da conta de serviço

Cada conta de serviço é associada a dois conjuntos de pares de chaves RSA pública/privada que são usados para autenticação no Google: chaves gerenciadas pelo Google e gerenciadas pelo usuário.

Chaves gerenciadas pelo Google

Os pares de chaves gerenciados pelo Google sugerem que o Google armazena as partes pública e privada, alterna-as regularmente (cada chave pode ser usada para assinar por no máximo duas semanas), e a chave privada é sempre mantida como garantia e nunca fica acessível diretamente. O IAM fornece APIs para usar essas chaves e fazer login em nome da conta de serviço. Consulte mais informações em Como criar credenciais da conta de serviço de curta duração.

Chaves gerenciadas pelo usuário

Os pares de chaves gerenciados pelo usuário indicam que você tem as partes pública e privada de um par de chaves. É possível criar um ou mais pares de chaves gerenciadas pelo usuário (também conhecidas como chaves "externas") que podem ser usados fora do Google Cloud. O Google armazena apenas a parte pública de uma chave gerenciada pelo usuário.

Além disso, é possível criar uma chave pública no formato apropriado e fazer upload dela para o Google, onde ela fica permanentemente associada à conta de serviço especificada. Quando você precisar executar operações de assinatura em nome dessa conta de serviço, como ao criar chaves de conta de serviço, a chave pública carregada será usada.

A parte privada de um par de chaves gerenciadas pelo usuário é mais comumente usada com Application Default Credentials. Em seguida, a chave privada é usada para autenticar aplicativos de servidor para servidor.

Para chaves gerenciadas pelo usuário, você é responsável pela segurança da chave privada e por outras operações de gerenciamento, como a rotação de chaves. As chaves gerenciadas pelo usuário podem ser gerenciadas pela API IAM, pela ferramenta de linha de comando gcloud ou pela página de contas de serviço no Console do Google Cloud. É possível criar até 10 chaves por conta de serviço para facilitar a rotação das chaves.

Verifique se é possível usar o Cloud Key Management Service (Cloud KMS) para ajudar a gerenciar suas chaves com segurança.

Como impedir chaves gerenciadas pelos usuários

As chaves gerenciadas pelo usuário são credenciais extremamente eficientes e podem representar um risco de segurança quando não são gerenciadas corretamente.

Para limitar o uso de chaves gerenciadas pelo usuário, é possível aplicar as seguintes restrições de política da organização a uma organização, um projeto ou uma pasta:

  • constraints/iam.disableServiceAccountKeyCreation: impede que os membros criem chaves de conta de serviço gerenciadas por usuários.
  • constraints/iam.disableServiceAccountKeyUpload: impede que os membros façam upload de uma chave pública para uma conta de serviço.

Tipos de contas de serviço

Contas de serviço gerenciadas pelo usuário

É possível criar contas de serviço gerenciadas pelo usuário no projeto usando a API do IAM, o Console do Cloud ou a ferramenta de linha de comando gcloud. Você é responsável por gerenciar e proteger essas contas.

Por padrão, é possível criar até 100 contas de serviço gerenciadas pelo usuário em um projeto. Se essa cota não atender às suas necessidades, use o Console do Cloud para solicitar um aumento de cota. As contas de serviço padrão descritas nessa página não são contabilizadas nessa cota.

Ao criar uma conta de serviço gerenciada pelo usuário no projeto, você escolhe um nome para a conta de serviço. Esse nome aparece no endereço de e-mail que identifica a conta de serviço, com o seguinte formato:

service-account-name@project-id.iam.gserviceaccount.com

Contas de serviço padrão

Quando você usa alguns serviços do Google Cloud, eles criam contas de serviço gerenciadas pelo usuário. Elas permitem que o serviço implante jobs que acessam outros recursos do Google Cloud. Essas contas são conhecidas como contas de serviço padrão.

Se seu aplicativo for executado em um ambiente do Google Cloud com uma conta de serviço padrão, o aplicativo poderá usar as credenciais da conta de serviço padrão para chamar as APIs do Google Cloud. Como alternativa, crie sua própria conta de serviço gerenciada pelo usuário e use-a para se autenticar. Para detalhes, consulte Como localizar credenciais automaticamente.

Esta tabela mostra os serviços que criam contas de serviço padrão:

Serviço Nome da conta de serviço Endereço de e-mail
App Engine e qualquer serviço do Google Cloud que use o App Engine Conta de serviço padrão do App Engine project-id@appspot.gserviceaccount.com
Compute Engine e qualquer serviço do Google Cloud que use o Compute Engine Conta de serviço padrão do Compute Engine project-number-compute@developer.gserviceaccount.com

Contas de serviço gerenciadas pelo Google

Alguns serviços do Google Cloud precisam acessar seus recursos para serem capazes de atuar em seu nome. Por exemplo, quando você usa o Cloud Run para executar um contêiner, o serviço precisa acessar qualquer tópico do Pub/Sub que possa acionar o contêiner.

Para atender a essa necessidade, o Google cria e gerencia contas de serviço de muitos serviços do Google Cloud. Elas são conhecidas como contas de serviço gerenciadas pelo Google. É possível ver as contas de serviço gerenciadas pelo Google na política de IAM do projeto, nos registros de auditoria ou na página do IAM no Console do Cloud.

As contas de serviço gerenciadas pelo Google não estão listadas na página Contas de serviço no Console do Cloud.

Exemplo:

  • Agente de serviço do Google APIs. Seu projeto provavelmente conterá uma conta de serviço chamada agente de serviço de APIs do Google, com um endereço de e-mail que use o seguinte formato: project-number@cloudservices.gserviceaccount.com

    Essa conta de serviço executa processos internos do Google em seu nome. Ele recebe automaticamente o papel de editor (roles/editor) no projeto.

  • Gerente de papéis para contas de serviço gerenciadas pelo Google. Os registros de auditoria do IAM podem se referir à conta de serviço service-agent-manager@system.gserviceaccount.com.

    Essa conta de serviço gerencia os papéis que são concedidos a outras contas de serviço gerenciadas pelo Google. Ela é visível apenas nos registros de auditoria.

    Por exemplo, se você usar uma nova API, o Google poderá criar automaticamente uma nova conta de serviço gerenciada pelo Google e conceder papéis a essa conta no seu projeto. A concessão desses papéis gera uma entrada de registro de auditoria, que mostra que service-agent-manager@system.gserviceaccount.com definiu a política do IAM para o projeto.

  • Outras contas de serviço gerenciadas pelo Google. O projeto pode conter outras contas de serviço gerenciadas pelo Google que atuam em nome de serviços individuais. Essas contas de serviço às vezes são chamadas de agentes de serviços. Os papéis são concedidos automaticamente a esses agentes de serviços. Os nomes desses papéis normalmente terminam em serviceAgent.

    Para ver a lista completa de agentes de serviço e os papéis que são concedidos automaticamente a cada um, consulte Agentes de serviço.

Locais da conta 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 projeto my-application, você precisa ativar a API Cloud SQL em my-service-accounts e my-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.

Permissões de conta de serviço

As contas de serviço são identities e recursos.

Como as contas de serviço são identidades, é possível permitir que uma conta de serviço acesse recursos em seu projeto, concedendo a ela um papel, assim como você faria para qualquer outro membro. 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 visualizador de objetos do Storage (roles/storage.objectViewer) no bucket.

No entanto, as contas de serviço também são recursos que aceitam políticas do IAM. Com isso, você pode permitir que outros membros 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 personifique uma conta de serviço, conceda a ele o papel de usuário da conta de serviço (roles/iam.serviceAccountUser).

Para mais informações sobre como conceder papéis aos membros, incluindo contas de serviço, consulte Como conceder, alterar e revogar o acesso.

Para mais informações sobre a concessão de papéis em contas de serviço, consulte Como gerenciar a representação da conta de serviço.

O papel de Usuário da conta de serviço

É possível conceder o papel de Usuário da conta de serviço (roles/iam.serviceAccountUser) no nível do projeto a todas as contas de serviço ou no nível da conta de serviço.

  • A concessão do papel de Usuário da conta de serviço a um usuário permite que ele acesse todas as contas de serviço do projeto, inclusive as que forem criadas no futuro.

  • A concessão do papel de Usuário da conta de serviço a um usuário para uma conta de serviço específica concede a ele acesso somente a essa conta de serviço.

Os usuários que receberam o papel de Usuário da conta de serviço em uma conta de serviço podem usá-lo para acessar indiretamente todos os recursos acessíveis a essa conta. Por exemplo, se uma conta de serviço tiver recebido o papel de Administrador do Compute (roles/compute.admin), um Usuário da conta de serviço, a quem foi concedido esse papel, (roles/iam.serviceAccountUser) agirá como a conta de serviço para iniciar uma instância do Compute Engine. Nesse fluxo, o usuário se faz passar pela conta de serviço para executar qualquer tarefa usando os papéis e as permissões concedidas.

Para mais informações sobre a concessão de papéis de usuários em contas de serviço, consulte Como gerenciar a personificação da conta de serviço.

As contas de serviço representam a segurança em nível de serviço. A segurança do serviço é determinada pelas pessoas que têm papéis do IAM para gerenciar e usar as contas de serviço, e pessoas que têm chaves externas privadas para essas contas de serviço. As práticas recomendadas para garantir a segurança incluem o seguinte:

  • Use a API IAM para auditar as contas de serviço, as chaves e as políticas nessas contas de serviço.
  • Se as contas de serviço não precisam de chaves externas, exclua-as.
  • Se os usuários não precisarem de permissão para gerenciar ou usar contas de serviço, remova-os da política do IAM aplicável.
  • Verifique se as contas de serviço têm o mínimo de permissões possível. Use contas de serviço padrão com cuidado, porque eles recebem automaticamente o papel de editor (roles/editor) no projeto.

Para saber mais sobre as práticas recomendadas, consulte Como entender as contas de serviço.

O papel de Criador de token da conta de serviço

Esse papel permite a representação de contas de serviço para criar tokens de acesso OAuth2, bloquear blobs ou assinar JWTs.

Access scopes

Os escopos de acesso são um método legado que especifica permissões de uma instância de máquina virtual (VM, na sigla em inglês) do Compute Engine. Eles definem os escopos do OAuth padrão usados nas solicitações da ferramenta gcloud e das bibliotecas de cliente.

O Google Cloud agora usa o IAM, não os escopos de acesso, para especificar permissões para instâncias do Compute Engine. No entanto, ainda é preciso definir um escopo de acesso ao configurar uma instância para personificar uma conta de serviço.

Para mais informações, consulte a documentação do Compute Engine.

Credenciais de conta de serviço de curta duração

É possível criar credenciais de curta duração que permitam assumir a identidade de uma conta de serviço do Google Cloud. Essas credenciais podem ser usadas para autenticar chamadas de APIs do Google Cloud ou outras APIs que não são do Google.

O caso de uso mais comum dessas credenciais é delegar temporariamente o acesso aos recursos do Google Cloud em diferentes projetos, organizações ou contas. Por exemplo, em vez de fornecer as credenciais permanentes de uma conta de serviço altamente privilegiada a um autor de chamada externo, você pode conceder acesso de emergência temporário. Como alternativa, uma conta de serviço designada com menos permissões pode ser representada por um autor de chamada externo sem exigir credenciais de uma conta de serviço com mais privilégios.

Para mais informações, consulte Como criar credenciais de conta de serviço de curta duração.

Federação de identidade da carga de trabalho

É possível conceder às identidades a capacidade de personificar uma conta de serviço em uma carga de trabalho executada fora do Google Cloud, como no Amazon Web Services (AWS) ou no Microsoft Azure. Isso permite que você acesse recursos diretamente, usando credenciais de curta duração, em vez de usar uma chave de conta de serviço.

Saiba mais em Federação de identidades de carga de trabalho.

Application Default Credentials

O Application Default Credentials é uma ferramenta que as bibliotecas de cliente do Google Cloud usam para descobrir automaticamente as credenciais da conta de serviço. É possível especificar uma chave de conta de serviço em uma variável de ambiente, e o Application Default Credentials a usará automaticamente. Se você não especificar uma chave, o Application Default Credentials usará a conta de serviço anexada ao recurso que está executando seu código ou a conta de serviço padrão do serviço que está executando seu código.

Para saber mais, consulte Como encontrar credenciais automaticamente.

A seguir

Para as práticas recomendadas sobre o uso das contas de serviço, consulte Como entender as contas de serviço.

Leia os seguintes guias para saber como:

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 ganham US$ 300 em créditos para executar, testar e implantar cargas de trabalho.

Comece gratuitamente