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 de privilégio mínimo, 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 concessõ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. Esse substituto recomendado pode ser um papel personalizado novo/existente ou um ou mais papéis predefinidos. O recomendador do IAM nunca recomenda uma mudança 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 este provavelmente usará no futuro, mesmo que 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, isso é um forte sinal de que estas permissões precisam 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 de política do IAM são informações baseadas em ML sobre o uso de permissões no seu projeto.

Alguns insights fornecem evidências de recomendações. No entanto, é possível usar insights de modo independente das recomendações. Para saber como usar os insights, consulte Como usar insights.

Registro 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.

  • 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 sugerir substituições para um papel, o recomendador do IAM sempre sugere um papel personalizado atual ou um ou mais 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 my-user@example.com recebeu o papel Navegador em um projeto. O papel Navegador inclui seis permissões que autorizam o usuário a ver os recursos no projeto. No entanto, durante os últimos 90 dias, my-user@example.com não viu nenhum recurso.

Portanto, o recomendador do IAM sugere que você revogue o papel Navegador de my-user@example.com:

Substituir um papel atual

Uma conta de serviço recebeu o papel Editor (roles/editor) em um projeto. Esse papel básico inclui mais de 3.000 permissões e concede amplo acesso ao projeto. No entanto, durante os últimos 90 dias, a conta de serviço usou apenas algumas permissões.

Portanto, o recomendador do IAM sugere que você revogue o papel Editor e substitua-o por uma combinação de dois outros papéis, o que remove milhares de permissões excedentes:

Criar um papel personalizado

O usuário my-user@example.com recebeu o papel Administrador do Cloud Trace (roles/cloudtrace.admin) em um projeto. O papel inclui mais de 10 permissões, mas nos últimos 90 dias, my-user@example.com usou apenas 4 delas.

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

O recomendador do IAM também sugere outra opção, que é substituir o papel atual pelo de Usuário do Cloud Trace (roles/cloudtrace.user). Esse papel predefinido inclui menos permissões que o papel Administrador do Cloud Trace.

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

Uma conta de serviço recebeu o papel Editor (roles/editor) em um projeto. Esse papel básico inclui mais de 3.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. Essa alteração remove milhares de permissões em excesso.

Esse 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.

É 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 minimize as permissões dele ou inclua 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 concedidos 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 básico 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.

    Veja as recomendações dispensadas e revertidas no histórico de recomendações. As recomendações dispensadas ficam disponíveis até se tornarem obsoletas. 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