Como gerenciar o acesso aos recursos do Compute Engine


Neste guia, descrevemos como usar o princípio de menor privilégio ao conceder acesso a recursos específicos do Compute Engine em vez de a um recurso pai, como um projeto, uma pasta ou uma organização.

Para conceder acesso a um recurso, defina uma política de gerenciamento de identidade e acesso (IAM, na sigla em inglês) no recurso. A política vincula um ou mais membros, como um usuário ou uma conta de serviço, a um ou mais papéis. Cada papel tem uma lista de permissões que permitem que o membro interaja com o recurso.

Ao conceder acesso a um recurso pai (por exemplo, a um projeto), você concede acesso implícito a todos os recursos filhos (por exemplo, todas as VMs desse projeto). Para limitar o acesso aos recursos, defina políticas do IAM em recursos de nível inferior, quando possível, em vez de no nível do projeto ou acima.

Para informações gerais sobre como conceder, alterar e revogar o acesso a recursos não relacionados ao Compute Engine (como conceder acesso a um projeto do Google Cloud, por exemplo), consulte a documentação do IAM sobre Como conceder, alterar e revogar acesso a recursos.

Antes de começar

  • Revise a visão geral do IAM.
  • Leia a visão geral do controle de acesso do Compute Engine.
  • Conheça os papéis do IAM para o Compute Engine .
  • 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 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

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. 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 gerenciar o acesso aos recursos do Compute Engine, peça ao administrador para conceder a você o papel do IAM de Administrador do Compute (roles/compute.admin) no recurso. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém as permissões necessárias para gerenciar o acesso aos recursos do Compute Engine. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para gerenciar o acesso aos recursos do Compute Engine:

  • Para conceder ou revogar o acesso a recursos:
    • compute.projects.get no projeto
    • compute.RESOURCE_TYPE.get no recurso
    • compute.RESOURCE_TYPE.getIamPolicy no recurso
    • compute.RESOURCE_TYPE.setIamPolicy no recurso
  • Para testar as permissões do autor da chamada: compute.RESOURCE_TYPE.getIamPolicy no recurso

    Substitua RESOURCE_TYPE pelo recurso a que você quer gerenciar o acesso. Por exemplo, instances, instanceTemplates ou images.

Também é possível conseguir essas permissões com papéis personalizados ou outros papéis predefinidos.

Recursos suportados

Para ver uma lista de recursos do Compute Engine compatíveis com o controle de acesso no nível do recurso, consulte Tipos de recursos que aceitam políticas do IAM e filtre por Compute Engine.

Para outros recursos do Compute Engine que não são compatíveis com o controle de acesso do recurso, é necessário gerenciar o acesso a esses recursos no projeto, na pasta ou na organização. Para informações sobre organizações, pastas ou projetos, consulte Hierarquia de recursos.

Como conceder acesso aos recursos do Compute Engine

Um principal, como uma conta de usuário ou serviço, pode acessar os recursos do Compute Engine. Uma identidade é uma propriedade de uma principal. A identidade de um principal normalmente é representada por um endereço de e-mail associado à conta.

Antes de conceder um papel de IAM a um usuário em um recurso, verifique quais papéis estão disponíveis para esse recurso específico. Para mais informações, consulte Como ver os papéis atribuíveis a recursos.

Para conceder aos usuários permissão para acessar recursos específicos do Compute Engine, defina uma política de IAM no recurso.

Console

  1. No console do Google Cloud, acesse a página do recurso em que você quer incluir permissões.
  2. Marque as caixas de seleção ao lado dos recursos que você quer atualizar.
  3. Conclua as etapas a seguir com base na página de recursos.
    • Para instâncias de VM, clique em Permissões.
    • Para todos os outros recursos, faça o seguinte:
      1. Verifique se o painel de informações está visível. Se não estiver, clique em Mostrar painel de informações.
      2. Selecione a guia Permissões.
  4. Clique em Adicionar principal.
  5. Adicione a identidade da principal e selecione o papel necessário.
  6. Para salvar as alterações, clique em Save.

gcloud

Para conceder um papel a um principal em um recurso, use o subcomando add-iam-policy-binding desse recurso com as sinalizações --member e --role.

gcloud compute RESOURCE_TYPE add-iam-policy-binding RESOURCE_NAME \
    --member='PRINCIPAL' \
    --role='ROLE'

Substitua:

  • RESOURCE_TYPE: o tipo do recurso. Valores válidos incluem:
    • disks
    • images
    • instances
    • instance-templates
    • machine-images
    • reservations
    • sole-tenancy node-groups
    • sole-tenancy node-templates
    • snapshots
  • RESOURCE_NAME: o nome do recurso. Por exemplo, my_instance.
  • PRINCIPAL: uma identidade válida para o principal a quem você quer conceder o papel. Precisa estar no formato user|group|serviceAccount:EMAIL_ADDRESS ou domain:DOMAIN_ADDRESS. Exemplo:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • ROLE: o papel que você quer atribuir ao principal.

Se você estiver concedendo acesso a um recurso que está em visualização, use um comando gcloud beta compute.

REST

Para modificar uma política do IAM por meio da API, faça o seguinte:

  1. Leia a política atual com o respectivo método getIamPolicy do recurso. Por exemplo, a solicitação HTTP a seguir lê a política do IAM de uma VM:

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

    Substitua:

    • PROJECT_ID: o ID do projeto a que esta VM pertence.
    • ZONE: a zona da VM. Para recursos regionais ou globais, substitua zones/ZONE por regions/REGION ou global.
    • VM_NAME: o nome da instância de VM.

    O Compute Engine retorna a política atual na resposta.

  2. Edite a política com um editor de texto para incluir ou remover principais e os respectivos papéis. Por exemplo, para conceder o papel compute.admin a email@example.com, inclua a nova vinculação a seguir à política:

    {
      "members": [
        "user:email@example.com"
      ],
      "role":"roles/compute.admin"
    }
    
  3. Grave a política atualizada com setIamPolicy():

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

    Substitua:

    • PROJECT_ID: o ID do projeto a que esta VM pertence.
    • ZONE: a zona da VM. Para recursos regionais ou globais, substitua zones/ZONE por regions/REGION ou global.
    • VM_NAME: o nome da instância de VM.

    No corpo da solicitação, forneça a política do IAM atualizada da etapa anterior.

Como revogar acesso a recursos

Como prática recomendada, depois que os membros não precisarem mais acessar seus recursos do Compute Engine, revogue o acesso deles.

Console

  1. No console do Google Cloud, acesse a página do recurso em que você quer incluir permissões.
  2. Marque as caixas de seleção ao lado dos recursos que você quer atualizar.
  3. Conclua as etapas a seguir com base na página de recursos.
    • Para instâncias de VM, clique em Permissões.
    • Para todos os outros recursos, faça o seguinte:
      1. Verifique se o painel de informações está visível. Se não estiver, clique em Mostrar painel de informações.
      2. Selecione a guia Permissões.
  4. Clique no card de função de que você quer remover principais. Isso expande o cartão e mostra os membros com esse papel no recurso.
  5. Para remover um usuário desse papel, clique em Excluir.

gcloud

Para remover um papel de um principal de um recurso, use o subcomando remove-iam-policy-binding do recurso com as sinalizações --member e --role.

gcloud compute RESOURCE_TYPE remove-iam-policy-binding RESOURCE_NAME \
    --member='MEMBER' \
    --role='ROLE'

Substitua:

  • RESOURCE_TYPE: tipo do recurso. Valores válidos incluem:
    • disks
    • images
    • instances
    • instance-templates
    • machine-images
    • reservations
    • sole-tenancy node-groups
    • sole-tenancy node-templates
    • snapshots
  • RESOURCE_NAME: nome do recurso. Por exemplo, my_instance.
  • PRINCIPAL: uma identidade válida para o principal. Precisa estar no formato user|group|serviceAccount:EMAIL_ADDRESS ou domain:DOMAIN_ADDRESS. Exemplo:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • ROLE: o papel que você quer remover da identidade.

Se você quiser remover o acesso a um recurso que está atualmente na versão Beta, use um comando gcloud beta compute.

REST

Para modificar uma política do IAM diretamente por meio da API, faça o seguinte:

  1. Leia a política atual com o respectivo método getIamPolicy do recurso. Por exemplo, a solicitação HTTP a seguir lê a política do IAM de uma VM:

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

    Substitua:

    • PROJECT_ID: o ID do projeto a que esta VM pertence.
    • ZONE: a zona da VM. Para recursos regionais ou globais, substitua zones/ZONE por regions/REGION ou global.
    • VM_NAME: o nome da instância de VM.

    O Compute Engine retorna a política atual na resposta.

  2. Edite a política com um editor de texto para remover membros dos respectivos papéis. Por exemplo, remova email@example.com do papel compute.admin:

    {
      "members": [
        "user:owner@example.com"
      ],
      "role":"roles/compute.admin"
    }
    
  3. Grave a política atualizada com setIamPolicy():

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

    Substitua:

    • PROJECT_ID: o ID do projeto a que esta VM pertence.
    • ZONE: a zona da VM. Para recursos regionais ou globais, substitua zones/ZONE por regions/REGION ou global.
    • VM_NAME: o nome da instância de VM.

    No corpo da solicitação, forneça a política do IAM atualizada da etapa anterior.

Como testar se o autor da chamada tem permissões

Se você não souber quais permissões uma identidade tem, use o método de API testIamPermissions para verificar as permissões disponíveis para essa identidade.

Esse método usa o URL de um recurso e um conjunto de permissões como parâmetros de entrada, e retorna o conjunto de permissões autorizadas ao autor da chamada. Ele pode ser usado em todos os recursos compatíveis.

Geralmente, testIamPermissions se destina à integração com seu software proprietário, como uma interface gráfica do usuário (GUI, na sigla em inglês) personalizada. Normalmente, você não chama testIamPermissions se estiver usando o Google Cloud diretamente para gerenciar as permissões.

Por exemplo, se você estiver criando uma GUI na API Compute Engine e essa interface tiver um botão para iniciar uma instância, chame compute.instances.testIamPermissions() para determinar se o botão tem que estar ativado ou desativado.

Para testar se o autor da chamada tem permissões específicas em um recurso:

  1. Envie uma solicitação para o recurso e inclua no corpo dela uma lista de permissões a serem verificadas.

    Por exemplo, em uma instância, convém verificar compute.instances.start, compute.instances.stop e compute.instances.delete.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/testIamPermissions
        {
          "permissions": [
            "compute.instances.start",
            "compute.instances.stop",
            "compute.instances.delete"
           ]
        }
  2. A solicitação retorna as permissões ativadas para o autor da chamada.

    {
      "permissions": [
        "compute.instances.start",
        "compute.instances.stop"
      ]
    }
    

Como modificar o acesso de vários membros aos recursos

Se você quiser modificar simultaneamente o acesso de vários membros aos recursos do Compute Engine, revise as recomendações sobre como modificar uma política do IAM de maneira programática.

A seguir