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 do serviço e que as permissões dela controlam quais recursos podem ser acessados por ele.

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.
  • As permissões do IAM podem ser concedidas para permitir que outros usuários (ou outras contas de serviço) representem 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. Por exemplo, se você compartilhar recursos com todos os membros no domínio do Google Workspace, eles não serão compartilhados com contas de serviço. Da mesma forma, os recursos criados por uma conta de serviço não podem pertencer nem ser gerenciados pelos administradores do Google Workspace ou do Cloud Identity. Isso não se aplica ao usar a delegação em todo o domínio, porque as chamadas de API são autorizadas como o usuário representado, não como a própria conta de serviço.

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, você pode 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.

É possível limitar o uso delas aplicando a Restrição da política da organização constraints/iam.disableServiceAccountKeyCreation a projetos, pastas ou até mesmo a toda a organização. Depois de aplicar a restrição, é possível ativar as chaves gerenciadas pelo usuário em locais bem controlados para minimizar o risco potencial causado por chaves não gerenciadas.

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.

As contas de serviço padrão ajudam você a começar a usar os serviços do Google Cloud. Para cargas de trabalho de produção, recomendamos que você crie suas próprias contas de serviço gerenciadas pelo usuário e conceda os papéis apropriados a cada conta de serviço.

Quando uma conta de serviço padrão é criada, ela recebe automaticamente o papel de Editor (roles/editor) no projeto. Esse papel inclui um número muito grande de permissões. Para seguir o princípio do menor privilégio, recomendamos desativar a concessão automática de papéis adicionando uma restrição à política da organização ou revogando o papel do Editor manualmente. Se você desativar ou revogar a concessão de papel, precisará decidir quais papéis conceder às contas de serviço padrão.

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 seu projeto e nos registros de auditoria.

Exemplo:

  • Agente de serviço do Google APIs. Seu projeto provavelmente conterá uma conta de serviço chamada agente de serviços de APIs do Google, comum 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.

Permissões de conta de serviço

Além de ser uma identidade, uma conta de serviço é um recurso com políticas do IAM anexadas a ela. As políticas determinam quem pode usar essa conta.

Por exemplo, em uma conta de serviço, Alice tem o papel de editor e, João, o de visualizador. Isso é como conceder papéis para qualquer outro recurso do Google Cloud.

Quando as contas de serviço padrão do Compute Engine e App Engine são criadas no projeto, elas recebem papéis de editor para que o código executado no seu app ou instância da VM tenha as permissões necessárias. Nesse caso, essas contas de serviço são identidades que recebem o papel de editor de um recurso, por exemplo, um projeto.

Se você quiser permitir que seu aplicativo acesse um bucket do Cloud Storage, conceda à conta de serviço (que seu aplicativo usa) as permissões para ler o bucket do Cloud Storage. Nesse caso, a conta de serviço é a identidade a que você está concedendo permissões para outro recurso (o bucket do Cloud Storage).

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 representaçã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.

O papel de Agente da conta de serviço

Este papel está obsoleto. Caso precise executar as operações como conta de serviço, use o papel de Usuário da conta de serviço. Para fornecer de maneira efetiva as mesmas permissões do Agente da conta de serviço, você também precisa conceder o Criador de token da conta de serviço.

Escopos de acesso

Os escopos de acesso são o método legado de especificar permissões para sua VM. Quando não havia papéis do IAM, os escopos de acesso eram a única forma de conceder permissões a contas de serviço. Eles já não são a principal maneira de configurar as permissões, mas ainda é necessário defini-los ao configurar uma instância para ser executada como conta de serviço. Para informações sobre os escopos de acesso, consulte a documentação do Google 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

As credenciais padrão do aplicativo são um mecanismo para facilitar o uso de contas de serviço dentro e fora do Google Cloud, bem como em vários projetos do Google Cloud. O caso de uso mais comum é testar o código em uma máquina local e, em seguida, mudar para um projeto de desenvolvimento no Google Cloud e mudar para um projeto de produção no Google Cloud. O uso do Application Default Credentials garante que a conta de serviço funcione perfeitamente. Ao testar em sua máquina local, ele usa uma chave de conta de serviço armazenada localmente, mas ao executar no Compute Engine usa a conta de serviço padrão do Compute Engine do projeto. Consulte Application Default Credentials para saber mais informações.

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: