Como gerenciar o acesso aos recursos do Compute Engine


Esta página descreve como você pode exercer o princípio do privilégio mínimo concedendo acesso a recursos específicos do Compute Engine em vez de conceder acesso a um recurso pai, como um projeto, uma pasta ou uma organização.

Você concede acesso a um recurso definindo uma política de gerenciamento de identidade e acesso (IAM) no recurso. A política vincula um ou mais membros, como um usuário ou uma conta de serviço, a uma ou mais funções . Cada função contém uma lista de permissões que permitem ao membro interagir com o recurso.

Se você conceder acesso a um recurso pai (por exemplo, a um projeto), você concederá acesso implicitamente a todos os seus recursos filhos (por exemplo, a todas as VMs nesse projeto). Para limitar o acesso aos recursos, defina políticas de IAM em recursos de nível inferior, quando possível, em vez de no nível do projeto ou superior.

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

Antes de começar

Funções obrigatórias

Para obter as permissões necessárias para gerenciar o acesso aos recursos do Compute Engine, peça ao administrador que conceda a você o papel do IAM Administrador do Compute ( roles/compute.admin ) no recurso. Para obter mais informações sobre a concessão de funções, consulte Gerenciar 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 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 gerenciar o acesso aos recursos do Compute Engine:

  • Para conceder ou revogar 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 chamador: compute. RESOURCE_TYPE .getIamPolicy no recurso

    Substitua RESOURCE_TYPE pelo recurso ao qual você deseja gerenciar o acesso. Por exemplo, instances , instanceTemplates ou images .

Você também poderá obter essas permissões com funções personalizadas ou outras funções predefinidas .

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 filtram o Compute Engine .

Para outros recursos do Compute Engine que não oferecem suporte ao controle de acesso no nível do recurso, você precisa gerenciar o acesso a esses recursos nos níveis do projeto, da pasta ou da organização. Para obter informações sobre organizações, pastas ou projetos, consulte Hierarquia de recursos .

Como conceder acesso aos recursos do Compute Engine

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

Antes de conceder uma função do IAM a um principal para um recurso, verifique quais funções estão disponíveis para concessão em um recurso específico. Para obter mais informações, consulte Visualizando as funções concedíveis em recursos .

Para conceder permissão de acesso a recursos específicos do Compute Engine, defina uma política do IAM no recurso.

Console

  1. No console do Google Cloud, acesse a página do respectivo recurso para o qual você deseja adicionar permissões.
  2. Marque as caixas de seleção ao lado dos recursos que você deseja 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, preencha o seguinte:
      1. Verifique se o painel de informações está visível. Se não estiver visível, clique em Mostrar painel de informações .
      2. Selecione a guia Permissões .
  4. Clique em Adicionar principal .
  5. Adicione a identidade do principal e selecione a função necessária.
  6. Para salvar suas alterações, clique em Salvar .

gcloud

Para conceder uma função a um principal em um recurso, use o subcomando add-iam-policy-binding desse recurso com os sinalizadores --member e --role .

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

Substitua o seguinte:

  • RESOURCE_TYPE : o tipo de recurso. Os 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 ao qual você deseja conceder a função. Deve estar no formato user|group|serviceAccount: EMAIL_ADDRESS ou domain: DOMAIN_ADDRESS . Por exemplo:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • ROLE : a função a ser atribuída a esse principal.

Se você estiver concedendo acesso a um recurso que está em versão prévia, use um comando gcloud beta compute .

DESCANSAR

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

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

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

    Substitua o seguinte:

    • PROJECT_ID : o ID do projeto ao qual 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 da VM.

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

  2. Edite a política com um editor de texto para adicionar ou remover principais e suas funções associadas. Por exemplo, para conceder a função compute.admin a email@example.com, adicione a seguinte nova ligação à política:

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

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

    Substitua o seguinte:

    • PROJECT_ID : o ID do projeto ao qual 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 da VM.

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

Revogando o acesso aos recursos

Como prática recomendada, depois que os principais não precisarem mais de acesso aos recursos do Compute Engine, revogue o acesso deles.

Console

  1. No console do Google Cloud, acesse a página do respectivo recurso para o qual você deseja adicionar permissões.
  2. Marque as caixas de seleção ao lado dos recursos que você deseja 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, preencha o seguinte:
      1. Verifique se o painel de informações está visível. Se não estiver visível, clique em Mostrar painel de informações .
      2. Selecione a guia Permissões .
  4. Clique no cartão de função do qual você deseja remover os principais. Isso expande o cartão e mostra os usuários com essa função para esse recurso.
  5. Para remover um principal dessa função, clique em Excluir .

gcloud

Para remover uma função de uma entidade de segurança para um recurso, use o subcomando remove-iam-policy-binding do recurso com os sinalizadores --member e --role .

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

Substitua o seguinte:

  • RESOURCE_TYPE : tipo de recurso. Os 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. Deve estar no formato user|group|serviceAccount: EMAIL_ADDRESS ou domain: DOMAIN_ADDRESS . Por exemplo:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • ROLE : função da qual você deseja remover o principal.

Se você estiver revogando o acesso a um recurso que está em versão prévia, use um comando gcloud beta compute .

DESCANSAR

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

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

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

    Substitua o seguinte:

    • PROJECT_ID : o ID do projeto ao qual 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 da VM.

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

  2. Edite a política com um editor de texto para remover membros das funções associadas. Por exemplo, remova email@example.com da função compute.admin :

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

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

    Substitua o seguinte:

    • PROJECT_ID : o ID do projeto ao qual 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 da VM.

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

Testando se um chamador tem permissões

Se você não sabe quais permissões uma identidade possui, use o método de API testIamPermissions para verificar quais permissões estão disponíveis para uma identidade.

O método usa uma URL de recurso e um conjunto de permissões como parâmetros de entrada e retorna o conjunto de permissões permitidas ao chamador. Você pode usar esse método em qualquer um dos recursos suportados .

Normalmente, testIamPermissions destina-se à integração com seu software proprietário, como uma interface gráfica de usuário personalizada. Normalmente você não chama testIamPermissions se estiver usando Google Clouddiretamente para gerenciar permissões.

Por exemplo, se você estiver criando uma GUI com base na API Compute Engine e sua GUI tiver um botão "iniciar" que inicia uma instância, você poderá chamar compute.instances.testIamPermissions() para determinar se o botão deve ser ativado ou desativado.

Para testar se um chamador tem permissões específicas em um recurso:

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

    Por exemplo, em uma instância, você pode 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 habilitadas para o chamador.

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

Modificando o acesso a recursos para vários membros

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

O que vem a seguir