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 Cloud 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.

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 Cloud IAM podem ser concedidas para permitir que outros usuários (ou outras 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 G Suite, ao contrário das contas de usuário. Por exemplo, se você compartilhar recursos com todos os membros no domínio do G Suite, eles não serão compartilhados com contas de serviço. Da mesma maneira, os recursos criados por uma conta de serviço não podem pertencer nem ser gerenciados pelos administradores do G Suite.

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 Cloud 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.

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 Cloud 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 por usuários

Quando você cria um novo projeto do Google Cloud usando o Console do Cloud, se a API Compute Engine estiver ativada para seu projeto, uma conta de serviço do Compute Engine será criada por padrão. Ela é identificável pelo e-mail:

PROJECT_NUMBER-compute@developer.gserviceaccount.com

Se o projeto contiver um aplicativo do App Engine, a conta de serviço padrão do App Engine será criada em seu projeto por padrão. Ela pode ser identificada pelo e-mail:

PROJECT_ID@appspot.gserviceaccount.com

Se você criar uma conta de serviço em seu projeto, nomeará a conta do serviço e a ela será atribuído um e-mail com o seguinte formato:

SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

É possível criar até 100 contas de serviço por projeto, incluindo a conta de serviço padrão do Compute Engine e a conta de serviço do App Engine, usando a API IAM, o Console do Cloud ou a ferramenta de linha de comando gcloud. Essas contas padrão e as que foram criadas de maneira explícita são gerenciadas pelo usuário.

Contas de serviço gerenciadas pelo Google

Além das contas de serviço gerenciadas pelos usuários, você poderá ver algumas contas de serviço adicionais na política de IAM do projeto ou no Console do Cloud. Elas são criadas pelo Google e pertencem a ele. Essas contas representam diferentes serviços do Google, e cada conta recebe automaticamente papéis do IAM para acessar o projeto do Google Cloud.

Conta de serviço das APIs do Google

Um exemplo de conta de serviço gerenciada pelo Google é uma conta de serviço das APIs do Google identificável pelo e-mail:

PROJECT_NUMBER@cloudservices.gserviceaccount.com

Essa conta de serviço foi projetada especificamente para executar processos internos do Google em seu nome e não está listada na seção Contas de serviço do Console do Cloud. Por padrão, a conta recebe automaticamente o papel de editor de projeto no projeto e está listada na seção IAM do Console do Cloud. Essa conta só é excluída quando o mesmo ocorre com o projeto. Os serviços do Google dependem do acesso ao projeto, portanto, não remova nem altere o papel da conta.

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 intervalo do Cloud Storage, conceda à conta de serviço (que seu aplicativo usa) as permissões para ler o intervalo do Cloud Storage. Nesse caso, a conta de serviço é a identidade a que você está concedendo permissões para outro recurso (o intervalo 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 configurar a propriedade e o acesso a uma 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 Cloud IAM para gerenciar e usar as contas de serviço e pelas pessoas que têm chaves externas privadas. As práticas recomendadas para garantir a segurança incluem o seguinte:

  • Use a API Cloud IAM para fazer a auditoria das contas de serviço e das chaves e políticas contidas nelas.
  • 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 aplicável do Cloud IAM.

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, é possível conceder acesso de emergência temporário. Como alternativa, uma conta de serviço designada com permissões restritas pode ser personificada por um autor de chamada externo sem que ele precise das credenciais da conta de serviço altamente privilegiadas.

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

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: