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 de pasta e como criar e gerenciar políticas do IAM para pastas usando a API Cloud 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 todo o recurso da organização Administrador de pastas Recurso da 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 abaixo do recurso da organização e criar um protótipo da hierarquia pretendida com antecedência.
  • 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 Permissões

(roles/resourcemanager.folderAdmin)

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

Recursos de nível mais baixo em que você pode conceder esse papel:

  • Pasta

essentialcontacts.*

  • essentialcontacts.contacts.create
  • essentialcontacts.contacts.delete
  • essentialcontacts.contacts.get
  • essentialcontacts.contacts.list
  • essentialcontacts.contacts.send
  • essentialcontacts.contacts.update

orgpolicy.constraints.list

orgpolicy.policies.list

orgpolicy.policy.get

resourcemanager.folders.*

  • resourcemanager.folders.create
  • resourcemanager.folders.delete
  • resourcemanager.folders.get
  • resourcemanager.folders.getIamPolicy
  • resourcemanager.folders.list
  • resourcemanager.folders.move
  • resourcemanager.folders.setIamPolicy
  • resourcemanager.folders.undelete
  • resourcemanager.folders.update

resourcemanager.hierarchyNodes.*

  • resourcemanager.hierarchyNodes.createTagBinding
  • resourcemanager.hierarchyNodes.deleteTagBinding
  • resourcemanager.hierarchyNodes.listEffectiveTags
  • resourcemanager.hierarchyNodes.listTagBindings

resourcemanager.projects.get

resourcemanager.projects.getIamPolicy

resourcemanager.projects.list

resourcemanager.projects.move

resourcemanager.projects.setIamPolicy

(roles/resourcemanager.folderIamAdmin)

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

Recursos de nível mais baixo em que você pode conceder esse papel:

  • Pasta

resourcemanager.folders.get

resourcemanager.folders.getIamPolicy

resourcemanager.folders.setIamPolicy

(roles/resourcemanager.folderCreator)

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

Recursos de nível mais baixo em que você pode conceder esse papel:

  • Pasta

essentialcontacts.contacts.get

essentialcontacts.contacts.list

orgpolicy.constraints.list

orgpolicy.policies.list

orgpolicy.policy.get

resourcemanager.folders.create

resourcemanager.folders.get

resourcemanager.folders.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/resourcemanager.folderEditor)

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

Recursos de nível mais baixo em que você pode conceder esse papel:

  • Pasta

essentialcontacts.contacts.get

essentialcontacts.contacts.list

orgpolicy.constraints.list

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)

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

Recursos de nível mais baixo em que você pode conceder esse papel:

  • Pasta

resourcemanager.folders.move

resourcemanager.projects.move

(roles/resourcemanager.folderViewer)

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

Recursos de nível mais baixo em que você pode conceder esse papel:

  • Pasta

essentialcontacts.contacts.get

essentialcontacts.contacts.list

orgpolicy.constraints.list

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, que são coleções de permissões adaptadas às suas necessidades. Ao criar um papel personalizado para usar com o Resource Manager, esteja ciente 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 deve incluir projects.list e projects.get.
  • Esteja ciente de que a permissão setIamPolicy para recursos de organização, pasta e projeto permite que o usuário conceda todas as outras permissões e, 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 concedidas são resourcemanager.folders.list, que permite que os usuários listem pastas em um recurso, e resourcemanager.projects.list, que permite que os usuários procurem projetos em um recurso ou pasta da organização. 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 principais de recursos da organização naveguem por toda a hierarquia de recursos da organização, as permissões de lista precisam ser concedidas no nível do recurso 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 difere um pouco dos requisitos de mover um projeto não pertencente à organização para o recurso da organização, em que os usuários precisam ter o papel Editor de projetos ou Proprietário do projeto no projeto e Criador de projetos no recurso da 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.

Isso permite que o usuário crie projetos na pasta sem que ele tenha visibilidade para todos os projetos no recurso da organização maior.