Noções básicas sobre os papéis personalizados de IAM

O Cloud Identity and Access Management (Cloud IAM) fornece papéis predefinidos que dão acesso granular a recursos específicos do Google Cloud e impedem o acesso indesejado a outros recursos.

Com o Cloud IAM, você também cria papéis personalizados. É possível criar um papel personalizado do Cloud IAM com uma ou mais permissões e atribuí-lo a usuários. Uma IU e uma API são fornecidas para criar e gerenciar esses papéis.

Neste tópico, não há uma lista abrangente de todas as permissões do Cloud IAM que se pode incluir nos papéis personalizados. Para verificar se uma permissão específica é compatível com papéis personalizados, consulte Nível de compatibilidade de permissões em papéis personalizados.

Antes de começar

Conceitos básicos

No Cloud IAM, as permissões não são concedidas diretamente aos usuários. Em vez disso, eles recebem papéis que agrupam uma ou mais permissões. Existem três tipos de papéis no Cloud IAM: primários, predefinidos e personalizados.

Os papéis primários incluem três papéis que existiam antes do advento do Cloud IAM: Proprietário, Editor e Visualizador.

Os papéis predefinidos são criados e mantidos pelo Google. As permissões são atualizadas automaticamente conforme necessário, por exemplo, quando novos recursos ou serviços são adicionados ao Google Cloud.

Os papéis personalizados são definidos pelo usuário e permitem agrupar uma ou mais permissões compatíveis para atender a necessidades específicas. Esses papéis não são mantidos pelo Google. Quando novos serviços, recursos ou permissões são adicionados ao Google Cloud, os papéis personalizados não são atualizados automaticamente.

Ao criar um papel personalizado, é necessário escolher uma organização ou um projeto para criá-lo neles. E depois conceder o papel personalizado na organização ou no projeto, bem como os recursos dentro deles.

Para criar um papel personalizado, combine uma ou mais permissões disponíveis do Cloud IAM. Com as permissões, os usuários executam ações específicas nos recursos do Google Cloud. No Cloud IAM, essas permissões são representadas no seguinte formato:

service.resource.verb

Por exemplo, a permissão compute.instances.list permite que um usuário liste as instâncias do Google Compute Engine que tem, enquanto compute.instances.stop permite que um usuário interrompa uma VM.

Geralmente, a correspondência entre as permissões e os métodos REST é de 1:1, mas nem sempre. Ou seja, cada serviço do Google Cloud tem uma permissão associada para cada método REST que ele inclui. Para chamar um método, o autor da chamada precisa dessa permissão. Por exemplo, o autor da chamada de topic.publish() precisa da permissão pubsub.topics.publish.

Só é possível conceder um papel personalizado no projeto ou na organização em que ele foi criado. Não é possível conceder papéis personalizados em outros projetos ou organizações nem em recursos dentro de outros projetos ou organizações.

Permissões e papéis obrigatórios

Para criar um papel personalizado, o autor da chamada precisa ter a permissão iam.roles.create.

Os usuários que não são proprietários, incluindo administradores da organização, precisam ter o papel de administrador de papéis da organização (roles/iam.organizationRoleAdmin) ou administrador de papéis do IAM (roles/iam.roleAdmin). O papel de avaliador de segurança do IAM (roles/iam.securityReviewer) permite visualizar os papéis personalizados, mas não os administrar. Para saber como conceder esses papéis, consulte Como conceder, alterar e revogar acesso.

A interface do usuário de papéis personalizados está no Console do Google Cloud em "Papéis do IAM". Ela só fica disponível para usuários que têm permissões para criar ou gerenciar esses papéis. Por padrão, somente proprietários de projeto criam novos papéis. Para controlar o acesso a esses recursos, os proprietários atribuem o papel de Administrador de papéis de IAM a outros membros do mesmo projeto. No caso das organizações, somente os Administradores da organização atribuem o papel de Administrador de papéis da organização.

Os papéis administrativos estão descritos com mais detalhes abaixo.

Administrador de papéis da organização

Se você tem uma organização associada à sua conta do GCP, com o papel de Administrador de papéis da organização é possível administrar todos os papéis personalizados da sua organização. Esse papel só pode ser atribuído no nível da organização e somente Administradores da organização podem concedê-lo.

Na tabela abaixo, você tem uma lista das permissões desse papel:

Papel Permissões
roles/iam.organizationRoleAdmin iam.roles.create
iam.roles.delete
iam.roles.undelete
iam.roles.get
iam.roles.list
iam.roles.update
resourcemanager.projects.get
resourcemanager.projects.getIamPolicy
resourcemanager.projects.list
resourcemanager.organizations.get
resourcemanager.organizations.getIamPolicy

Papel Administrador de papéis

Usando o papel de Administrador de papéis, você consegue administrar todos os papéis personalizados de um projeto. Use esse papel se não tiver uma organização. Ele só pode ser concedido para envolvidos no projeto pelos proprietários do projeto ou da organização.

Veja na tabela abaixo uma lista das permissões desse papel:

Papel Permissões
roles/iam.roleAdmin iam.roles.create
iam.roles.delete
iam.roles.undelete
iam.roles.get
iam.roles.list
iam.roles.update
resourcemanager.projects.get
resourcemanager.projects.getIamPolicy

Ciclo de vida dos papéis personalizados

Há alguns conceitos que se aplicam na hora de decidir como você pretende modelar, criar e gerenciar os papéis personalizados.

Criação

Antes de decidir criar um papel personalizado, verifique se o serviço tem um papel predefinido ou uma combinação de vários papéis predefinidos que atenda às suas necessidades. Para uma lista completa de papéis predefinidos, bem como as permissões incluídas em cada um deles, consulte a referência de papéis predefinidos.

Se não houver um papel predefinido ou uma combinação de papéis predefinidos que atenda às suas necessidades, crie um papel personalizado que inclua apenas as permissões que você precisa conceder. Para detalhes, consulte Como criar e gerenciar papéis personalizados.

Permissões incompatíveis ou indisponíveis

Algumas permissões podem não estar visíveis para você ou utilizáveis para um papel personalizado. Por exemplo, uma permissão pode não estar disponível para uso em papéis personalizados se o serviço estiver na versão Beta ou se você não ativou a API para o serviço.

Para verificar se é possível usar uma permissão específica em papéis personalizados, consulte Nível de suporte para permissões em papéis personalizados. Para verificar quais permissões é possível usar com um recurso específico, consulte Como ver as permissões disponíveis para um recurso.

Dependências da permissão

Algumas permissões só são eficazes quando concedidas em pares. Por exemplo, para atualizar uma política do Cloud IAM, é preciso usar o padrão read-modify-write. Consequentemente, para atualizar uma política, você quase sempre precisa da permissão getIamPolicy para esse tipo de recurso e serviço, além da permissão setIamPolicy.

Para garantir que os papéis personalizados sejam eficazes, é possível criá-los com base em papéis predefinidos com permissões semelhantes. Com os papéis predefinidos, é possível ver quais permissões são normalmente usadas em conjunto.

Para saber como criar um papel personalizado com base em um papel predefinido, consulte Como criar e gerenciar papéis personalizados.

Como nomear o papel

Os papéis têm um código e um título. O código do papel é um identificador exclusivo dele. O título do papel aparece na lista de papéis no Console do Cloud.

Os códigos dos papéis precisam ser exclusivos no projeto ou na organização em que você os criou. Isso garante que o código completo do papel, que inclui o projeto ou a organização, seja exclusivo. Os códigos dos papéis podem ter até 64 caracteres e conter caracteres alfanuméricos maiúsculos e minúsculos, sublinhados e pontos.

Não é possível alterar os códigos dos papéis. Portanto, escolha-os com cuidado. É possível excluir um papel personalizado, mas não criar um novo com o mesmo código completo até que o processo de exclusão de 37 dias seja concluído. Para mais informações sobre o processo de exclusão, consulte Como excluir um papel personalizado.

O título de um papel personalizado não precisa ser exclusivo. Portanto, o Console do Cloud pode exibir mais de um papel personalizado com o mesmo título. Para evitar confusões, use títulos exclusivos e descritivos nos papéis personalizados. Considere também indicar no título do papel se ele é no nível da organização ou do projeto.

Os títulos dos papéis podem ter até 100 bytes e conter caracteres alfanuméricos maiúsculos e minúsculos e símbolos. É possível alterar os títulos dos papéis a qualquer momento.

Descrição do papel

Recomendamos que você atualize a descrição depois de editar um papel personalizado e inclua a data em que ele foi modificado e um resumo da finalidade pretendida para ele. As descrições podem ter até 256 caracteres e consistem em caracteres alfanuméricos maiúsculos e minúsculos e símbolos.

Como testar e implantar

Os papéis personalizados incluem uma propriedade role.stage. Inicialmente, defina o estágio como ALPHA para indicar que o papel está em uma fase inicial do desenvolvimento, não está pronto para produção. Em seguida, permite que um pequeno conjunto de membros da organização use o papel em alguns casos de uso de amostra.

Quando os membros estiverem satisfeitos com o papel personalizado recém-criado, altere a propriedade role.stage para BETA ou GA. Em geral, se o papel faz referência a permissões de serviços que estão na versão Beta, é preciso marcá-lo como BETA e não GA, até que o serviço não esteja mais nessa versão.

Manutenção

As funções de jobs e funcionalidades dos produtos estão em constante evolução. Manter os papéis personalizados atualizados e seguir o princípio do menor privilégio requer esforços de manutenção.

Por exemplo, quando um serviço lançado recebe novos recursos Beta, os métodos da API ficam disponíveis publicamente e as permissões são adicionadas automaticamente aos respectivos papéis primários e predefinidos. Os papéis personalizados do serviço não herdam essas novas permissões. Isso significa que os usuários que têm esses papéis atribuídos podem relatar que não conseguem acessar esses recursos. Há duas possibilidades: adicioná-los ou criar um papel separado somente para conceder esse acesso a determinados usuários.

Quando o Google atualiza um papel predefinido, adicionando ou removendo permissões, os papéis personalizados baseados nesse papel não são modificados. Papéis personalizados são listas simples de permissões e não têm links para os papéis predefinidos em que podem ter sido baseados.

Se o papel personalizado for baseado em papéis predefinidos, recomendamos listá-los no campo de descrição do papel personalizado. Isso facilita que você verifique se o papel personalizado precisa ser atualizado com base nas alterações feitas em um papel predefinido. O Console do Cloud coloca automaticamente essas informações na descrição quando cria um novo papel personalizado. Para saber como atualizar a descrição de um papel personalizado, consulte Como editar um papel personalizado.

Consulte o registro de alterações de permissões para determinar quais papéis e permissões foram alterados recentemente.

Como desativar papéis personalizados

Se você não quiser mais que as pessoas na sua organização usem o papel, altere sua propriedade role.stage para DEPRECATED e, opcionalmente, defina deprecation_message para que os usuários saibam quais papéis alternativos devem ser usadas ou onde conseguir mais informações. Além disso, confira se não há políticas na sua organização que façam referência ao papel obsoleto.

Quando tiver certeza de que o papel pode ser desativado, chame roles:UpdateRole() para desativá-lo.

Limitações conhecidas

  • Alguns papéis predefinidos contêm permissões que não são permitidas em papéis personalizados. Para verificar se é possível usar uma permissão específica em um papel personalizado, consulte Nível de suporte para permissões em papéis personalizados.
  • A permissão resourcemanager.projects.list é compatível apenas com papéis personalizados no nível da organização. Ela não é permitida em papéis personalizados para envolvidos no projeto. Quando você copia um papel predefinido que inclui a permissão resourcemanager.projects.list em um novo papel personalizado para envolvidos no projeto, uma das seguintes mensagens será exibida:
    • Console do Cloud: a seguinte mensagem de aviso é exibida: "Não aplicável a papéis personalizados para envolvidos no projeto". A permissão resourcemanager.projects.list será automaticamente desmarcada na lista de permissões incluídas para você prosseguir com a criação do papel.
    • Ferramenta de linha de comando gcloud do SDK do Cloud: a seguinte mensagem de erro é retornada: INVALID_ARGUMENT: Permission resourcemanager.projects.list is not valid. O papel personalizado não será criado até que você remova a permissão resourcemanager.projects.list da definição do papel e tente a operação novamente.
    • APIs do Google Cloud: a seguinte mensagem de erro é retornada: Permission resourcemanager.projects.list is not valid, com um código de erro HTTP 400 e o status INVALID_ARGUMENT. O papel personalizado não será criado até que você remova a permissão resourcemanager.projects.list da definição do papel e tente a operação novamente.

A seguir

Saiba como criar papéis personalizados.