Autorizar solicitações para o Google Compute Engine

Ao utilizar a Compute Engine API para gerenciar seus recursos, você consegue autenticar os aplicativos recebendo credenciais de uma conta de serviço do Compute Engine. Com as contas de serviço, é possível permitir que a autenticação do aplicativo seja feita na API, sem a incorporação de chaves secretas no respectivo código.

As contas de serviço são recomendadas para a maioria das situações em que o aplicativo precisa autorizar solicitações à API. No entanto, caso esteja criando ferramentas de desenvolvimento ou administração em que os usuários concedam acesso aos recursos do Google Cloud, use um fluxo de autorização do usuário.

A maneira mais simples de receber credenciais de uma conta de serviço é por meio de uma biblioteca de cliente do Compute Engine e de credenciais padrão de aplicativos. Com esses pacotes, o aplicativo recebe credenciais de uma das diversas origens disponíveis, dependendo do local em que ele é executado.

Aplicativos executados em instâncias do Compute Engine

Ao executar aplicativos nas instâncias do Compute Engine, as credenciais padrão do aplicativo recebem credenciais por meio de contas de serviço internas. Leia Como criar e ativar contas de serviço para instâncias para configurar instâncias com essas contas de serviço internas e executar o aplicativo em uma instância do Compute Engine.

Aplicativos executados fora do Google Cloud Platform

Para executar aplicativos em sistemas fora do Google Cloud Platform, seus aplicativos podem usar o Application Default Credentials para receber as credenciais das variáveis de ambiente nesses sistemas. Consulte Como o Application Default Credentials funciona para configurar suas variáveis de ambiente com as credenciais necessárias.

Aplicativos em desenvolvimento

Quando você desenvolve os aplicativos no local, é possível usar as informações de auth application-default login na ferramenta gcloud para receber temporariamente as credenciais para o aplicativo. Este comando é útil para quando você está desenvolvendo um código que normalmente usaria uma conta de serviço, mas você precisa executá-lo em um ambiente de desenvolvimento local e é mais fácil fornecer credenciais de usuários. As credenciais serão aplicadas a todas as chamadas de API que façam uso da biblioteca de clientes do Application Default Credentials.

  1. Instale a ferramenta gcloud nos sistemas de desenvolvimento.

  2. Forneça as credenciais à ferramenta com o comando gcloud auth application-default login.

As credenciais são enviadas da ferramenta para o aplicativo. Em seguida, ele pode ser implantado nas instâncias do Compute Engine. Essa implantação pode ser feita nas instâncias do Compute Engine em que as credenciais são automaticamente concedidas ao aplicativo a partir das contas de serviço integradas ou em outros sistemas com credenciais especificadas nas respectivas variáveis de ambiente.

Exemplo: como autenticar usando Application Default Credentials

Este exemplo usa a Python Client Library para autenticar e faz uma solicitação à Cloud Storage API para listar os repositórios em um projeto. O exemplo usa o seguinte procedimento:

  1. Adquira as credenciais de autenticação necessárias para a API do Cloud Storage e inicialize o serviço do Cloud Storage com o método build() e as credenciais.
  2. Liste os intervalos no Cloud Storage.

Você pode executar essa amostra em uma instância que tenha acesso para gerenciar intervalos no Google Cloud Storage, em sua máquina local depois de executar o comando gcloud auth application-default login ou depois de definir uma variável de ambiente para usar o Application Default Credentials.

import argparse

import googleapiclient.discovery

def create_service():
    # Construct the service object for interacting with the Cloud Storage API -
    # the 'storage' service, at version 'v1'.
    # Authentication is provided by application default credentials.
    # When running locally, these are available after running
    # `gcloud auth application-default login`. When running on Compute
    # Engine, these are available from the environment.
    return googleapiclient.discovery.build('storage', 'v1')

def list_buckets(service, project_id):
    buckets = service.buckets().list(project=project_id).execute()
    return buckets

def main(project_id):
    service = create_service()
    buckets = list_buckets(service, project_id)
    print(buckets)

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument('project_id', help='Your Google Cloud Project ID.')

    args = parser.parse_args()

    main(args.project_id)

Como acessar recursos do Google Cloud de usuários do aplicativo

Se você está promovendo o desenvolvimento ou o uso de ferramentas de administração, cujo acesso aos recursos do Google Cloud é concedido a você pelos usuários, receba a autorização por meio de um processo básico do OAuth 2.0. Esse processo requer que seus usuários concedam acesso a você às informações deles por meio de um fluxo de autorização de usuários. Quando o aplicativo recebe acesso, os recursos do Compute Engine no projeto do usuário são visualizados ou modificados nesse projeto.

Na solicitação, especifique um escopo que limite o acesso apenas a métodos e informações do usuário exigidos pelo aplicativo. Por exemplo, especifique o escopo compute.readonly quando os recursos do Compute Engine forem visualizados pelo aplicativo, mas não crie ou modifique nenhum recurso para os usuários.

Escopo Significado
https://www.googleapis.com/auth/cloud-platform Acesso total a todos os recursos e serviços no projeto do Cloud Platform especificado.
https://www.googleapis.com/auth/compute Acesso de leitura/gravação aos métodos do Google Compute Engine.
https://www.googleapis.com/auth/compute.readonly Acesso de somente leitura aos métodos do Google Compute Engine.
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Compute Engine