Este documento explica como criar uma instância de máquina virtual (VM) configurada para usar uma conta de serviço gerida pelo utilizador. Uma conta de serviço é um tipo especial de conta normalmente usada por uma aplicação ou uma carga de trabalho de computação para fazer chamadas de API autorizadas.
As contas de serviço são necessárias para cenários em que uma carga de trabalho, como uma aplicação personalizada, precisa de aceder a recursos ou realizar ações sem a participação do utilizador final. Google Cloud Para mais informações sobre quando usar contas de serviço, consulte o artigo Práticas recomendadas para usar contas de serviço.
Se tiver aplicações que precisam de fazer chamadas para Google Cloud APIs, a Google recomenda que anexe uma conta de serviço gerida pelo utilizador à VM na qual a aplicação ou a carga de trabalho está a ser executada. Em seguida, concede funções de IAM à conta de serviço, o que dá à conta de serviço e, por extensão, às aplicações em execução na VM, acesso aosGoogle Cloud recursos.
Antes de começar
-
Se ainda não o tiver feito, configure a autenticação.
A autenticação valida a sua identidade para aceder a Google Cloud 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:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
- Set a default region and zone.
Terraform
Para usar os exemplos do Terraform 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.
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a 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.
Para mais informações, consulte Set up authentication for a local development environment.
REST
Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.
Instale a CLI Google Cloud.
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.
Funções necessárias
Para receber as autorizações de que precisa para criar VMs que usam contas de serviço, peça ao seu administrador que lhe conceda as seguintes funções do IAM no projeto:
-
Administrador de instâncias do Compute (v1) (
roles/compute.instanceAdmin.v1
) -
Criar contas de serviço (
roles/iam.serviceAccountCreator
) -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
)
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Estas funções predefinidas contêm as autorizações necessárias para criar VMs que usam contas de serviço. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
As seguintes autorizações são necessárias para criar VMs que usam contas de serviço:
-
Para criar contas de serviço:
Todas as autorizações na função
iam.serviceAccountCreator
-
Para conceder autorizações à conta de serviço:
Todas as autorizações na função
resourcemanager.projectIamAdmin
-
Para criar VMs:
compute.instances.create
no projeto- Para usar uma imagem personalizada para criar a VM:
compute.images.useReadOnly
na imagem - Para usar um instantâneo para criar a VM:
compute.snapshots.useReadOnly
no instantâneo - Para usar um modelo de instância para criar a VM:
compute.instanceTemplates.useReadOnly
no modelo de instância - Para atribuir uma rede antiga à VM:
compute.networks.use
no projeto - Para especificar um endereço IP estático para a VM:
compute.addresses.use
no projeto - Para atribuir um endereço IP externo à VM quando usar uma rede antiga:
compute.networks.useExternalIp
no projeto - Para especificar uma sub-rede para a VM:
compute.subnetworks.use
no projeto ou na sub-rede escolhida - Para atribuir um endereço IP externo à VM quando usar uma rede VPC:
compute.subnetworks.useExternalIp
no projeto ou na sub-rede escolhida - Para definir os metadados da instância de VM para a VM:
compute.instances.setMetadata
no projeto - Para definir etiquetas para a VM:
compute.instances.setTags
na VM - Para definir etiquetas para a VM:
compute.instances.setLabels
na VM - Para definir uma conta de serviço para a VM usar:
compute.instances.setServiceAccount
na VM - Para criar um novo disco para a VM:
compute.disks.create
no projeto - Para anexar um disco existente no modo de leitura ou leitura/escrita:
compute.disks.use
no disco - Para anexar um disco existente no modo de leitura:
compute.disks.useReadOnly
no disco
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Vista geral
Recomendamos que configure as contas de serviço para as suas VMs da seguinte forma:
- Crie uma nova conta de serviço gerida pelo utilizador em vez de usar a conta de serviço predefinida do Compute Engine e conceda funções de IAM a essa conta de serviço apenas para os recursos e as operações de que precisa.
- Anexe a conta de serviço à sua VM.
- Defina o âmbito da plataforma na nuvem (
https://www.googleapis.com/auth/cloud-platform
) na VM. Isto permite que a conta de serviço da VM chame as APIs que tem autorização para usar. Google Cloud- Se especificar a conta de serviço através da Google Cloud consola, defina o âmbito de acesso da conta de serviço como Permitir acesso total a todas as APIs Cloud.
- Se especificar a conta de serviço através da CLI do Google Cloud ou da API Compute Engine, pode usar o parâmetro
scopes
para definir o âmbito de acesso.
Configure uma conta de serviço
Crie uma conta de serviço e atribua as funções do IAM necessárias. Atribua o número de funções de IAM que quiser. Pode modificar as funções de IAM na sua conta de serviço conforme necessário.
A Google recomenda que limite os privilégios das contas de serviço e verifique regularmente as autorizações da sua conta de serviço para se certificar de que estão atualizadas.
Use um dos seguintes métodos para configurar a conta de serviço.
Consola
-
Ensure that you have the Create Service Accounts IAM role
(
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
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
. - Click Create and continue.
-
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. - Click Continue.
-
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.
-
Click Done to finish creating the service account.
roles/iam.serviceAccountCreator
). Learn how to grant roles.gcloud
-
Ensure that you have the Create Service Accounts IAM role
(
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
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
. - Click Create and continue.
-
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. - Click Continue.
-
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.
-
Click Done to finish creating the service account.
roles/iam.serviceAccountCreator
). Learn how to grant roles.Terraform
Para criar uma conta de serviço, pode usar o recurso
google_service_account
.Lembre-se de substituir os valores dos marcadores de posição dos atributos
account_id
edisplay_name
.Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Crie uma VM e anexe a conta de serviço
Depois de criar a conta de serviço, crie uma VM e anexe a conta de serviço que criou na secção anterior. Defina também o âmbito de acesso da VM como
cloud-platform
.Se já tiver uma VM e quiser configurá-la para usar uma conta de serviço diferente, consulte o artigo Altere a conta de serviço associada.
Use um dos seguintes métodos para criar uma VM e anexar a conta de serviço.
Consola
Na Google Cloud consola, aceda à página Criar uma instância.
Para associar uma conta de serviço, faça o seguinte:
- No menu de navegação, clique em Segurança.
- Na lista Conta de serviço, selecione a conta de serviço que criou.
- Em Âmbitos de acesso, selecione Permitir acesso total a todas as APIs Cloud.
Opcional: especifique outras opções de configuração. Para mais informações, consulte o artigo Opções de configuração durante a criação da instância.
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 através da CLI do Google Cloud, use o comando
gcloud compute instances create
e indique o email da conta de serviço e o âmbito de acessocloud-platform
à instância de VM.gcloud compute instances create VM_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --scopes=https://www.googleapis.com/auth/cloud-platform
Substitua o seguinte:
SERVICE_ACCOUNT_EMAIL
: o endereço de email da conta de serviço que criou. Por exemplo:my-sa-123@my-project-123.iam.gserviceaccount.com
. Para ver o endereço de email, consulte o artigo Liste contas de serviço.VM_NAME
: o nome da instância de VM.
Por 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 pode especificar o âmbito através do alias:
--scopes=cloud-platform
. Estes aliases só são reconhecidos pela CLI gcloud. A API e outras bibliotecas não reconhecem estes alias, pelo que tem de especificar o URI do âmbito completo.Terraform
Para configurar uma nova VM para usar uma conta de serviço, pode usar o recurso
google_compute_instance
.REST
Use o
instances.insert
método para criar a VM e especifique o email da conta de serviço e o âmbito 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 o seguinte:
PROJECT_ID
: ID do projeto no qual criar a VMZONE
: zona na qual criar a VMMACHINE_TYPE_ZONE
: zona que contém o tipo de máquina a usar para a nova VMMACHINE_TYPE
: tipo de máquina, predefinido ou personalizado, para a nova VMVM_NAME
: name da nova VMIMAGE_PROJECT
: project que contém a imagem
Por exemplo, se especificardebian-10
como a família de imagens, especifiquedebian-cloud
como o projeto de imagens.IMAGE
: especifique uma das seguintes opções:IMAGE
: uma versão específica de uma imagem públicaPor exemplo,
"sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"
IMAGE_FAMILY
: uma família de imagensIsto cria a VM a partir da imagem do SO não descontinuada mais recente. Por exemplo, se especificar
"sourceImage": "projects/debian-cloud/global/images/family/debian-10"
, o Compute Engine cria uma VM a partir da versão mais recente da imagem do SO na família de imagensDebian 10
.
NETWORK_NAME
: a rede VPC que quer usar para a VM. Pode especificardefault
para usar a sua rede predefinida.SERVICE_ACCOUNT_EMAIL
: o endereço de email da conta de serviço que criou. Por exemplo:my-sa-123@my-project-123.iam.gserviceaccount.com
. Para ver o endereço de email, consulte o artigo Obtenha um email de conta de serviço.ENABLE_SECURE_BOOT
: Opcional: se escolheu uma imagem que suporta as funcionalidades da VM protegida, o Compute Engine ativa, por predefinição, o módulo de plataforma fidedigna virtual (vTPM) e a monitorização da integridade. O Compute Engine não ativa o Arranque seguro por predefinição.Se especificar
true
paraenableSecureBoot
, o Compute Engine cria uma VM com todas as três funcionalidades da VM protegida ativadas. Depois de o Compute Engine iniciar a VM, para modificar as opções da VM protegida, tem de parar a VM.
Aceder e usar outros Google Cloud serviços
Depois de configurar a VM para usar a conta de serviço, as aplicações podem usar a conta de serviço para fazer a autenticação. O método mais comum é a autenticação através das credenciais predefinidas da aplicação e de uma biblioteca de cliente. Algumas Google Cloud ferramentas, como a CLI gcloud, podem usar automaticamente a conta de serviço para aceder às Google Cloud APIs a partir de uma VM. Para mais informações, consulte o artigo Autentique cargas de trabalho com contas de serviço.
Se uma conta de serviço for eliminada, as aplicações deixam de ter acesso aos Google Cloud recursos através dessa conta de serviço. Se eliminar as contas de serviço predefinidas do App Engine e do Compute Engine, as suas VMs deixam de ter acesso aos recursos no projeto. Se não tiver a certeza de que uma conta de serviço está a ser usada, a Google recomenda que desative a conta de serviço antes de a eliminar. As contas de serviço desativadas podem ser reativadas se ainda forem necessárias.
Exemplo: aceda aos recursos do Cloud Storage a partir da sua VM
Depois de configurar a VM para usar uma conta de serviço com a função
storage.admin
, pode usar ferramentas como a CLI gcloud para gerir ficheiros que armazenou no Cloud Storage. Para aceder aos seus recursos do Cloud Storage, conclua o seguinte:Certifique-se de que a conta de serviço anexada à sua VM tem a função
roles/storage.admin
.Se a sua VM usar uma imagem do SO personalizada, instale a CLI gcloud. Por predefinição, a CLI gcloud é instalada na maioria das imagens de SO públicas fornecidas pela Google Cloud.
Estabeleça ligação à VM.
Na VM, use a Google Cloud CLI para gerir os seus recursos do Cloud Storage.
O que se segue?
- Saiba como autenticar cargas de trabalho com contas de serviço.
- Saiba como alterar a conta de serviço associada a uma VM.
- Saiba como listar e editar contas de serviço.
- Reveja as práticas recomendadas para trabalhar com contas de serviço e mitigue os riscos de segurança.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-09-19 UTC.
-