Controle de acesso para pastas com o IAM

O Google Cloud oferece o Gerenciamento de acesso e identidade (IAM Identity and Access Management), que permite a concessão de acesso mais granular a recursos específicos do Google Cloud e impede o acesso indesejado a outros recursos. Com o IAM, é possível adotar o princípio de segurança do menor privilégio para conceder apenas o acesso necessário aos recursos.

Por meio da definição de políticas do IAM, é possível atribuir papéis aos usuários para que eles acessem recursos específicos. As políticas de IAM concedem papéis específicos a um usuário, dando a ele certas permissões.

Nesta página, explicamos os papéis do IAM disponíveis no nível da pasta e como criar e gerenciar políticas do IAM para pastas que usam a API Resource Manager. Para uma descrição detalhada do IAM, leia a documentação do IAM. Em particular, consulte Como conceder, alterar e revogar acesso.

Visão geral dos papéis do IAM para pastas

Para ajudá-lo a configurar os papéis do IAM, a tabela a seguir lista:

  • o tipo das ações que você quer ativar;
  • os papéis necessários para realizar essas ações;
  • o nível de recurso no qual você precisa aplicar esses papéis.
Tipo de ações Papéis necessários Nível do recurso
Administrar pastas em toda a Organização Administrador de pastas Organização
Administrar uma pasta e todos os projetos e pastas que ela contém Administrador de pastas Pasta específica
Acessar e administrar as políticas do IAM de uma pasta Administrador de pastas do IAM Pasta específica
Criar novas pastas Criador de pastas Recurso pai no local das novas pastas
Mover pastas e projetos Transportador de pastas Recurso pai do local original e do novo local da pasta
Mover um projeto para uma nova pasta Editor de projetos ou Proprietário do projeto Recurso pai do local original e do novo local do projeto
Excluir uma pasta Editor de pastas ou Administrador de pastas Pasta específica

Melhores práticas para usar os papéis e permissões do IAM com pastas

Ao atribuir papéis e permissões do IAM para uso com pastas, lembre-se disso:

  • Use grupos sempre que possível para gerenciar membros.
  • Minimize o uso de papéis básicos, como proprietário, editor e visualizador. Em vez disso, tente usar os papéis predefinidos para o princípio do menor privilégio.
  • Para o gerenciamento de toda a pasta, atribua permissões no nível da pasta e faça os projetos herdá-las automaticamente. Por exemplo, você pode atribuir a um grupo de administrador de departamento o papel Administrador de pastas na pasta. Os administradores de rede que precisam ter permissões em todo o departamento podem ter o papel Administrador de rede na pasta.
  • Considere cuidadosamente quais permissões podem mudar antes de mover um recurso de uma pasta. Caso contrário, você corre o risco de corromper aplicativos atuais ou fluxos de trabalho que exigem essas permissões para o recurso.
  • Planeje e teste cuidadosamente sua hierarquia de recursos antes de mover projetos de produção para pastas. Uma maneira de fazer isso é criar uma pasta de teste sob o recurso da Organização e criar um modelo prévio da hierarquia pretendida.
  • A concessão de um papel a um usuário no nível da pasta dará esse papel a ele para todos os recursos nas pastas abaixo. Por exemplo, se você conceder a um usuário o papel de Administrador do Compute (roles/compute.admin) em uma pasta, esse usuário terá controle total de todos os recursos do Compute Engine em cada projeto na pasta.

Noções básicas sobre papéis e permissões de pastas

Funções padrão

Ao criar uma pasta, você recebe as funções de Administrador de pasta e Editor de pasta para, como seu criador, ter controle total sobre ela. Veja abaixo as permissões que terá com essas funções. Esses papéis padrão podem ser alterados normalmente em uma política do IAM.

Como usar papéis predefinidos

Papel Nome da função Descrição Permissões
roles/resourcemanager.folderAdmin Administrador de pastas

Concede todas as permissões disponíveis para trabalhar com pastas.

  • orgpolicy.constraints.*
  • orgpolicy.policies.list
  • orgpolicy.policy.get
  • resourcemanager.folders.*
  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.list
  • resourcemanager.projects.move
  • resourcemanager.projects.setIamPolicy
roles/resourcemanager.folderIamAdmin Administrador de pastas do IAM

Concede permissões para administrar as políticas de permissão em pastas.

  • resourcemanager.folders.get
  • resourcemanager.folders.getIamPolicy
  • resourcemanager.folders.setIamPolicy
roles/resourcemanager.folderCreator Criador de pastas

Concede permissões necessárias para navegar na hierarquia e criar pastas.

  • orgpolicy.constraints.*
  • orgpolicy.policies.list
  • orgpolicy.policy.get
  • resourcemanager.folders.create
  • resourcemanager.folders.get
  • resourcemanager.folders.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
roles/resourcemanager.folderEditor Editor de pastas

Concede permissão para modificar pastas, bem como para visualizar a política de permissões de uma pasta.

  • orgpolicy.constraints.*
  • orgpolicy.policies.list
  • orgpolicy.policy.get
  • resourcemanager.folders.delete
  • resourcemanager.folders.get
  • resourcemanager.folders.getIamPolicy
  • resourcemanager.folders.list
  • resourcemanager.folders.undelete
  • resourcemanager.folders.update
  • resourcemanager.projects.get
  • resourcemanager.projects.list
roles/resourcemanager.folderMover Transportador de pastas

Concede permissões para mover projetos e pastas para dentro e para fora de uma organização ou pasta pai.

  • resourcemanager.folders.move
  • resourcemanager.projects.move
roles/resourcemanager.folderViewer Leitor de pastas

Concede permissão para acessar uma pasta e listar as pastas e os projetos abaixo de um recurso.

  • orgpolicy.constraints.*
  • orgpolicy.policies.list
  • orgpolicy.policy.get
  • resourcemanager.folders.get
  • resourcemanager.folders.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Como criar papéis personalizados

Além dos papéis predefinidos descritos neste tópico, é possível criar papéis personalizados. Eles são conjuntos de permissões que você adapta de acordo com suas necessidades. Ao criar um papel personalizado para usar com o Gerenciador de Recursos, lembre-se dos seguintes pontos:
  • as permissões list e get, como resourcemanager.projects.get/list, devem sempre ser concedidas como um par;
  • Quando seu papel personalizado inclui as permissões folders.list e folders.get, ele também precisa incluir projects.list e projects.get.
  • Saiba que a permissão setIamPolicy para organizações, pastas e projetos permite que o usuário conceda todas as outras permissões. Portanto, ela precisa ser atribuída com cuidado.

Como atribuir papéis para ativar a procura nas pastas

As permissões de lista permitem a procura nas pastas. Os dois tipos de permissões de lista que normalmente precisam ser concedidos são resourcemanager.folders.list, que permite aos usuários listar pastas em um recurso, e resourcemanager.projects.list, que permite aos usuários procurar projetos em uma organização ou pasta. O papel Administrador de organização é inicializado com as duas permissões. Para usuários que não receberam o papel Administrador de organização:

  • resourcemanager.folders.list pode ser concedido pelos papéis Visualizador de pastas e no Editor de pastas.
  • resourcemanager.projects.list pode ser concedido pelos papéis Visualizador ou Navegador.

Para que os membros da organização procurem por toda a hierarquia dela, as permissões de lista precisam ser concedidas no nível da organização.

Como atribuir papéis para ativar a criação de pastas

Os usuários que têm necessidade de criar pastas precisam ter o papel Criador de pastas em um recurso na hierarquia acima do nível em que elas serão criadas. Pode ser útil conceder permissões de procura juntamente com permissões de criação de pastas para que os usuários possam procurar efetivamente até onde a pasta será criada na hierarquia. Consulte a seção acima para saber mais sobre permissões de procura.

Com o papel Criador de pastas, o usuário não tem permissão para excluir uma pasta. No entanto, quando uma pessoa cria uma pasta, ela recebe automaticamente o papel Editor de pastas. O papel Editor de pastas permite que pastas sejam excluídas.

Como atribuir papéis para ativar o movimento de pastas

Para mover uma pasta de um recurso pai para outro, os usuários precisam ter o papel Transportador de pastas em recursos pai antigos e novos ou em um ancestral comum.

Como atribuir papéis para permitir a movimentação de projetos

Para mover um projeto para uma pasta, os usuários precisam ter os papéis Editor de projetos ou Proprietário do projeto no projeto e Transportador de projetos nos recursos pai de origem e de destino.

Isso é um pouco diferente dos requisitos para mover um projeto que não é da organização para a Organização, na qual os usuários devem ter o papel Editor do projeto ou Proprietário do projeto no projeto e o papel Criador de projetos na Organização.

Como conceder papéis específicos de pasta para ativar a criação do projeto

Para criar projetos, os usuários precisam ter a função Criador de projetos. No entanto, em vez de conceder essa permissão em toda a organização, recomendamos que você restrinja a criação e visualização de projetos do usuário a apenas uma determinada pasta.

Para conceder permissões específicas de pasta:

  1. Conceda ao usuário o papel Visualizador da organização no nível do Org Node. Por exemplo, domain.com.
  2. Crie uma nova pasta.
  3. Adicione o usuário ao IAM no nível da pasta e conceda a ele os papéis Visualizador de pastas e Criador de projetos.

Desse modo, o usuário pode criar projetos na própria pasta sem que lhe tenha sido concedida visibilidade para cada projeto em toda a organização.