Neste documento, explicamos como configurar uma máquina virtual (VM) atual para usar uma conta de serviço diferente. Uma conta de serviço é um tipo especial de conta normalmente usado 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 os 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 do Google Cloud.
Antes de começar
-
Configure a autenticação, caso ainda não tenha feito isso.
A autenticação é
o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud.
Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine da seguinte maneira.
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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- 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 de que ela precisa.
- Anexe a conta de serviço à VM.
- 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 do Google Cloud 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á definido automaticamente como
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á definido automaticamente como
Conceder um papel do IAM à conta de serviço padrão afeta todas as instâncias que estão sendo executadas como a conta de serviço padrão. Por exemplo, se você conceder o papel
roles/storage.objectAdmin
à conta de serviço padrão, todas as instâncias em execução como a conta de serviço padrão com os escopos de acesso necessários terão as permissões concedidas pelo papelroles/storage.objectAdmin
. Da mesma forma, se você limitar o acesso omitindo determinados papéis, isso afetará todas as VMs que estão sendo executadas como a conta de serviço padrão.É recomendável remover o papel básico de Editor da conta de serviço padrão. Por padrão, a conta de serviço padrão é adicionada como um editor de projeto aos projetos. Para usar papéis do IAM, revogue o papel básico de Editor.
No console do Google Cloud, abra a página IAM.
Se solicitado, selecione o projeto.
Procure a conta de serviço chamada Conta de serviço padrão do Compute Engine.
Na coluna Funções, expanda o menu suspenso da Conta de serviço padrão do Compute Engine.
Remova o acesso Editor e salve as alterações.
Em seguida, conceda papéis do IAM à conta de serviço.
Acesse a página Instâncias da VM.
Clique no nome da instância de VM para que você quer alterar a conta de serviço.
Se a instância não estiver parada, clique em Parar. Espere até que a VM seja totalmente 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á definido por padrão como o escopo
cloud-platform
recomendado. 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 não tiver certeza de quais escopos de acesso definir, escolha Permitir acesso total a todas as APIs do Cloud e restrinja o acesso definindo os papéis 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á definido por padrão como o escopo
Clique em Salvar.
Clique em Iniciar/Retomar para reiniciar a VM.
Interrompa 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 escolhidos. Para mais informações sobre como definir escopos de acesso, consulte Práticas recomendadas.gcloud compute instances set-service-account VM_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --scopes=SCOPES
Substitua:
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 ver o endereço de e-mail, consulte Como listar 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 de VM.SCOPES
: uma lista separada por vírgulas de URIs ou aliases de escopo fornecidas na descrição da sinalização--scopes
.Se você quer remover todos os escopos da instância, use a sinalização
--no-scopes
.
Por exemplo, com o comando a seguir, você atribui a conta de serviço
my-sa-123@my-project-123.iam.gserviceaccount.com
a uma instância chamada "example-instance". Além disso, você define escopos de acesso nessa instância para permitir o acesso de leitura/gravação ao Compute Engine e o 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
Interrompa 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:
PROJECT_ID
: o projeto em que a VM está.ZONE
: a zona em que a VM está localizada.VM_NAME
: o nome da VM que você quer 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:
PROJECT_ID
: o ID do projeto desta solicitação;ZONE
: a zona a que 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 ver o endereço de e-mail, consulte Como listar contas de serviço.SCOPE_URI
: o URI de escopo.
Por exemplo, na solicitação a seguir, o e-mail da conta de serviço
my-sa-123@my-project-123.iam.gserviceaccount.com
é usado, e um escopo do Cloud Storage e do BigQuery é definido: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 criando uma solicitação
POST
usando o métodoinstances.start
:POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
Substitua:
PROJECT_ID
: o projeto em que a VM está.ZONE
: a zona em que a VM está localizada.VM_NAME
: o nome da VM que você quer iniciar.
Acesse a página Instâncias da VM.
Clique no nome da instância de VM para que você quer alterar a conta de serviço.
Acesse a seção Gerenciamento de APIs e identidades. Esta seção exibe a conta de serviço e o escopo de acesso usados pela VM.
- Limite os privilégios das contas de serviço e verifique regularmente as permissões da conta de serviço para garantir que estejam atualizadas.
- Exclua as contas de serviço com cuidado. Verifique se os aplicativos críticos não estão 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 desativar 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.
- Reduza os riscos de segurança da conta de serviço. Para mais informações, consulte Práticas recomendadas para trabalhar com contas de serviço.
- Consulte Práticas recomendadas para contas de serviço
Consulte Autenticar cargas de trabalho usando 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.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Funções exigidas
Para receber as permissões necessárias para configurar contas de serviço na VM, peça ao administrador para conceder a você o papel Administrador de instâncias do Compute (v1) (
roles/compute.instanceAdmin.v1
) Papel do IAM na VM ou no projeto. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.Esse papel predefinido contém as permissões necessárias para configurar contas de serviço na sua VM. 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 configurar contas de serviço na sua VM:
Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.
Informações gerais
É recomendável configurar contas de serviço para suas VMs da seguinte maneira:
Configurar a conta de serviço
É possível criar uma conta de serviço gerenciada pelo usuário ou usar a conta de serviço padrão do Compute Engine. É recomendável usar uma conta de serviço gerenciada pelo usuário.
Verifique se os papéis necessários do Identity and Access Management (IAM) foram atribuídos à conta de serviço selecionada.
Gerenciado pelo usuário
Se você ainda não tiver uma conta de serviço gerenciada pelo usuário, primeiro crie uma conta de serviço. Para instruções detalhadas, consulte Configurar uma conta de serviço.
Padrão
Se você está familiarizado com a conta de serviço padrão do Compute Engine e quer usar as credenciais fornecidas por ela, em vez de criar novas contas de serviço, poderá conceder funções do IAM para a conta de serviço padrão.
Antes de atribuir funções do IAM à conta de serviço padrão, observe que:
Se não tiver certeza sobre a atribuição de papéis do IAM para a conta de serviço padrão, crie uma nova conta de serviço.
Siga estas instruções para conceder um papel do IAM à conta de serviço padrão:
Agora todas as instâncias de máquina virtual que estiverem sendo executadas como conta de serviço padrão terão acesso a outras APIs do Google Cloud de acordo com os papéis do IAM que você concedeu à conta.
Anexar a conta de serviço e atualizar o escopo de acesso
Para alterar a conta de serviço e os escopos de acesso de uma VM, a VM precisa ser interrompida temporariamente.
Se a conta de serviço estiver em um projeto diferente das instâncias, será preciso 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 VM.
Console
gcloud
REST
Verificar a conta de serviço usada por uma VM
Para ver todas as contas de serviço em um projeto, consulte Como listar contas de serviço.
Se você precisar identificar a conta de serviço usada por uma VM, conclua um dos seguintes procedimentos:
Console
gcloud
Execute o
gcloud compute instances describe
comando:gcloud compute instances describe VM_NAME \ --format json
O resultado será assim:
{ ... "serviceAccounts":[ { "email":"123845678986-compute@developer.gserviceaccount.com", "scopes":[ "https://www.googleapis.com/auth/devstorage.full_control" ] } ] ... }
Se a instância 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 de dentro da própria instância. 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, o comando
curl
retornará uma saída como 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.
Práticas recomendadas
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 2024-11-21 UTC.
-