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
- Para usar os exemplos de linha de comando deste guia, siga estas etapas:
- Instale ou atualize a ferramenta de linha de comando gcloud para a versão mais recente.
- Defina uma região e uma zona padrão.
- Para usar os exemplos da API deste guia, configure o acesso a ela.
- 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 .
Recursos compatíveis
O Compute Engine é compatível com o controle de acesso no nível dos seguintes recursos:
Não é possível controlar o acesso no nível dos demais recursos do Compute Engine. Portanto, você precisa gerenciar o acesso a eles para envolvidos no projeto, nível da pasta ou da organização. Para informações sobre organizações, pastas ou projetos, consulte Hierarquia de recursos.
Como conceder acesso aos recursos do Compute Engine
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
- No Console do Google Cloud, acesse a página do recurso para qual você quer incluir permissões.
- Para instâncias, acesse a página Instâncias de VMs.
- Para ver discos regionais e por zona, acesse a página "Discos".
- Para instantâneos, acesse a página Instantâneos.
- Para imagens, acesse a página Imagens.
- Para grupos de instâncias, acesse a página "Grupos de instâncias".
- Para modelos de instância, acesse a página "Modelos de instância".
- Para nós de locatário individual, acesse a página "Nós de locatário individual".
- Marque as caixas de seleção ao lado dos recursos que você quer atualizar.
- Clique em Mostrar painel de informações para expandir a coluna de permissões.
- No campo Adicionar membros, adicione um ou mais membros.
- Na lista Selecionar um papel, escolha um ou mais papéis.
- Clique em Adicionar para salvar as mudanças.
gcloud
Para conceder um papel a um membro em um recurso, use o subcomando add-iam-policy-binding
do recurso com as sinalizações --member
e --role
.
gcloud compute resource-type add-iam-policy-binding resource-name \
--member='member' \
--role='role'
Substitua o seguinte:
resource-type
: o tipo do recurso. Alguns dos valores válidos são:disks
images
instances
instance-templates
regionDisks
sole-tenancy node-groups
sole-tenancy node-templates
snapshots
resource-name
: o nome do recurso. Por exemplo,my_instance
.member
: uma identidade válida para a qual você quer conceder o papel. Precisa estar no formatouser|group|serviceAccount:email
oudomain:domain
. 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 à identidade.
Se você estiver concedendo acesso a um recurso que está em Beta no momento, use um comando gcloud beta compute
.
API
Para modificar uma política do IAM por meio da API, faça o seguinte:
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/instance:getIamPolicy
Substitua o seguinte:
project-id
: ID do projeto que contém a VM.zone
: a zona da VM. Para recursos regionais ou globais, substituazones/zone
porregions/region
ouglobal
.instance
: o nome da instância de VM.
O Compute Engine retorna a política atual na resposta.
Edite a política com um editor de texto para incluir ou remover membros 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" }
Grave a política atualizada com
setIamPolicy()
:POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance:setIamPolicy
Substitua o seguinte:
project-id
: ID do projeto que contém a VM.zone
: a zona da VM. Para recursos regionais ou globais, substituazones/zone
porregions/region
ouglobal
.instance
: 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
- No Console do Google Cloud, acesse a página do recurso para qual você quer incluir permissões.
- Para instâncias, acesse a página Instâncias de VMs.
- Para ver discos regionais e por zona, acesse a página "Discos".
- Para instantâneos, acesse a página Instantâneos.
- Para imagens, acesse a página Imagens.
- Para grupos de instâncias, acesse a página "Grupos de instâncias".
- Para modelos de instância, acesse a página "Modelos de instância".
- Para nós de locatário individual, acesse a página "Nós de locatário individual".
- Marque as caixas de seleção ao lado dos recursos que você quer atualizar.
- Clique em Mostrar painel de informações para expandir a coluna de permissões.
- Clique no cartão do papel do recurso de que você quer remover membros. Isso expande o cartão e mostra os membros com esse papel no recurso.
- Clique em Excluir para remover um membro desse papel.
gcloud
Para remover um papel de um membro em 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 o seguinte:
resource-type
: tipo do recurso. Alguns dos valores válidos são:disks
images
instances
instance-templates
regionDisks
sole-tenancy node-groups
sole-tenancy node-templates
snapshots
resource-name
: nome do recurso. Por exemplo,my_instance
.member
: a identidade que você quer remover. Precisa estar no formatouser|group|serviceAccount:email
oudomain:domain
. 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 em versão Beta, use um comando gcloud beta compute
.
API
Para modificar uma política do IAM diretamente por meio da API, faça o seguinte:
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/instance:getIamPolicy
Substitua o seguinte:
project-id
: o ID do projeto da instância de VM.zone
: a zona da VM. Para recursos regionais ou globais, substituazones/zone
porregions/region
ouglobal
.instance
: o nome da instância de VM.
O Compute Engine retorna a política atual na resposta.
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" }
Grave a política atualizada com
setIamPolicy()
:POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance:setIamPolicy
Substitua o seguinte:
project-id
: ID do projeto que contém a VM.zone
: a zona da VM. Para recursos regionais ou globais, substituazones/zone
porregions/region
ouglobal
.instance
: 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:
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
ecompute.instances.delete
.POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-name/setIamPolicy { "permissions": [ "compute.instances.start", "compute.instances.stop", "compute.instances.delete" ] }
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
- Saiba como gerenciar o acesso a imagens personalizadas com o IAM.
- Saiba mais sobre contas de serviço.
- Saiba mais sobre os Papéis do IAM do Compute Engine.
- Saiba mais sobre as permissões incluídas nos papéis predefinidos do IAM do Compute Engine.
- Saiba como criar e gerenciar papéis personalizados.