Simulação de identidade de conta de serviço

Quando um principal autenticado, como um utilizador ou outra conta de serviço, se autentica como uma conta de serviço para obter as autorizações da conta de serviço, chama-se roubar a identidade da conta de serviço. A utilização da identidade de uma conta de serviço permite que um principal autenticado aceda a tudo o que a conta de serviço pode aceder. Apenas os principais autenticados com as autorizações adequadas podem fazer-se passar por contas de serviço.

A representação é útil quando quer alterar as autorizações de um utilizador sem alterar as suas políticas de gestão de identidade e acesso (IAM). Por exemplo, pode usar a representação para conceder temporariamente a um utilizador acesso elevado ou para testar se um conjunto específico de autorizações é suficiente para uma tarefa. Também pode usar a representação para desenvolver localmente aplicações que só podem ser executadas como uma conta de serviço ou para autenticar aplicações que são executadas fora do Trusted Cloud.

Trusted Cloud by S3NS A personificação de contas de serviço é semelhante aos métodos da API Security Token Service (STS) do Amazon Web Services (AWS), como AssumeRole.

Como funciona a representação de contas de serviço

A utilização da identidade de uma conta de serviço envolve sempre duas identidades: um principal autenticado e a conta de serviço cuja identidade o principal usa. Para se fazer passar pela conta de serviço, o principal autenticado recebe um token para a conta de serviço e, em seguida, usa esse token para se autenticar como a conta de serviço.

Existem várias formas de usar a identidade de uma conta de serviço:

  • Defina a flag --impersonate-service-account ou a propriedade impersonate-service-account quando executar um comando da Google Cloud CLI. Quando executa um comando da CLI gcloud com esta definição, a CLI gcloud cria credenciais de curta duração para a conta de serviço e, em seguida, executa o comando com essas credenciais.

    Também pode usar a flag --impersonate-service-account quando configurar o ficheiro de credenciais padrão da aplicação. Esta configuração permite que as bibliotecas de cliente que suportam a representação se façam passar automaticamente pela conta de serviço.

  • Crie credenciais de curta duração através da API de credenciais da conta de serviço e, em seguida, use essas credenciais para autenticar um pedido de API.

    As credenciais de curta duração têm um tempo de vida limitado, com durações de apenas algumas horas ou menos, e não são atualizadas automaticamente. Criarem menos riscos do que as credenciais de longa duração, como as chaves de contas de serviço.

  • Use um ficheiro de configuração de credenciais para configurar uma aplicação externa para se fazer passar por uma conta de serviço. Esta opção só está disponível para aplicações que usam a federação de identidades da carga de trabalho.

    Quando uma aplicação usa um ficheiro de configuração de credenciais para aceder ao Trusted Cloud, usa primeiro as respetivas credenciais específicas do ambiente para obter uma credencial de curta duração para uma conta de serviço designada. Em seguida, usa essa credencial de curta duração para se autenticar no Trusted Cloud.

Se um principal aceder a recursos enquanto se faz passar por uma conta de serviço, a maioria dos registos de auditoria inclui a respetiva identidade e a identidade da conta de serviço pela qual se está a fazer passar. Para mais informações, consulte o artigo Interpretar registos de auditoria.

Quando usa a consola Trusted Cloud , autentica sempre com as suas credenciais de utilizador. Não pode roubar a identidade de uma conta de serviço para aceder a recursos na consolaTrusted Cloud .

Autenticação sem roubo de identidade

Existem várias formas de uma carga de trabalho ou um utilizador se autenticar como uma conta de serviço sem se fazer passar pela conta de serviço:

  • Uma carga de trabalho usa uma conta de serviço anexada para se autenticar nas APIs Google. Neste caso, a conta de serviço anexada atua como a identidade da carga de trabalho e é a única identidade autenticada envolvida no pedido.

    Para saber como as cargas de trabalho se autenticam no Trusted Cloud by S3NS, consulte o artigo Identidades para cargas de trabalho.

  • Um principal usa uma chave de conta de serviço para fazer a autenticação como uma conta de serviço. A utilização de uma chave de conta de serviço para fazer a autenticação como uma conta de serviço envolve apenas uma identidade autenticada: a da conta de serviço. Uma vez que só existe uma identidade envolvida, a utilização de uma chave não é uma representação da conta de serviço.

Nestes casos, os registos de auditoria registam apenas a identidade da conta de serviço. Não registam outras identidades, por exemplo, as identidades dos utilizadores que executaram código na carga de trabalho ou as identidades das pessoas que usaram a chave da conta de serviço para autenticar. Como resultado, a utilização de chaves de contas de serviço ou a concessão de autorização aos programadores para executar código em recursos privilegiados, por exemplo, uma sessão SSH numa instância de VM, pode criar riscos de escalada de privilégios e de não repúdio.

Autorizações necessárias

Para usar a identidade de uma conta de serviço, precisa da autorização iam.serviceAccounts.getAccessToken. Esta autorização está em funções como a função de criador de tokens de contas de serviço (roles/iam.serviceAccountTokenCreator).

Para mais informações sobre as funções necessárias para a representação, consulte o artigo Funções para a autenticação de contas de serviço.

Exemplos de utilização da simulação de contas de serviço

A utilização da identidade de uma conta de serviço é útil quando precisa de realizar tarefas como as seguintes:

  • Conceda a um utilizador acesso elevado temporário
  • Teste se um conjunto específico de autorizações é suficiente para uma tarefa
  • Desenvolver localmente aplicações que só podem ser executadas como uma conta de serviço
  • Autentique aplicações externas

Conceda acesso elevado temporário

Em alguns casos, pode querer permitir que um utilizador aceda a recursos específicos temporariamente. Por exemplo, pode querer conceder a alguém acesso adicional para que possa resolver um incidente ou permitir que alguém aceda a dados confidenciais durante um período limitado depois de registar uma justificação.

A representação de contas de serviço é uma das formas de conceder aos utilizadores este acesso temporário elevado. Para usar uma conta de serviço para acesso temporário elevado, primeiro, concede-lhe as funções de IAM que quer dar temporariamente aos utilizadores. Em seguida, permite que os utilizadores usem a identidade da conta de serviço, concedendo-lhes autorização para usar a identidade da conta de serviço ou usando um agente de tokens para emitir uma credencial de curta duração para a conta de serviço.

Para saber mais sobre os métodos para conceder aos utilizadores acesso elevado temporário, consulte a vista geral do acesso elevado temporário.

Teste as autorizações

Em alguns casos, pode querer verificar se um conjunto específico de autorizações é suficiente para uma tarefa. Por exemplo, pode querer confirmar que uma conta de serviço ainda pode executar uma aplicação se remover determinadas autorizações excessivas. Em alternativa, pode estar a ajudar um utilizador a resolver problemas de uma tarefa e querer verificar se consegue executar um determinado comando com as respetivas funções da IAM atuais.

Pode usar a representação da conta de serviço para testar um conjunto específico de autorizações. Primeiro, crie uma conta de serviço e conceda-lhe um ou mais papéis do IAM com as autorizações que quer testar. Em seguida, use a identidade da conta de serviço e tente executar a tarefa. Este método permite-lhe testar autorizações sem ter de criar contas de utilizadores de teste nem modificar as suas próprias autorizações do IAM.

Para saber como usar a identidade de contas de serviço, consulte o artigo Use a identidade de contas de serviço.

Desenvolva aplicações localmente

Quando desenvolve aplicações localmente, normalmente, pode autenticar-se através das suas credenciais de utilizador. No entanto, em algumas situações, isso pode não ser possível. Por exemplo, se quiser autenticar um serviço que requer um token com um público-alvo personalizado, que os utilizadores normalmente não podem configurar. Nestes casos, tem de se autenticar como uma conta de serviço em vez de se autenticar com as suas credenciais de utilizador.

Para estas situações, recomendamos a utilização da simulação da conta de serviço. A utilização da representação de conta de serviço permite-lhe evitar a utilização de chaves de conta de serviço, o que cria um risco de segurança adicional.

Para saber como usar a identidade de contas de serviço para desenvolver aplicações, consulte o artigo Usar a identidade de contas de serviço.

Autentique aplicações externas

Para aceder a Trusted Cloud recursos, as aplicações executadas fora doTrusted Cloud têm de ser autenticadas no Trusted Cloud. Uma forma de autenticar estas aplicações é usar a simulação da conta de serviço.

Para permitir que a sua aplicação se faça passar por uma conta de serviço, primeiro tem de configurar a federação de identidades da carga de trabalho, que fornece uma identidade autenticada para a sua aplicação. Em seguida, pode usar um ficheiro de configuração de credenciais para configurar a sua aplicação de modo a roubar a identidade de uma conta de serviço.

Embora seja possível usar chaves de contas de serviço para autenticar aplicações externas, recomendamos vivamente que não o faça. As chaves de contas de serviço criam um risco de segurança adicional e devem ser evitadas sempre que possível.

O que se segue?