Esta página descreve como usar contas de serviço para permitir que as apps executadas nas suas instâncias de máquinas virtuais (VMs) se autentiquem nas APIs do Trusted Cloud by S3NS e autorizem o acesso aos recursos.
Para usar contas de serviço para autenticação, primeiro, tem de garantir que a sua VM está configurada para usar uma conta de serviço. Para isso, conclua um dos seguintes procedimentos:
- Para configurar uma conta de serviço durante a criação de VMs, consulte o artigo Crie uma VM que use uma conta de serviço gerida pelo utilizador.
- Para configurar uma conta de serviço numa VM existente, consulte o artigo Altere a conta de serviço anexada.
Antes de começar
- Reveja a vista geral das contas de serviço.
-
Se ainda não o tiver feito, configure a autenticação.
A autenticação valida a sua identidade para aceder a Trusted Cloud by S3NS serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:
Para usar os Python exemplos nesta página num ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e, em seguida, configure as Credenciais predefinidas da aplicação com as suas credenciais de utilizador.
Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada.
Create local authentication credentials for your user account:
gcloud auth application-default login
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para mais informações, consulte Set up authentication for a local development environment.
Vista geral
Depois de configurar uma instância de VM para ser executada com uma conta de serviço, uma aplicação executada na instância de VM pode usar um dos seguintes métodos para autenticação:
- Para a maioria das aplicações, escolha uma das seguintes opções:
- Para aplicações que requerem uma chave de acesso OAuth2, peça e use chaves de acesso diretamente do servidor de metadados
Autenticar aplicações através de credenciais de contas de serviço
Depois de configurar uma instância para ser executada como uma conta de serviço, pode usar as credenciais da conta de serviço para autenticar as aplicações executadas na instância.
Autenticar aplicações com uma biblioteca de cliente
As bibliotecas cliente podem usar as Credenciais padrão da aplicação para fazer a autenticação em APIs Google e enviar pedidos para essas APIs. As Credenciais predefinidas da aplicação permitem que as aplicações obtenham automaticamente credenciais de várias origens para que possa testar a sua aplicação localmente e, em seguida, implementá-la numa instância do Compute Engine sem alterar o código da aplicação.
Para obter informações sobre a configuração das Credenciais padrão da aplicação, consulte o artigo Forneça credenciais às Credenciais padrão da aplicação.
Este exemplo usa a biblioteca cliente Python para autenticar e fazer um pedido à API Cloud Storage para listar os contentores num projeto. O exemplo usa o seguinte procedimento:
- Obtenha as credenciais de autenticação necessárias para a API Cloud Storage
e inicialize o serviço Cloud Storage com o método
build()
e as credenciais. - Listar contentores no Cloud Storage.
Pode executar este exemplo numa instância que tenha acesso à gestão de contentores no Cloud Storage.
Autenticar aplicações diretamente com tokens de acesso
Para a maioria das aplicações, pode autenticar-se através das Credenciais padrão da aplicação, que encontram credenciais e gerem tokens por si. No entanto, se a sua aplicação exigir que faculte uma chave de acesso OAuth2, o Compute Engine permite-lhe obter uma chave de acesso do respetivo servidor de metadados para utilização na sua aplicação.
Existem várias opções para obter e usar estes tokens de acesso para autenticar as suas aplicações. Por exemplo, pode usar curl
para criar um pedido simples ou usar uma linguagem de programação como Python para ter mais flexibilidade.
cURL
Para usar a curl
para pedir um token de acesso e enviar um pedido a uma API:
Na instância onde a sua aplicação é executada, consulte o servidor de metadados para um token de acesso executando o seguinte comando:
$ curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \ -H "Metadata-Flavor: Google"
O pedido devolve uma resposta semelhante à seguinte:
{ "access_token":"ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_QtAS08i85nHq39HE3C2LTrCARA", "expires_in":3599, "token_type":"Bearer" }
Para pedidos de API, tem de incluir o valor
access_token
e não a resposta completa. Se tiver o processador JSON de linha de comandos jq instalado, pode usar o seguinte comando para extrair o valor do token de acesso da resposta:$ ACCESS_TOKEN=`curl \ "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \ -H "Metadata-Flavor: Google" | jq -r '.access_token'`
Copie o valor da propriedade
access_token
da resposta e use-o para enviar pedidos à API. Por exemplo, o seguinte pedido imprime uma lista de instâncias no seu projeto a partir de uma determinada zona:$ curl https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances \ -H "Authorization":"Bearer ACCESS_TOKEN"
Substitua o seguinte:
PROJECT_ID
: o ID do projeto para este pedido.ZONE
: a zona a partir da qual listar as VMs.ACCESS_TOKEN
: o valor da chave de acesso que obteve no passo anterior.
Para obter informações sobre os parâmetros que pode definir no seu pedido, consulte a documentação Parâmetros do sistema.
Python
Este exemplo demonstra como pedir um token para aceder à API Cloud Storage numa aplicação Python. O exemplo usa o seguinte procedimento:
- Peça um token de acesso ao servidor de metadados.
- Extraia o token de acesso da resposta do servidor.
- Use o token de acesso para fazer um pedido ao Cloud Storage.
- Se o pedido for bem-sucedido, o script imprime a resposta.
As chaves de acesso expiram após um curto período. O servidor de metadados armazena em cache os tokens de acesso até terem 5 minutos de tempo restante antes de expirarem. Se não for possível colocar os tokens em cache, os pedidos que excedam 50 consultas por segundo podem ser limitados pela taxa. As suas aplicações têm de ter um token de acesso válido para que as chamadas à API sejam bem-sucedidas.
Autenticar ferramentas numa instância através de uma conta de serviço
Algumas aplicações podem usar comandos da CLI gcloud, que está
incluída por predefinição na maioria das imagens do Compute Engine. A CLI gcloud reconhece automaticamente a conta de serviço de uma instância e as autorizações relevantes concedidas à conta de serviço. Especificamente, se conceder as funções corretas à conta de serviço, pode usar a CLI gcloud a partir das suas instâncias sem ter de usar gcloud auth login
.
Este reconhecimento da conta de serviço ocorre automaticamente e aplica-se apenas à CLI gcloud incluída na instância. Se criar novas ferramentas ou adicionar ferramentas personalizadas, tem de autorizar a sua aplicação através de uma biblioteca cliente ou usando tokens de acesso diretamente na sua aplicação.
Para tirar partido do reconhecimento automático da conta de serviço,
conceda as funções de IAM adequadas
à conta de serviço e
anexe a conta de serviço à instância.
Por exemplo, se conceder à conta de serviço a função roles/storage.objectAdmin
, a CLI gcloud pode gerir e aceder automaticamente a objetos do Cloud Storage.
Da mesma forma, se ativar a opção roles/compute.instanceAdmin.v1
para a conta de serviço, a ferramenta gcloud compute
pode gerir automaticamente as instâncias.
O que se segue?
- Autenticar cargas de trabalho noutras cargas de trabalho através de mTLS .
- Saiba mais sobre as contas de serviço.
- Saiba mais sobre as autorizações e as funções de IAM do Compute Engine.
- Saiba mais sobre as práticas recomendadas para trabalhar com contas de serviço.