Este documento descreve como autenticar no Compute Engine de maneira programática. A forma como você se autentica no Compute Engine depende da interface usada para acessar a API e do ambiente em que seu código está sendo executado.
Se você precisar revisar as diferentes opções de autenticação de aplicativos e cargas de trabalho em execução no Compute Engine para Google Cloud API, consulte Escolha um método de autenticação de carga de trabalho .Para mais informações sobre Google Cloud autenticação, consulte Métodos de autenticação .
Acesso à API
O Compute Engine oferece suporte ao acesso programático. Você pode acessar a API das seguintes maneiras:
Bibliotecas de cliente
As bibliotecas cliente do Compute Engine oferecem suporte de linguagem de alto nível para autenticação no Compute Engine de forma programática. Para autenticar chamadas para Google Cloud APIs e bibliotecas de clientes suportam Application Default Credentials (ADC) ; as bibliotecas procuram credenciais em um conjunto de locais definidos e usam essas credenciais para autenticar solicitações à API. Com o ADC, você pode disponibilizar credenciais para seu aplicativo em diversos ambientes, como desenvolvimento local ou produção, sem precisar modificar o código do seu aplicativo.
CLI do Google Cloud
Ao usar a CLI gcloud para acessar o Compute Engine, você faz login na CLI gcloud com uma conta de usuário, que fornece as credenciais usadas pelos comandos da CLI gcloud.
Se as políticas de segurança da sua organização impedirem que as contas de usuário tenham as permissões necessárias, você poderá usar a representação de conta de serviço .
Para obter mais informações, consulte Autenticar para usar a CLI gcloud . Para obter mais informações sobre como usar a CLI gcloud com o Compute Engine, consulte as páginas de referência da CLI gcloud .
DESCANSAR
Você pode se autenticar na API Compute Engine usando suas credenciais da CLI gcloud ou usando Application Default Credentials . Para obter mais informações sobre autenticação para solicitações REST, consulte Autenticar para usar REST . Para obter informações sobre os tipos de credenciais, consulte credenciais CLI gcloud e credenciais ADC .
Configurar a autenticação para o Compute Engine
A forma como você configura a autenticação depende do ambiente em que seu código está sendo executado.
As opções a seguir para configurar a autenticação são as mais usadas. Para obter mais opções e informações sobre autenticação, consulte Métodos de autenticação .
Para um ambiente de desenvolvimento local
Você pode configurar credenciais para um ambiente de desenvolvimento local das seguintes maneiras:
- Credenciais de usuário para bibliotecas cliente ou ferramentas de terceiros
- Credenciais do usuário para solicitações REST da linha de comando
- Representação de conta de serviço
Bibliotecas de cliente ou ferramentas de terceiros
Configure Application Default Credentials (ADC) em seu ambiente local:
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.
Uma tela de login é exibida. Depois de entrar, suas credenciais serão armazenadas no arquivo de credenciais locais usado pelo ADC .
Para obter mais informações sobre como trabalhar com o ADC em um ambiente local, consulte Configurar o ADC para um ambiente de desenvolvimento local .
Solicitações REST da linha de comando
Ao fazer uma solicitação REST na linha de comando, você pode usar suas credenciais da CLI gcloud incluindo gcloud auth print-access-token
como parte do comando que envia a solicitação.
O exemplo a seguir lista as contas de serviço do projeto especificado. Você pode usar o mesmo padrão para qualquer solicitação REST.
Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:
- PROJECT_ID : seu Google Cloud ID do projeto.
Para enviar sua solicitação, expanda uma destas opções:
Para obter mais informações sobre autenticação usando REST e gRPC, consulte Autenticar para usar REST . Para obter informações sobre a diferença entre suas credenciais ADC locais e suas credenciais CLI gcloud, consulte Configuração de autenticação CLI gcloud e Configuração ADC .
Representação de conta de serviço
Na maioria dos casos, você pode usar suas credenciais de usuário para autenticar em um ambiente de desenvolvimento local. Se isso não for viável ou se você precisar testar as permissões atribuídas a uma conta de serviço, poderá usar a representação da conta de serviço. Você deve ter a permissão iam.serviceAccounts.getAccessToken
, que está incluída na função do IAM Criador de token de conta de serviço ( roles/iam.serviceAccountTokenCreator
).
Você pode configurar a CLI gcloud para usar a personificação da conta de serviço usando o comando gcloud config set
:
gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL
Para idiomas selecionados, você pode usar a representação de conta de serviço para criar um arquivo ADC local para uso por bibliotecas cliente. Essa abordagem é compatível apenas com as bibliotecas cliente Go, Java, Node.js e Python; ela não é compatível com outras linguagens. Para configurar um arquivo ADC local com representação de conta de serviço, use a sinalização --impersonate-service-account
com o comando gcloud auth application-default login
:
gcloud auth application-default login --impersonate-service-account=SERVICE_ACCT_EMAIL
Para obter mais informações sobre representação de conta de serviço, consulte Usar representação de conta de serviço .
Sobre Google Cloud
Para autenticar uma carga de trabalho em execução Google Cloud, você usa as credenciais da conta de serviço anexada ao recurso de computação em que seu código está em execução, como uma instância de máquina virtual (VM) do Compute Engine . Esta abordagem é o método de autenticação preferido para código executado em um Google Cloud recurso computacional.
Para a maioria dos serviços, você deve anexar a conta de serviço ao criar o recurso que executará seu código; você não poderá adicionar ou substituir a conta de serviço posteriormente. O Compute Engine é uma exceção: permite anexar uma conta de serviço a uma instância de VM a qualquer momento.
Use a CLI gcloud para criar uma conta de serviço e anexá-la ao seu recurso:
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
Set up authentication:
-
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
To provide access to your project and your resources, grant a role to the service account:
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE
Replace the following:
SERVICE_ACCOUNT_NAME
: the name of the service accountPROJECT_ID
: the project ID where you created the service accountROLE
: the role to grant
- To grant another role to the service account, run the command as you did in the previous step.
-
Grant the required role to the principal that will attach the service account to other resources.
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser
Replace the following:
SERVICE_ACCOUNT_NAME
: the name of the service accountPROJECT_ID
: the project ID where you created the service accountUSER_EMAIL
: the email address for a Google Account
-
Crie o recurso que executará seu código e anexe a conta de serviço a esse recurso. Por exemplo, se você usa o Compute Engine:
Create a Compute Engine instance. Configure the instance as follows:-
Substitua
INSTANCE_NAME
pelo nome de instância de sua preferência. -
Defina a sinalização
--zone
com a zona onde será criada a instância. -
Defina a sinalização
--service-account
como o endereço de e-mail da conta de serviço que você criou.
gcloud compute instances create INSTANCE_NAME --zone=ZONE --service-account=SERVICE_ACCOUNT_EMAIL
-
Substitua
Para obter mais informações sobre autenticação nas APIs do Google, consulte Métodos de autenticação .
No local ou em um provedor de nuvem diferente
O método preferido para configurar a autenticação fora do Google Cloud é usar a federação de identidade da carga de trabalho. Para obter mais informações, consulte Configurar o ADC para local ou outro provedor de nuvem na documentação de autenticação.
Controle de acesso para Compute Engine
Depois de se autenticar no Compute Engine, você precisará ter autorização para acessar Google Cloud recursos. O Compute Engine usa o gerenciamento de identidade e acesso (IAM) para autorização.
Para mais informações sobre os papéis do Compute Engine, consulte Funções e permissões do IAM do Compute Engine . Para obter mais informações sobre o IAM e autorização, consulte Visão geral do IAM .
O que vem a seguir
- Para aplicativos e cargas de trabalho em execução no Compute Engine, revise os métodos de autenticação de carga de trabalho .
- Saiba mais sobre Google Cloud métodos de autenticação .
- Veja uma lista de casos de uso de autenticação .