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?

Conta de serviço é uma conta especial do Google que pertence ao aplicativo ou a uma máquina virtual (VM, na sigla em inglês) e não ao usuário final. O aplicativo usa a conta de serviço para chamar a API de um serviço do Google, assim os usuários não são diretamente envolvidos.

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 da conta de serviço controlam quais recursos podem ser acessados por ele.

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

Chaves da conta de serviço

Cada conta de serviço está associada a um par de chaves, gerenciado pelo Google Cloud Platform (GCP). Esse par é usado para fazer a autenticação serviço a serviço dentro do GCP. O Google troca as chaves diariamente.

Como opção, você pode criar um ou mais pares de chaves externas para usar fora do GCP, por exemplo, com o Application Default Credentials. Ao criar um par, você faz o download da chave privada, que não é retida pelo Google. Com as chaves externas, você é o responsável pela segurança da chave privada e por outras operações de gerenciamento, por exemplo, a troca das chaves. As chaves externas são gerenciadas por meio da IAM API, da ferramenta de linha de comando gcloud ou da página "Contas de serviço" do Console do Google Cloud Platform. É possível criar até 10 chaves por conta de serviço para facilitar a troca das chaves.

Tipos de contas de serviço

Contas de serviço gerenciadas por usuários

Se você criar um novo projeto do Cloud usando o Console do GCP e a Compute Engine API estiver ativada para o projeto, uma conta de serviço do Compute Engine será criada para você por padrão. Ela pode ser identificada 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 é 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

Você pode 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. Para isso, use a IAM API, o Console do GCP 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 pelo usuário, é possível que você encontre outras contas de serviço na política do IAM do projeto ou no Console do GCP. Essas contas são criadas pelo Google e pertencem a ele. Elas representam diferentes serviços do Google. A cada uma delas são concedidos automaticamente papéis do IAM para acessar o projeto do GCP.

Conta de serviço das APIs do Google

Um exemplo de conta de serviço gerenciada pelo Google é uma conta de serviço da Google API 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 nome do usuário e não está listada na seção Contas de serviço do Console do GCP. Por padrão, a conta recebe automaticamente o papel de editor no projeto e está listada na seção IAM do Console do GCP. 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 da conta de serviço

Além de ser uma identidade, a conta de serviço é um recurso com políticas de IAM anexadas. 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 atribuir papéis para qualquer outro recurso do GCP.

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

Para que um intervalo do Cloud Storage possa ser acessado pela automatização, é necessário que a conta de serviço usada tenha as permissões para ler esse intervalo. Nesse caso, a conta de serviço é a identidade à qual você está concedendo permissões para outro recurso (o intervalo do Cloud Storage).

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

O papel iam.serviceAccountUser pode ser atribuído no nível de projeto para todas as contas de serviço do projeto ou no nível da conta de serviço.

  • Atribuir o papel iam.serviceAccountUser a um usuário de um projeto concede acesso a todas as contas de serviço desse projeto, incluindo aquelas criadas posteriormente.

  • Atribuir o papel iam.serviceAccountUser a um usuário de uma conta de serviço específica concede acesso de usuário à conta de serviço.

Se você conceder a um usuário o papel compute.instanceAdmin com o papel iam.serviceAccountUser, ele pode criar e gerenciar instâncias do Compute Engine que usam uma conta de serviço.

Após conceder os papéis de IAM às contas de serviço, é possível atribuir a conta a uma ou mais instâncias novas da máquina virtual. Para instruções, consulte Como configurar uma nova instância para ser executada como conta de serviço.

Os usuários que são serviceAccountUsers podem usar a conta de serviço para acessar indiretamente todos os recursos aos quais a conta de serviço tem acesso. Por exemplo, um usuário que é um serviceAccountUser pode iniciar uma instância usando a conta de serviço. Ele pode então usar a instância para acessar tudo que a identidade da conta de serviço tiver acesso. No entanto, o papel serviceAccountUser não permite que um usuário utilize diretamente os papéis da conta de serviço. Portanto, seja cauteloso ao conceder o papel iam.serviceAccountUser a um usuário.

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 IAM API 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 precisam de permissão para gerenciar ou usar contas de serviço, remova-os da Política do 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 é 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 a VM. Antes dos papéis de IAM, eles eram o único mecanismo para conceder permissões às 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.

Application Default Credentials

O Application Default Credentials é um mecanismo que facilita o uso das contas de serviço nas operações internas e externas, bem como entre vários projetos do GCP. O caso de uso mais comum é testar um código em uma máquina local, depois movê-lo para um projeto em desenvolvimento no GCP e movê-lo para um projeto em produção no GCP. O uso do Application Default Credentials garante que a conta de serviço funcione perfeitamente, ou seja, que ela use uma chave de conta de serviço armazenada localmente ao testar em sua máquina local, mas use a conta de serviço padrão do Compute Engine do projeto ao ser executado no Compute Engine. Para mais informações, consulte Application Default Credentials.

Próximos passos

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:

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Cloud IAM