Ao adicionar um novo membro ao seu projeto, é possível usar uma política de gerenciamento de identidade e acesso (IAM) para conceder a esse membro um ou mais papéis do IAM. Cada papel do IAM contém permissões que concedem ao membro acesso a recursos específicos.
O Compute Engine tem um conjunto de papéis de IAM predefinidos que são descritos nesta página. Também é possível criar papéis personalizados que contenham subconjuntos de permissões mapeadas diretamente para suas necessidades.
Para saber quais permissões são necessárias para cada método, consulte a documentação de referência da API Compute Engine:
Para informações sobre como conceder acesso, consulte as páginas a seguir.
- Para definir políticas do IAM no nível do projeto, consulte Como conceder, alterar e revogar acesso a recursos na documentação do IAM.
- Para definir políticas em recursos específicos do Compute Engine, leia Como conceder acesso a recursos do Compute Engine.
- Para atribuir papéis a uma conta de serviço do Compute Engine, leia Como criar e ativar contas de serviço para instâncias.
Antes de começar
- Leia a documentação do IAM.
O que é IAM?
O Google Cloud oferece o IAM, que permite atribuir acesso granular a recursos específicos da plataforma e impede o acesso indesejado a outros recursos. Com o IAM, é possível adotar o princípio de segurança do menor privilégio (em inglês) para conceder apenas o acesso necessário aos recursos.
O IAM permite controlar quem (identidade) tem qual (papéis) permissão para quais recursos. Basta definir as políticas. As políticas do IAM concedem papéis específicos a um membro do projeto, dando à identidade algumas permissões. Por exemplo, para determinado recurso, como um projeto, é possível atribuir o papel roles/compute.networkAdmin
a uma Conta do Google, que então poderá controlar recursos relacionados à rede no projeto, mas não poderá gerenciar outros recursos, como instâncias e discos. Também é possível usar o IAM para gerenciar os papéis legados do console do Google Cloud concedidos aos membros da equipe do projeto.
O papel serviceAccountUser
Quando concedido com
roles/compute.instanceAdmin.v1
,
roles/iam.serviceAccountUser
atribui aos membros a capacidade de criar e gerenciar instâncias que usam uma conta de serviço. De maneira específica,
conceder roles/iam.serviceAccountUser
e roles/compute.instanceAdmin.v1
juntos dá aos membros permissão para:
- criar uma instância executada como conta de serviço;
- anexar um disco permanente a uma instância executada como conta de serviço;
- definir metadados de instância em uma instância executada como conta de serviço;
- usar SSH para se conectar a uma instância executada como conta de serviço;
- reconfigurar uma instância para ser executada como uma conta de serviço.
É possível conceder roles/iam.serviceAccountUser
das seguintes maneiras:
Recomendado. Conceda o papel a um membro em uma conta de serviço específica. Com isso, o membro tem acesso à conta de serviço em que é um
iam.serviceAccountUser
, mas não pode acessar outras contas de serviço em que não é umiam.serviceAccountUser
.Conceda o papel a um membro no nível do projeto. O membro tem acesso a todas as contas de serviço do projeto, incluindo as que forem criadas no futuro.
Saiba mais sobre contas de serviço se não tiver familiaridade com elas.
Permissão do Console do Google Cloud
Para usar o Console do Google Cloud e acessar os recursos do Compute Engine, é preciso ter um papel que contenha a permissão a seguir no projeto:
compute.projects.get
Como se conectar a uma instância como instanceAdmin
Depois de conceder a função roles/compute.instanceAdmin.v1
a um membro do projeto, ele
pode se conectar a instâncias de máquina virtual usando ferramentas padrão do Google
Cloud, como CLI gcloud ou o
SSH do navegador.
Quando um membro usa a CLI gcloud ou o SSH no navegador, as ferramentas geram automaticamente um par de chaves públicas/privadas e adicionam a chave pública aos metadados do projeto. Se o membro não tiver permissões para editar metadados do projeto, a ferramenta adicionará a chave pública do membro aos metadados da instância.
Se o membro tiver um par de chaves existente que queira usar, ele poderá adicionar manualmente a chave pública aos metadados da instância. Saiba mais sobre como adicionar chaves SSH a uma instância.
IAM com contas de serviço
Crie novas contas de serviço personalizadas e conceda papéis de IAM a contas de serviço para limitar o acesso das suas instâncias. Use papéis de IAM com contas de serviço personalizadas para:
- limitar o acesso das instâncias às APIs do Google Cloud usando papéis de IAM granulares;
- dar a cada instância ou conjunto de instâncias uma identidade exclusiva;
- limitar o acesso à sua conta de serviço padrão.
Saiba mais sobre contas de serviço.
Grupos de instâncias gerenciadas e IAM
Os grupos de instâncias gerenciadas (MIGs, na sigla em inglês) são recursos que executam ações em seu nome sem interação direta do usuário. Por exemplo, o MIG pode adicionar e remover VMs do grupo.
Todas as operações realizadas pelo Compute Engine como parte do MIG são
realizadas pelo
Agente de serviço do Google APIs
do projeto, que foi um endereço de e-mail como o seguinte:
PROJECT_ID@cloudservices.gserviceaccount.com
Por padrão, o agente de serviço das APIs do Google recebe o papel de editor
(roles/editor
) para envolvidos no projeto, o que dá privilégios suficientes para
criar recursos com base na configuração do grupo. Se você estiver personalizando
o acesso ao agente de serviço de APIs do Google, conceda o papel de administrador de instância do Compute (v1) (roles/compute.instanceAdmin.v1
)
e, opcionalmente, o papel de usuário da conta de serviço
(roles/iam.serviceAccountUser
). O papel de Usuário da conta de serviço é necessário
somente se o MIG criar VMs que possam ser executadas como uma conta de serviço.
O agente de serviço de APIs do Google também é usado por outros processos, incluindo o Deployment Manager.
Ao criar um MIG ou atualizar o modelo de instância, o Compute Engine valida se o agente de serviço de APIs do Google tem o papel e as permissões a seguir:
- Papel de usuário da conta de serviço, importante se você planeja criar instâncias que podem ser executadas como uma conta de serviço
- Permissões para todos os recursos referenciados nos modelos de instância, como imagens, discos, redes VPC e sub-redes.
Papéis predefinidos do IAM do Compute Engine
Com o IAM, todo método de API na API Cloud Engine exige que a identidade que faz a solicitação de API tenha as permissões apropriadas para usar o recurso. As permissões são concedidas pela definição de políticas que concedem papéis a um membro (usuário, grupo ou conta de serviço) do projeto.
Além dos papéis básicos (visualizador, editor, proprietário) e dos papéis personalizados, é possível atribuir os seguintes papéis predefinidos do Compute Engine aos membros do projeto.
Você pode conceder vários papéis a um dos membros do mesmo projeto. Por exemplo, se a equipe de rede também gerencia regras de firewall, é possível conceder roles/compute.networkAdmin
e roles/compute.securityAdmin
ao grupo do Google da equipe de rede.
Nas tabelas a seguir, descrevemos os papéis predefinidos do IAM do Compute Engine e as permissões contidas em cada um. Cada papel inclui um conjunto de permissões adequado a uma tarefa específica. Por exemplo, os papéis de Administrador da instância concedem permissões para gerenciar instâncias, os papéis relacionados à rede incluem permissões para gerenciar recursos relacionados à rede, e o papel de segurança inclui permissões para gerenciar recursos relacionados à segurança, como firewalls e certificados SSL.
Papel Administrador do Compute
Detalhes | Permissões |
---|---|
Administrador do Compute( Controle total de todos os recursos do Compute Engine. Se o usuário estiver gerenciando instâncias de máquina virtual configuradas para serem executadas como uma conta de serviço, também será necessário atribuir o papel Recursos de nível mais baixo em que você pode conceder esse papel:
|
compute.*
resourcemanager.projects.get resourcemanager.projects.list serviceusage.quotas.get serviceusage.services.get serviceusage.services.list |
Papel Usuário de imagens do Compute
Detalhes | Permissões |
---|---|
Usuário de imagens do Compute( Permissão para listar e ler imagens sem ter outras permissões na imagem. A concessão desse papel no nível do projeto permite que os usuários listem todas as imagens no projeto e criem recursos, como instâncias e discos permanentes, com base nas imagens do projeto. Recursos de nível mais baixo em que você pode conceder esse papel:
|
compute.images.get compute.images.getFromFamily compute.images.list compute.images.useReadOnly resourcemanager.projects.get resourcemanager.projects.list serviceusage.quotas.get serviceusage.services.get serviceusage.services.list |
Papel Administrador de instâncias do Compute (Beta)
Detalhes | Permissões |
---|---|
Administrador da instância do Compute (Beta)( Permissões para criar, modificar e excluir instâncias de máquina virtual. Isso inclui permissões para criar, modificar e excluir discos, além de definir configurações de VM protegida. Se o usuário estiver gerenciando instâncias de máquina virtual configuradas para serem executadas como uma conta de serviço, também será necessário atribuir o papel Por exemplo, se sua empresa tem um funcionário que gerencia grupos de instâncias de máquina virtual, mas não gerencia configurações de rede ou de segurança nem instâncias executadas como contas de serviço, conceda esse papel na organização, na pasta ou no projeto que contém as instâncias ou conceda-o em instâncias individuais. Recursos de nível mais baixo em que você pode conceder esse papel:
|
compute.acceleratorTypes.*
compute. compute. compute.addresses.get compute.addresses.list compute.addresses.use compute.addresses.useInternal compute.autoscalers.*
compute.diskTypes.*
compute.disks.create compute.disks.createSnapshot compute.disks.delete compute.disks.get compute.disks.list compute.disks.resize compute.disks.setLabels compute. compute. compute. compute.disks.update compute.disks.use compute.disks.useReadOnly compute.globalAddresses.get compute.globalAddresses.list compute.globalAddresses.use
compute.
compute.globalOperations.get compute.globalOperations.list compute.images.get compute.images.getFromFamily compute.images.list compute.images.useReadOnly
compute.
compute.instanceGroups.*
compute.instanceTemplates.*
compute.instances.*
compute.licenses.get compute.licenses.list compute.machineImages.*
compute.machineTypes.*
compute.
compute.networks.get compute.networks.list compute.networks.use compute.networks.useExternalIp compute.projects.get
compute.
compute.regionOperations.get compute.regionOperations.list compute.regions.*
compute.reservations.get compute.reservations.list compute. compute.subnetworks.get compute.subnetworks.list compute.subnetworks.use compute. compute.targetPools.get compute.targetPools.list compute.zoneOperations.get compute.zoneOperations.list compute.zones.*
resourcemanager.projects.get resourcemanager.projects.list serviceusage.quotas.get serviceusage.services.get serviceusage.services.list |
Papel Administrador de instâncias do Compute (v1)
Detalhes | Permissões |
---|---|
administrador de instâncias do Compute (v1)( Controle total de instâncias, grupos de instâncias, discos, snapshots e imagens do Compute Engine. Acesso de leitura a todos os recursos de rede do Compute Engine. Se você conceder esse papel a um usuário apenas no nível da instância, o usuário não poderá criar novas instâncias. |
compute.acceleratorTypes.*
compute. compute. compute.addresses.get compute.addresses.list compute.addresses.use compute.addresses.useInternal compute.autoscalers.*
compute.backendBuckets.get compute.backendBuckets.list compute.backendServices.get compute.backendServices.list compute.diskTypes.*
compute.disks.*
compute. compute. compute.firewalls.get compute.firewalls.list compute.forwardingRules.get compute.forwardingRules.list compute.globalAddresses.get compute.globalAddresses.list compute.globalAddresses.use compute. compute. compute.
compute.
compute.globalOperations.get compute.globalOperations.list compute.healthChecks.get compute.healthChecks.list compute.httpHealthChecks.get compute.httpHealthChecks.list compute.httpsHealthChecks.get compute.httpsHealthChecks.list compute.images.*
compute.
compute.instanceGroups.*
compute.instanceTemplates.*
compute.instances.*
compute.instantSnapshots.*
compute. compute.
compute.
compute.
compute.interconnects.get compute.interconnects.list compute.licenseCodes.*
compute.licenses.*
|