Este documento explica como configurar uma máquina virtual (VM) existente para usar uma conta de serviço diferente. Uma conta de serviço é um tipo especial de conta normalmente usado por um aplicativo ou 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 um aplicativo personalizado, precisa acessar Google Cloud recursos ou executar ações sem o envolvimento do usuário final. Para obter 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 Google Cloud APIs, o Google recomenda que você anexe uma conta de serviço gerenciada pelo usuário à VM na qual o aplicativo ou a carga de trabalho está em execução. Em seguida, você concede funções do IAM à conta de serviço, o que dá à conta de serviço – e, por extensão, aos aplicativos em execução na VM – acesso aGoogle Cloud recursos.
Antes de começar
- Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar 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
-
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 a default region and zone.
-
compute.instances.setServiceAccount
-
compute.instances.stop
-
compute.instances.start
- 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 necessários.
- Anexe a conta de serviço à sua VM.
- Defina o escopo da plataforma de nuvem (
https://www.googleapis.com/auth/cloud-platform
) na sua VM. Isso permite que a conta de serviço da VM chame o Google Cloud APIs que tem permissão para usar.- Se você especificar a conta de serviço usando o console do Google Cloud, o escopo de acesso da VM será automaticamente padronizado para o escopo
cloud-platform
. - 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.
- Se você especificar a conta de serviço usando o console do Google Cloud, o escopo de acesso da VM será automaticamente padronizado para o escopo
A concessão de uma função do IAM à conta de serviço padrão afeta todas as VMs em execução como conta de serviço padrão. Por exemplo, se você conceder à conta de serviço padrão a função
roles/storage.objectAdmin
, todas as VMs em execução como a conta de serviço padrão com os escopos de acesso necessários terão permissões concedidas pela funçãoroles/storage.objectAdmin
. Da mesma forma, se você limitar o acesso omitindo determinadas funções, isso afetará todas as VMs em execução como conta de serviço padrão.Dependendo da configuração da política da sua organização, a conta de serviço padrão poderá receber automaticamente a função de Editor no seu projeto. É altamente recomendável desativar a concessão automática de função aplicando a restrição de política da organização
iam.automaticIamGrantsForDefaultServiceAccounts
. Se você criou sua organização após 3 de maio de 2024, essa restrição será aplicada por padrão.Se você desabilitar a concessão automática de funções, deverá decidir quais funções conceder às contas de serviço padrão e, em seguida, conceder essas funções você mesmo.
Se a conta de serviço padrão já tiver a função de Editor, recomendamos que você substitua a função de Editor por funções menos permissivas.Para modificar com segurança as funções da conta de serviço, use o Simulador de políticas para ver o impacto da alteração e, em seguida , conceda e revogue as funções apropriadas .
Acesse a página de instâncias de VM .
Clique no nome da instância de VM cuja conta de serviço você deseja alterar.
Se a VM não estiver parada, clique em Parar . Aguarde até que a VM seja interrompida.
Clique em Editar .
Role para baixo até a seção Conta de serviço .
Na lista suspensa, selecione a conta de serviço a ser atribuída à VM.
- Se você escolher uma conta de serviço gerenciada pelo usuário, o escopo de acesso da VM será padronizado para o escopo recomendado
cloud-platform
. Se você precisar de um escopo diferente para sua conta de serviço gerenciada pelo usuário, use a CLI gcloud ou a API Compute Engine para anexar a conta de serviço. - Se você escolher a conta de serviço padrão do Compute Engine, poderá modificar os escopos de acesso no console do Google Cloud.
- Para alterar os escopos, na seção Escopos de acesso , selecione Definir acesso para cada API e defina os escopos apropriados para suas necessidades.
- Recomendado Se você não tiver certeza dos escopos de acesso adequados a serem definidos, escolha Permitir acesso total a todas as APIs do Cloud e certifique-se de restringir o acesso definindo funções do IAM na conta de serviço.
- Se você escolher uma conta de serviço gerenciada pelo usuário, o escopo de acesso da VM será padronizado para o escopo recomendado
Clique em Salvar para salvar suas alterações.
Clique em Iniciar/Continuar para reiniciar a VM.
Pare a VM usando o comando
instances stop
. SubstituaVM_NAME
pelo nome da sua instância de VM.gcloud compute instances stop VM_NAME
Anexe a conta de serviço. Para anexar a conta de serviço, use o comando
instances set-service-account
e forneça o nome da VM, o e-mail da conta de serviço e os escopos desejados. Para obter mais informações sobre como configurar escopos de acesso, consulte Práticas recomendadas .gcloud compute instances set-service-account VM_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --scopes=SCOPES
Substitua o seguinte:
SERVICE_ACCOUNT_EMAIL
: o endereço de e-mail da conta de serviço que você criou. Por exemplo:my-sa-123@my-project-123.iam.gserviceaccount.com
. Para visualizar o endereço de e-mail, consulte Listando contas de serviço .Se você quiser remover a conta de serviço da VM, use a sinalização
--no-service-account
.VM_NAME
: o nome da instância da VM.SCOPES
: uma lista separada por vírgulas de URIs ou aliases de escopo fornecidos na descrição do sinalizador--scopes
.Se você quiser remover todos os escopos da VM, use o sinalizador
--no-scopes
.
Por exemplo, o comando a seguir atribui a conta de serviço
my-sa-123@my-project-123.iam.gserviceaccount.com
a uma VM chamada instância de exemplo e define escopos de acesso nessa VM para permitir acesso de leitura/gravação ao Compute Engine e acesso somente leitura ao Cloud Storage:gcloud compute instances set-service-account example-instance \ --service-account=my-sa-123@my-project-123.iam.gserviceaccount.com \ --scopes=compute-rw,storage-ro
Inicie a VM usando o comando
instances start
. SubstituaVM_NAME
pelo nome da sua instância de VM.gcloud compute instances start VM_NAME
Pare a VM fazendo uma solicitação
POST
usando o métodoinstances.stop
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
Substitua o seguinte:
-
PROJECT_ID
: o projeto em que sua VM está -
ZONE
: a zona onde sua VM está localizada -
VM_NAME
: o nome da VM que você deseja parar
-
Anexe a conta de serviço fazendo uma solicitação
POST
ao métodosetServiceAccount
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setServiceAccount { "email": "SERVICE_ACCOUNT_EMAIL", "scopes": [ "SCOPE_URI", "SCOPE_URI", ... ] }
Substitua o seguinte:
-
PROJECT_ID
: o ID do projeto para esta solicitação. -
ZONE
: a zona à qual esta VM pertence. -
VM_NAME
: o nome da VM. -
SERVICE_ACCOUNT_EMAIL
: o endereço de e-mail da conta de serviço que você criou. Por exemplo:my-sa-123@my-project-123.iam.gserviceaccount.com
. Para visualizar o endereço de e-mail, consulte Listando contas de serviço . -
SCOPE_URI
: o URI do escopo necessário.
Por exemplo, a solicitação a seguir usa o e-mail da conta de serviço
my-sa-123@my-project-123.iam.gserviceaccount.com
e define um escopo do Cloud Storage e do BigQuery:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setServiceAccount { "email": "my-sa-123@my-project-123.iam.gserviceaccount.com", "scopes": [ "https://www.googleapis.com/auth/bigquery", "https://www.googleapis.com/auth/devstorage.read_only" ] }
-
Inicie a VM construindo uma solicitação
POST
usando o métodoinstances.start
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
Substitua o seguinte:
-
PROJECT_ID
: o projeto em que sua VM está -
ZONE
: a zona onde sua VM está localizada -
VM_NAME
: o nome da VM que você deseja iniciar
-
Acesse a página de instâncias de VM .
Clique no nome da instância de VM cuja conta de serviço você deseja alterar.
Vá para a seção API e gerenciamento de identidade . Esta seção exibe a conta de serviço e o escopo de acesso usado pela VM.
- Limite os privilégios das contas de serviço e verifique regularmente as permissões da sua conta de serviço para garantir que estejam atualizadas.
- Exclua contas de serviço com cuidado. Certifique-se de que seus aplicativos críticos não estejam mais usando uma conta de serviço antes de excluí-la. Se você não tiver certeza se uma conta de serviço está sendo usada, recomendamos desabilitar a conta de serviço em vez de excluí-la. As contas de serviço desativadas poderão ser reativadas se ainda forem necessárias.
- Mitigue os riscos de segurança da sua conta de serviço. Para obter mais informações, consulte Práticas recomendadas para trabalhar com contas de serviço .
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
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.
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Funções obrigatórias
Para obter as permissões necessárias para configurar contas de serviço em sua VM, peça ao administrador para conceder a você a função do IAM Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) na VM ou em seu projeto. Para obter mais informações sobre a concessão de funções, consulte Gerenciar acesso a projetos, pastas e organizações .Esta função predefinida contém as permissões necessárias para configurar contas de serviço na sua VM. Para ver 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 configurar contas de serviço na sua VM:
Você também poderá obter essas permissões com funções personalizadas ou outras funções predefinidas .
Visão geral
É recomendável configurar contas de serviço para suas VMs da seguinte forma:
Configurar a conta de serviço
Você pode criar uma conta de serviço gerenciada pelo usuário ou usar a conta de serviço padrão do Compute Engine. Recomenda-se uma conta de serviço gerenciada pelo usuário.
Para a conta de serviço selecionada, certifique-se de que as funções necessárias de gerenciamento de identidade e acesso (IAM) estejam atribuídas.
Gerenciado pelo usuário
Se você ainda não tiver uma conta de serviço gerenciada pelo usuário, crie uma conta de serviço. Para obter instruções detalhadas, consulte Configurar uma conta de serviço .
Padrão
Se você estiver familiarizado com a conta de serviço padrão do Compute Engine e quiser usar as credenciais fornecidas pela conta de serviço padrão em vez de criar novas contas de serviço, poderá conceder papéis do IAM à conta de serviço padrão.
Antes de atribuir funções do IAM à conta de serviço padrão, observe que:
Se você não tiver certeza sobre a concessão de funções do IAM à conta de serviço padrão, crie uma nova conta de serviço gerenciada pelo usuário .
Anexe a conta de serviço e atualize o escopo de acesso
Para alterar a conta de serviço e os escopos de acesso de uma VM, a VM deve ser interrompida temporariamente.
Se a conta de serviço estiver em um projeto diferente da VM, você deverá configurar a conta de serviço para um recurso em um projeto diferente .
Use um dos métodos a seguir para alterar a conta de serviço e os escopos de acesso na sua VM.
Console
gcloud
DESCANSAR
Ver a conta de serviço usada por uma VM
Para visualizar todas as contas de serviço em um projeto, consulte Listando contas de serviço .
Se precisar identificar a conta de serviço que está sendo usada por uma VM, execute um dos seguintes procedimentos:
console
gcloud
Execute o comando
gcloud compute instances describe
:gcloud compute instances describe VM_NAME \ --format json
A saída é semelhante à seguinte:
{ ... "serviceAccounts":[ { "email":"123845678986-compute@developer.gserviceaccount.com", "scopes":[ "https://www.googleapis.com/auth/devstorage.full_control" ] } ] ... }
Se a VM não estiver usando uma conta de serviço, você receberá uma resposta sem a propriedade
serviceAccounts
.Servidor de Metadados
Consulte o servidor de metadados na própria VM. Faça uma solicitação para
http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/
:user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" \ -H "Metadata-Flavor: Google"
Se você ativou uma ou mais contas de serviço ao criar a instância, este comando
curl
retornará uma saída semelhante a esta:123845678986-compute@developer.gserviceaccount.com/ default/
Se a instância não estiver usando uma conta de serviço, você receberá uma resposta vazia.
Melhores práticas
O que vem a seguir?
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-04-21 UTC.
-