Aplique o menor privilégio às recomendações

Nesta página, fornecemos uma visão geral do recomendador do IAM. O recomendador do IAM ajuda a aplicar o princípio do menor privilégio, garantindo que os membros tenham apenas as permissões de que realmente precisam.

Como funciona o recomendador do IAM

O IAM usa o recomendador para comparar atribuições de papel no nível do projeto com as permissões que cada membro usou nos últimos 90 dias. Se você conceder um papel no nível do projeto a um membro e o membro não usar todas as permissões desse papel, o recomendador do IAM provavelmente recomendará a revogação do papel. Se necessário, o recomendador do IAM também recomendará papéis menos permissivos como substitutos. O recomendador do IAM nunca sugere uma alteração que aumente o nível de acesso de um membro.

O recomendador do IAM também usa o machine learning para identificar as permissões no papel atual de um membro, que ele provavelmente usará no futuro, mesmo que ele não tenha usado essas permissões nos últimos 90 dias.

O recomendador do IAM não aplica recomendações automaticamente. Em vez disso, você precisa analisar cada recomendação e, em seguida, aplicar ou dispensar a recomendação.

O recomendador do IAM avalia somente as atribuições de papel feitas no nível do projeto e que já existem há pelo menos 90 dias. Ele não avalia nenhum dos seguintes itens:

Permissões usadas por cada membro

Para criar recomendações, o recomendador do IAM identifica as permissões que cada membro usou nos últimos 90 dias. Existem algumas formas de um membro poder usar uma permissão:

  • Diretamente, chamando uma API que requer a permissão.

    Por exemplo, o método roles.list na API REST do IAM requer a permissão iam.roles.list. Quando você chama o método roles.list, você usa a permissão iam.roles.list.

    Da mesma forma, ao chamar o método testIamPermissions para um recurso, você usa efetivamente todas as permissões que está testando.

  • indiretamente, usando o Console do Google Cloud para trabalhar com recursos do Google Cloud.

    Por exemplo, no Console do Cloud, é possível editar uma instância de máquina virtual (VM) do Compute Engine, que exige permissões diferentes com base nas configurações alteradas. No entanto, o Console do Cloud também exibe as configurações atuais que exigem a permissão compute.instances.get.

    Como resultado, ao editar uma instância de VM no Console do Cloud, você usa a permissão compute.instances.get.

Machine learning

Em alguns casos, é provável que um membro precise de determinadas permissões incluídas nos papéis atuais, mas que não tenha usado nos últimos 90 dias. Para identificar essas permissões, o recomendador do IAM usa um modelo de machine learning (ML).

O modelo de machine learning do recomendador do IAM é treinado com vários conjuntos de sinais:

  • Padrões comuns de co-ocorrência no histórico observado: o fato de um usuário ter usado as permissões A, B e C no passado sugere que A, B e C podem estar relacionados de alguma forma e que eles são necessários juntos para realizar uma tarefa no Google Cloud. Se o modelo de ML observar esse padrão com frequência suficiente, na próxima vez que um usuário diferente usar as permissões A e B, o modelo sugerirá que o usuário também precisará da permissão C.

  • Conhecimento de domínio conforme codificado nas definições do papel: o IAM fornece centenas de papéis predefinidos diferentes que são específicos do serviço. Se um papel predefinido contém um conjunto de permissões, é um forte sinal de que estas permissões devem ser concedidas em conjunto.

Além desses sinais, o modelo também usa a incorporação de palavras para calcular a semelhança semântica das permissões. Permissões semanticamente semelhantes serão consideradas "próximas" umas das outras após a incorporação e terão maior probabilidade de serem concedidas juntas. Por exemplo, bigquery.datasets.get e bigquery.tables.list estarão muito próximas uma da outra após a incorporação.

Todos os dados usados no pipeline de machine learning do recomendador do IAM têm k-anonimato. Isso significa que os indivíduos do conjunto de dados anônimos não podem ser identificados novamente. Para atingir este nível de anonimato, descartamos todas as informações de identificação pessoal, como o ID de usuário relacionado a cada padrão de uso de permissão. Em seguida, descartaremos todos os padrões de uso que não são exibidos com frequência suficiente no Google Cloud. O modelo global é treinado com esses dados anônimos.

O modelo global pode ser ainda mais personalizado para cada organização usando federated learning, um processo de machine learning que treina modelos sem exportar dados.

Insights

As recomendações são criadas com base em um ou mais insights do IAM. Os insights da política do IAM são informações baseadas em ML sobre o uso de permissões no seu projeto.

Alguns insights têm links para recomendações e fornecem evidências das recomendações associadas. No entanto, é possível usar insights de forma independente das recomendações. Para saber como usar os insights, consulte Como usar insights de política.

Geração de registros de auditoria

Quando você aplica ou descarta uma recomendação, o recomendador do IAM cria uma entrada de registro. É possível ver essas entradas no recomendador do IAM ou visualizá-las nos registros de auditoria do Google Cloud.

Outros tipos de controles de acesso

Alguns serviços do Google Cloud fornecem controles de acesso separados do IAM. Por exemplo, o Cloud Storage fornece listas de controle de acesso (ACLs) e o Google Kubernetes Engine (GKE) oferece suporte ao controle de acesso baseado em papéis (RBAC) do Kubernetes.

O recomendador do IAM analisa apenas os controles de acesso do IAM. Se você usa outros tipos de controle de acesso, tenha muito cuidado ao analisar suas recomendações e considere como esses controles de acesso estão relacionados às políticas do IAM.

Como analisar as recomendações

Quando você clica em uma recomendação no Console do Cloud, ele exibe uma lista de permissões codificadas por cores e símbolos. Essa lista indica como as permissões do membro serão alteradas se você aplicar a recomendação.

Os tipos de permissão associados a cada cor e símbolo são os seguintes:

  • cinza sem símbolo: permissões que estão no papel atual do membro e nos papéis recomendados.

  • Vermelho com um sinal de menos : permissões que estão no papel atual do membro, mas não nos papéis recomendados porque o membro não os usou nos últimos 90 dias.

  • Verde com um sinal de adição : permissões que estão implicitamente incluídas no papel atual do membro, mas precisam ser explicitamente incluídas nos papéis recomendados para manter o nível de acesso atual.

    Esse tipo de permissão aparecerá somente ao substituir um papel primário. Alguns serviços do Google Cloud, incluindo o Cloud Storage e o BigQuery, fornecem implicitamente permissões adicionais a qualquer membro que tenha um papel primário. Se um membro tiver usado estas permissões implícitas nos últimos 90 dias, os papéis recomendados incluirão as permissões explícitas equivalentes para que o membro mantenha o acesso existente. O recomendador do IAM nunca adiciona permissões que o membro ainda não tenha.

  • Azul com um ícone de Machine learning : permissões que estão no papel atual do membro e nos papéis recomendados, não porque o membro usou as permissões nos últimos 90 dias, mas porque o recomendador determinou por meio do machine learning que ele provavelmente precisará dessas permissões no futuro. Esta página mostra um exemplo de cenário em que você pode ver uma permissão sugerida pelo ML.

Recomendações para papéis personalizados

Ao propor substituições em um papel existente, o recomendador do IAM sempre sugere papéis predefinidos que parecem ser mais adequados às necessidades do membro. Em alguns casos, ele também oferece a opção de criar um novo papel personalizado que inclui apenas as permissões recomendadas. É possível modificar a recomendação de papel personalizado adicionando ou removendo permissões.

Se você quiser aplicar o princípio do menor privilégio da maneira mais estrita possível, escolha o novo papel personalizado. O recomendador do IAM cria o papel personalizado no nível do projeto. Você é responsável por manter e atualizar os papéis personalizados dos seus projetos.

Se preferir usar um papel gerenciado pelo Google, escolha o papel predefinido. O Google Cloud atualiza esses papéis regularmente adicionando ou removendo permissões. Para receber notificações sobre essas atualizações, inscreva-se no feed de notícias do registro de alterações de permissões. Quando você escolhe o papel predefinido, o membro continua tendo pelo menos algumas permissões e possivelmente um grande número de permissões que não foram usadas.

O recomendador do IAM não recomenda novos papéis personalizados nos seguintes casos:

  • Sua organização já tem 100 ou mais papéis personalizados.
  • Seu projeto já tem 25 ou mais papéis personalizados.

Além disso, o recomendador do IAM recomenda no máximo cinco novos papéis personalizados por dia em cada projeto e no máximo 15 novos papéis personalizados em toda a organização.

Exemplos de recomendações de papéis

Estes exemplos mostram os tipos de recomendações que talvez você receba:

Revogar um papel atual

O usuário fuyo@example.com recebeu um papel personalizado em um projeto. O papel personalizado inclui uma permissão, iam.serviceAccounts.actAs, que dá a fuyo@example.com a capacidade de atuar como uma conta de serviço. No entanto, nos últimos 90 dias, fuyo@example.com não agiu como uma conta de serviço neste projeto.

Portanto, o recomendador do IAM sugere que você revogue o papel personalizado de fuyo@example.com:

Substituir um papel atual

Uma conta de serviço recebeu o papel de Proprietário (roles/owner) em um projeto. Esse papel primário inclui mais de 2.500 permissões e concede acesso quase ilimitado a um projeto. No entanto, nos últimos 90 dias, a conta de serviço usou apenas algumas centenas de permissões.

Portanto, o recomendador do IAM sugere que você revogue o papel de Proprietário e substitua-o por uma combinação de quatro outros papéis, o que remove milhares de permissões concedidas além do necessário:

Criar um papel personalizado

O usuário nelson@example.com recebeu o papel de Visualizador de dados do BigQuery (roles/bigquery.dataViewer) em um projeto. O papel inclui mais de 10 permissões, mas nos últimos 90 dias, nelson@example.com usou apenas três delas.

Portanto, o recomendador do IAM sugere que você crie um papel personalizado que inclua apenas as permissões que nelson@example.com realmente usou:

O recomendador do IAM também sugere outra opção, que é substituir o papel atual pelo papel Leitor de metadados do BigQuery (roles/bigquery.metadataViewer). Esse papel predefinido inclui um pouco menos permissões do que o papel Visualizador de dados do BigQuery.

Substituição de papéis com permissões sugeridas pelo machine learning

Uma conta de serviço recebeu o papel de Editor (roles/editor) em um projeto. Esse papel primário inclui mais de 2.000 permissões e concede amplo acesso a um projeto. No entanto, nos últimos 90 dias, a conta de serviço usou menos de 10 permissões.

O recomendador do IAM sugere que você revogue o papel Editor e o substitua pelo papel Administrador de objetos do Storage (roles/storage.objectAdmin), que concede controle total dos objetos em um bucket do Cloud Storage. Esta alteração remove milhares de permissões concedidas além do necessário.

Este papel inclui várias permissões do papel Editor que a conta de serviço não usou nos últimos 90 dias. No entanto, usando o aprendizado de máquina, o recomendador do IAM prevê que a conta de serviço precisará dessas permissões no futuro.

O recomendador do IAM usa um ícone de machine learning para identificar essas outras permissões. Neste exemplo, a permissão resourcemanager.projects.get foi recomendada com base no machine learning:

Disponibilidade de recomendações

No Console do Cloud, a página IAM mostra todos os membros do projeto e lista os papéis que cada membro tem no projeto. Ele também indica se uma recomendação está disponível para cada papel.

Quando as recomendações estão disponíveis, o Console do Cloud mostra um ícone de Recomendação disponível . Esse ícone indica que o membro tem permissões dos quais provavelmente não precisa. Clique no ícone para analisar e aplicar a recomendação.

Quando as recomendações não estão disponíveis, o Console do Cloud mostra um ícone de Recomendação não disponível . Para descobrir o motivo, mantenha o ponteiro do mouse sobre o ícone.

É normal que alguns membros do projeto tenham poucas ou nenhuma recomendação. Há vários motivos pelos quais um membro pode não ter uma recomendação para um papel específico:

  • Não há papéis do IAM predefinidos que sejam mais apropriados do que o papel atual. Se um membro já tiver um papel predefinido que minimiza as permissões dele ou inclui menos permissões do que outros papéis predefinidos, o recomendador do IAM não poderá recomendar um papel predefinido diferente.

    Você pode reduzir as permissões do membro criando um papel personalizado para ele.

  • Não há dados de uso suficientes sobre o membro. Se o recomendador do IAM não tiver informações suficientes sobre como o membro usa o Google Cloud, ele não poderá fazer recomendações para os papéis dele.

    Talvez você veja recomendações para o membro no futuro, depois que o recomendador do IAM coletar mais dados.

  • O membro é uma conta de serviço gerenciada pelo Google. Para garantir que as contas de serviço gerenciadas pelo Google possam acessar seus recursos quando necessário, o recomendador do IAM não analisa papéis atribuídos a uma conta de serviço gerenciada pelo Google.

  • A vinculação do papel é condicional. Se a vinculação do papel incluir uma condição, o papel será concedido somente se determinadas permissões estiverem presentes. O recomendador do IAM não faz recomendações para essas vinculações de papel.

  • Nenhum outro membro tem o papel primário de Proprietário do projeto. Pelo menos um membro precisa ter o papel Proprietário (roles/owner) em cada projeto. Se apenas um membro tiver esse papel, o recomendador do IAM não recomendará a revogação ou a substituição do papel.

  • A recomendação atual para a vinculação de papel foi dispensada, ou então aplicada e revertida. Se você dispensar uma recomendação para alterar o papel de um membro, ou aplicar uma recomendação e depois revertê-la, o Console do Cloud não a exibirá novamente.

    No futuro, se o recomendador do IAM fizer uma nova recomendação para alterar o papel do membro, o Console do Cloud mostrará a nova recomendação mesmo que você tenha dispensado ou revertido a recomendação anterior.

    Você pode ver as recomendações dispensadas e revertidas no registro de recomendações. As recomendações dispensadas ficam disponíveis até que a recomendação se torne obsoleta. As recomendações revertidas ficam disponíveis por 90 dias.

Permissões do IAM obrigatórias

Nesta seção, descrevemos as permissões do IAM necessárias para trabalhar com o recomendador do IAM.

Ver recomendações

Para visualizar as recomendações do recomendador do IAM, é necessário ter as permissões a seguir para o projeto que você está visualizando:

  • iam.roles.get
  • iam.roles.list
  • recommender.iamPolicyRecommendations.get
  • recommender.iamPolicyRecommendations.list
  • resourcemanager.projects.getIamPolicy

Para receber estas permissões seguindo o princípio do menor privilégio, peça ao administrador para conceder a você os seguintes papéis predefinidos:

  • Leitor de papel (roles/iam.roleViewer)
  • Visualizador do Recomendador do IAM (roles/recommender.iamViewer) ou Revisor de segurança do IAM (roles/iam.securityReviewer)

Como alternativa, o administrador pode conceder a você um papel diferente que inclua as permissões necessárias, como um papel personalizado ou um papel predefinido mais permissivo

Aplicar e dispensar recomendações

Para aplicar e dispensar recomendações do recomendador do IAM, é necessário ter as permissões a seguir para o projeto que você está gerenciando:

  • iam.roles.get
  • iam.roles.list
  • recommender.iamPolicyRecommendations.get
  • recommender.iamPolicyRecommendations.list
  • recommender.iamPolicyRecommendations.update
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

Para receber estas permissões seguindo o princípio do menor privilégio, peça ao administrador para conceder a você os seguintes papéis predefinidos:

  • Leitor de papel (roles/iam.roleViewer)
  • Administrador de recomendações do IAM (roles/recommender.iamAdmin)
  • Administrador de IAM do projeto (roles/resourcemanager.projectIamAdmin)

Como alternativa, o administrador pode conceder a você um papel diferente que inclua as permissões necessárias, como um papel personalizado ou um papel predefinido mais permissivo

A seguir