Criar uma VM que use uma conta de serviço gerenciada pelo usuário (original) (raw)

Neste documento, explicamos como criar uma instância de máquina virtual (VM) configurada para usar uma conta de serviço gerenciada pelo usuário. Uma conta de serviço é um tipo especial de conta normalmente usada por um aplicativo ou uma carga de trabalho de computação para fazer chamadas de API autorizadas.

As contas de serviço são necessárias nos cenários em que uma carga de trabalho, como um aplicativo personalizado, precisa acessar recursos do Google Cloud ou executar ações sem o envolvimento do usuário final. Para mais informações sobre quando usar contas de serviço, consulte Práticas recomendadas para usar contas de serviço.

Se você tiver aplicativos que precisam fazer chamadas para as APIs do Google Cloud , o Google recomenda anexar uma conta de serviço gerenciada pelo usuário à VM em que o aplicativo ou a carga de trabalho está sendo executado. Em seguida, você concede à conta de serviço papéis do IAM, o que dá à conta de serviço e, por extensão, aos aplicativos em execução na VM, acesso aos recursos doGoogle Cloud .

Antes de começar

Console

When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

gcloud

  1. Instale a CLI do Google Cloud. Após a instalação,inicialize a CLI do Google Cloud executando o seguinte comando:
    gcloud init
    Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
  2. Set a default region and zone.

Terraform

Para usar os exemplos do Terraform desta página em um ambiente de desenvolvimento local, instale e inicialize a gcloud CLI e configure o Application Default Credentials com suas credenciais de usuário.
Instale a CLI do Google Cloud.
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
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, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Saiba mais em Set up authentication for a local development environment.

REST

Para usar as amostras da API REST desta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Instale a CLI do Google Cloud.
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .

Funções exigidas

Para receber as permissões necessárias para criar VMs que usam contas de serviço, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esses papéis predefinidos contêm as permissões necessárias para criar VMs que usam contas de serviço. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para criar VMs que usam contas de serviço:

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Informações gerais

É recomendável configurar contas de serviço para suas VMs da seguinte maneira:

  1. Crie uma nova conta de serviço gerenciada pelo usuário em vez de usar a conta de serviço padrão do Compute Engine e conceda papéis do IAM a essa conta de serviço apenas para os recursos e operações de que ela precisa.
  2. Anexe a conta de serviço à VM.
  3. Defina o escopo do Cloud Platform (https://www.googleapis.com/auth/cloud-platform) na sua VM. Isso permite que a conta de serviço da VM chame as APIs Google Cloud que ela tem permissão para usar.
    • Se você especificar a conta de serviço usando o console Google Cloud , defina o escopo de acesso da conta de serviço como Permitir acesso total a todas as APIs do Cloud.
    • Se você especificar a conta de serviço usando a Google Cloud CLI ou a API Compute Engine, poderá usar o parâmetro scopes para definir o escopo de acesso.

Configurar uma conta de serviço

Crie uma conta de serviço e atribua os papéis do IAM necessários. Atribua quantos papéis do IAM forem necessários. É possível modificar os papéis do IAM na sua conta de serviço conforme necessário.

O Google recomenda limitar os privilégios das contas de serviço e verificar regularmente as permissões delas para garantir que estejam atualizadas.

Use um dos métodos a seguir para configurar a conta de serviço.

Console

Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles.

  1. In the Google Cloud console, go to the Create service account page.
    Go to Create service account
  2. Select your project.
  3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
    In the Service account description field, enter a description. For example,Service account for quickstart.
  4. Click Create and continue.
  5. Grant the required roles to the service account.
    To grant a role, find the Select a role list, then select the role.
    To grant additional roles, click Add another role and add each additional role.
  6. Click Continue.
  7. In the Service account users role field, enter the identifier for the principal that will attach the service account to other resources, such as Compute Engine instances.
    This is typically the email address for a Google Account.
  8. Click Done to finish creating the service account.

gcloud

Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles.

  1. In the Google Cloud console, go to the Create service account page.
    Go to Create service account
  2. Select your project.
  3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
    In the Service account description field, enter a description. For example,Service account for quickstart.
  4. Click Create and continue.
  5. Grant the required roles to the service account.
    To grant a role, find the Select a role list, then select the role.
    To grant additional roles, click Add another role and add each additional role.
  6. Click Continue.
  7. In the Service account users role field, enter the identifier for the principal that will attach the service account to other resources, such as Compute Engine instances.
    This is typically the email address for a Google Account.
  8. Click Done to finish creating the service account.

Terraform

Para criar uma conta de serviço, use o recursogoogle_service_account.

Lembre-se de substituir os valores do marcador de posição para account_id e os atributos display_name.

Para saber como aplicar ou remover uma configuração do Terraform, consulteComandos básicos do Terraform.

Criar uma VM e anexar a conta de serviço

Depois de criar a conta de serviço, crie uma VM e anexe a conta de serviço criada na seção anterior. Defina também o escopo de acesso da VM comocloud-platform.

Se você já tem uma VM e quer configurá-la para usar uma conta de serviço diferente, consulteAlterar a conta de serviço anexada.

Use um dos métodos a seguir para criar uma VM e anexar a conta de serviço.

Console

  1. No console do Google Cloud , acesse a página Criar uma instância.
    Acesse "Criar uma instância"
  2. Para anexar uma conta de serviço, faça o seguinte:
    1. No menu de navegação, clique em Segurança.
    2. Na lista Conta de serviço, selecione a conta de serviço que você criou.
    3. Em Escopos de acesso, selecionePermitir acesso total a todas as APIs do Cloud.
  3. Opcional: especifique outras opções de configuração. Para mais informações, consulte Opções de configuração durante a criação da instância.
  4. Para criar e iniciar a instância, clique em Criar.

gcloud

Para criar uma nova instância de VM e configurá-la para usar uma conta de serviço personalizada com a Google Cloud CLI, use ocomando gcloud compute instances create e forneça a conta de serviço e o escopo de acesso cloud-platform à instância da VM.

gcloud compute instances create VM_NAME
--service-account=SERVICE_ACCOUNT_EMAIL
--scopes=https://www.googleapis.com/auth/cloud-platform

Substitua:

Exemplo:

gcloud compute instances create example-vm
--service-account 123-my-sa@my-project-123.iam.gserviceaccount.com
--scopes=https://www.googleapis.com/auth/cloud-platform

Também é possível especificar o escopo usando o alias: --scopes=cloud-platform. Esses aliases são reconhecidos apenas pela CLI gcloud. A API e outras bibliotecas não os reconhecem. Portanto, é necessário especificar o URI de escopo completo.

Terraform

Para configurar uma nova VM para usar uma conta de serviço, use orecursogoogle_compute_instance.

REST

Use o métodoinstances.insert para criar a VM e especificar o e-mail da conta de serviço e o escopo de acesso para a instância de VM.

POST https://compute.googleapis.com/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`/instances

{ "machineType":"zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name":"VM_NAME",

"disks":[ { "initializeParams":{ "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot":true } ],

"networkInterfaces":[ { "network":"global/networks/NETWORK_NAME" } ],

"serviceAccounts": [ { "email": "SERVICE_ACCOUNT_EMAIL", "scopes": ["https://www.googleapis.com/auth/cloud-platform"] } ], "shieldedInstanceConfig":{ "enableSecureBoot":"ENABLE_SECURE_BOOT" } }

Substitua:

Acessar e usar outros serviços do Google Cloud

Depois que a VM for configurada para usar a conta de serviço, os aplicativos poderão usá-la para autenticação. O método mais comum é a autenticação usando oApplication Default Credentialse uma biblioteca de cliente. Algumas ferramentas Google Cloud , como a CLI gcloud, podem usar automaticamente a conta de serviço para acessar as APIs Google Cloud em uma VM. Para mais informações, consulte Autenticar cargas de trabalho usando contas de serviço.

Se uma conta de serviço for excluída, os aplicativos não terão mais acesso aos recursos doGoogle Cloud por meio dela. Se você excluir as contas de serviço padrão do App Engine e do Compute Engine, as instâncias não terão mais acesso aos recursos no projeto. Caso não tenha certeza se uma conta de serviço está sendo utilizada, recomendamos que você desative a conta de serviço antes de excluí-la. As contas de serviço desativadas poderão ser reativadas se ainda forem necessárias.

Exemplo: acessar os recursos do Cloud Storage pela VM

Depois de configurar a VM para usar uma conta de serviço que tenha o papel storage.admin, use ferramentas como a gcloud CLI para gerenciar os arquivos armazenados no Cloud Storage. Para acessar os recursos do Cloud Storage, faça o seguinte:

  1. Verifique se a conta de serviço anexada à sua VM tem o papel roles/storage.admin.
  2. Se a VM usar uma imagem de SO personalizada, instale a CLI gcloud. Por padrão, a CLI gcloud é instalada na maioria das imagens de SO públicas fornecidas pelo Google Cloud.
  3. Conecte-se à VM.
  4. Na VM, use aCLI do Google Cloud para gerenciar seus recursos do Cloud Storage.

A seguir