Vista geral das recomendações de funções

As recomendações de funções ajudam a identificar e remover autorizações excessivas dos seus principais, melhorando as configurações de segurança dos seus recursos.

Vista geral das recomendações de funções

As recomendações de funções são geradas pelo recomendador do IAM. O recomendador do IAM é um dos recomendadores que o Recomendador oferece.

Cada recomendação de função sugere que remova ou substitua uma função que concede aos seus principais autorizações excessivas. Em grande escala, estas recomendações ajudam a aplicar o princípio do menor privilégio, garantindo que os principais têm apenas as autorizações de que realmente precisam.

O recomendador do IAM identifica autorizações excessivas através de estatísticas das políticas. As estatísticas de políticas são conclusões baseadas em ML sobre a utilização de autorizações de um principal.

Algumas recomendações também estão associadas a estatísticas de movimento lateral. Estas estatísticas identificam funções que permitem que as contas de serviço num projeto se façam passar por contas de serviço noutro projeto. Para mais informações, consulte o artigo Como são geradas as estatísticas de movimento lateral.

Como são geradas as estatísticas de políticas

As informações sobre políticas realçam as autorizações nas funções de um principal que o principal não está a usar.

O recomendador da IAM gera estatísticas de políticas comparando o número total de autorizações de um principal com as autorizações que o principal usou nos últimos 90 dias. Se a função tiver sido concedida há menos de 90 dias, o recomendador do IAM analisa a utilização de autorizações do principal no período desde que a função foi concedida ao principal.

Existem algumas formas através das quais um principal pode usar uma autorização:

  • Diretamente, chamando uma API que requer a autorização

    Por exemplo, o método roles.list na API REST IAM requer a autorização iam.roles.list. Quando chama o método roles.list, usa a autorização iam.roles.list.

    Da mesma forma, quando chama o método testIamPermissions para um recurso, usa efetivamente todas as autorizações que está a testar.

  • Indiretamente, através da Google Cloud consola para trabalhar com Google Cloud recursos

    Por exemplo, na Google Cloud consola, pode editar uma instância de máquina virtual (VM) do Compute Engine, o que requer autorizações diferentes com base nas definições que alterar. No entanto, a Google Cloud consola também apresenta as definições existentes, o que requer a compute.instances.get autorização.

    Como resultado, quando edita uma instância de VM na Google Cloud consola, usa a autorização compute.instances.get.

Para determinar as autorizações que o principal usou, o recomendador da IAM usa dados de acesso da IAM agregados. Para saber como exportar os dados que o IAM recommender usa para estas estatísticas, consulte o artigo Exporte dados para recomendações de funções.

O recomendador da IAM também usa a aprendizagem automática para identificar autorizações na função atual de um principal que o principal provavelmente vai precisar no futuro, mesmo que o principal não tenha usado essas autorizações recentemente. Para mais informações, consulte Aprendizagem automática para estatísticas de políticas nesta página.

As estatísticas de políticas não são geradas para todas as funções do IAM atribuídas a responsáveis. Para mais informações sobre o motivo pelo qual uma função pode não ter uma estatística de políticas, consulte a secção Disponibilidade nesta página.

Para saber como gerir as informações detalhadas das políticas, consulte os artigos Gerir informações detalhadas das políticas para projetos, pastas e organizações ou Gerir informações detalhadas das políticas para contentores do Cloud Storage.

Aprendizagem automática para estatísticas de políticas

Em alguns casos, um principal precisa provavelmente de determinadas autorizações incluídas nas respetivas funções atuais, mas que não usou recentemente. Para identificar estas autorizações, o recomendador do IAM usa um modelo de aprendizagem automática (AA) quando gera estatísticas de políticas.

Este modelo de aprendizagem automática é preparado em vários conjuntos de sinais:

  • Padrões de ocorrência conjunta comuns no histórico observado: o facto de um utilizador ter usado as autorizações A, B e C no passado dá uma indicação de que A, B e C podem estar relacionados de alguma forma e que são necessários em conjunto para realizar uma tarefa no Google Cloud. Se o modelo de ML observar este padrão com frequência suficiente, da próxima vez que um utilizador diferente usar as autorizações A e B, o modelo sugere que o utilizador também pode precisar da autorização C.

  • Conhecimento do domínio codificado nas definições de funções: o IAM fornece centenas de funções predefinidas diferentes específicas do serviço. Se uma função predefinida contiver um conjunto de autorizações, é um forte sinal de que essas autorizações devem ser concedidas em conjunto.

Além destes sinais, o modelo também usa a incorporação de palavras para calcular a semelhança semântica das autorizações. As autorizações semanticamente semelhantes vão estar "próximas" umas das outras após a incorporação e têm maior probabilidade de serem concedidas em conjunto. Por exemplo, bigquery.datasets.get e bigquery.tables.list ficam muito próximos após a incorporação.

Todos os dados usados no pipeline de aprendizagem automática do IAM recommender têm k-anonimato, o que significa que os indivíduos no conjunto de dados anonimizado não podem ser reidentificados. Para alcançar este nível de anonimato, eliminamos todas as informações de identificação pessoal (PII), como o ID do utilizador relacionado com cada padrão de utilização de autorizações. Em seguida, eliminamos todos os padrões de utilização que não aparecem com frequência suficiente em Google Cloud. O modelo global é preparado com base nestes dados anonimizados.

O modelo global pode ser ainda mais personalizado para cada organização através da aprendizagem federada, um processo de aprendizagem automática que prepara modelos de aprendizagem automática sem exportar dados.

Como são geradas as recomendações de funções

Se uma estatística de política indicar que um principal não precisa de todas as autorizações na respetiva função, o recomendador do IAM avalia a função para determinar se pode ser revogada ou se existe outra função mais adequada. Se a função puder ser revogada, o recomendador de IAM gera uma recomendação de função para revogar a função. Se existir outra função mais adequada, o recomendador do IAM gera uma recomendação de função para substituir a função por uma função sugerida. Esta função sugerida pode ser uma nova função personalizada, uma função personalizada existente ou uma ou mais funções predefinidas. Exceto no caso de recomendações para agentes de serviços, uma recomendação de função nunca sugere uma alteração que aumente o nível de acesso de um principal.

As recomendações de funções são geradas apenas com base nos controlos de acesso do IAM. Não têm em conta outros tipos de controlos de acesso, como listas de controlo de acesso (LCAs) e controlo de acesso baseado em funções (CABF) do Kubernetes. Se usar outros tipos de controlos de acesso, tenha especial cuidado quando rever as suas recomendações e considere a forma como esses controlos de acesso se relacionam com as suas políticas de autorização.

Além disso, as recomendações de funções não são geradas para todas as funções de IAM concedidas a responsáveis. Para mais informações sobre o motivo pelo qual uma função pode não ter uma recomendação de função, consulte a secção Disponibilidade nesta página.

Período de observação

O período de observação de uma recomendação de função é o número de dias de dados de utilização de autorizações em que a recomendação se baseia.

O período de observação máximo para recomendações de funções é de 90 dias. Isto significa que o recomendador da IAM usa, no máximo, os dados de utilização de autorizações dos 90 dias mais recentes para gerar recomendações de funções.

O recomendador de IAM também não começa a gerar recomendações de funções até ter um determinado número de dias de dados de utilização de autorizações. Esta duração é denominada período de observação mínimo. Por predefinição, o período de observação mínimo é de 90 dias, mas, para recomendações de funções ao nível do projeto, pode defini-lo manualmente para 30 ou 60 dias. Para ver detalhes, consulte o artigo Configure a geração de recomendações de funções. Se definir o período de observação mínimo para menos de 90 dias, recebe recomendações mais cedo, mas a precisão das recomendações pode ser afetada.

Se tiver passado mais do que o período de observação mínimo, mas menos de 90 dias desde que a função foi concedida, o período de observação é o tempo decorrido desde que a função foi concedida.

Novas funções personalizadas nas recomendações de funções

Quando o recomendador do IAM sugere substituições para uma função, sugere sempre uma função personalizada existente ou uma ou mais funções predefinidas que parecem ser mais adequadas às necessidades do principal.

Se o recomendador de IAM identificar um padrão de utilização de autorizações comum na sua organização que não corresponda a uma função predefinida ou personalizada existente, também pode recomendar que crie uma nova função personalizada ao nível do projeto. Esta função personalizada inclui apenas as autorizações recomendadas. Pode modificar a recomendação de função personalizada adicionando ou removendo autorizações.

Se quiser aplicar o princípio do menor privilégio da forma mais rigorosa possível, escolha a nova função personalizada. O recomendador da IAM cria a função personalizada ao nível do projeto. É responsável por manter e atualizar as funções personalizadas para os seus projetos.

Se preferir usar uma função que é mantida por si, escolha a função predefinida. Google Cloud atualiza estas funções regularmente adicionando ou removendo autorizações. Para receber notificações sobre estas atualizações, subscreva o feed de notícias do registo de alterações das autorizações. Quando escolhe a função predefinida, o principal continua a ter, pelo menos, algumas autorizações e, potencialmente, um grande número de autorizações que não usou.

O recomendador do IAM recomenda novas funções personalizadas apenas para funções concedidas num projeto. Não recomenda novas funções personalizadas para funções concedidas noutros recursos, como pastas ou organizações.

Além disso, o recomendador de IAM não recomenda novas funções personalizadas nos seguintes casos:

  • A sua organização já tem 100 ou mais funções personalizadas.
  • O seu projeto já tem 25 ou mais funções personalizadas.

O recomendador do IAM recomenda, no máximo, 5 novas funções personalizadas por dia em cada projeto e, no máximo, 15 novas funções personalizadas em toda a organização.

Como são geradas as estatísticas de movimento lateral

O movimento lateral ocorre quando uma conta de serviço num projeto tem autorização para se fazer passar por uma conta de serviço noutro projeto. Por exemplo, uma conta de serviço pode ter sido criada no projeto A, mas ter autorizações para se fazer passar por uma conta de serviço no projeto B.

Estas autorizações podem resultar numa cadeia de roubos de identidade entre projetos que concede aos principais acesso não intencional aos recursos. Por exemplo, se um principal usar a identidade da conta de serviço no projeto A, pode usar essa conta de serviço para usar a identidade da conta de serviço no projeto B. Se a conta de serviço no projeto B tiver autorização para se fazer passar por outras contas de serviço noutros projetos na sua organização, o principal pode continuar a usar a representação da conta de serviço para se mover de projeto em projeto, obtendo autorizações à medida que avança.

O recomendador da IAM gera estatísticas de movimento lateral identificando funções que se enquadram nos seguintes critérios:

  • O principal ao qual a função foi concedida é uma conta de serviço que não foi criada no projeto.
  • A função inclui uma das seguintes autorizações, que permitem a um principal roubar a identidade de uma conta de serviço:

    • iam.serviceAccounts.actAs
    • iam.serviceAccounts.getAccessToken
    • iam.serviceAccounts.getOpenIdToken
    • iam.serviceAccounts.implicitDelegation
    • iam.serviceAccounts.signBlob
    • iam.serviceAccounts.signJwt

Se uma função cumprir estes critérios, o recomendador de IAM gera uma estatística de movimento lateral para a função. Esta estatística contém informações sobre as capacidades de roubo de identidade da conta de serviço, incluindo as contas de serviço que pode roubar e se usou autorizações de roubo de identidade nos últimos 90 dias.

O recomendador de IAM não usa as estatísticas de movimento lateral por si só para gerar novas recomendações de funções. Isto acontece porque, se uma conta de serviço estiver a usar as respetivas autorizações de roubo de identidade, o recomendador do IAM não pode sugerir a remoção das mesmas em segurança. No entanto, se uma recomendação de função sugerir a remoção destas autorizações porque não estão a ser usadas, o recomendador do IAM associa a estatística de movimento lateral a essa recomendação. Esta associação ajuda a dar prioridade às recomendações de funções para contas de serviço que têm autorizações de representação poderosas e não usadas em vários projetos.

Para saber como gerir as estatísticas de movimento lateral, consulte o artigo Faça a gestão das estatísticas de movimento lateral.

Disponibilidade

As estatísticas de políticas, as estatísticas de movimento lateral e as recomendações de funções não são geradas para todas as funções concedidas aos diretores. Leia as secções seguintes para compreender os papéis para os quais as estatísticas das políticas, as estatísticas de movimento lateral e as recomendações são geradas.

Disponibilidade das estatísticas de políticas

Para que o recomendador de IAM gere uma estatística de política para uma função, as seguintes condições têm de ser verdadeiras:

  • A política de autorização do IAM que concede a função tem de estar anexada a um dos seguintes recursos:

    • Contentor do Cloud Storage
    • Conjunto de dados do BigQuery
    • Projeto
    • Pasta
    • Organização

    O recomendador do IAM só gera estatísticas de políticas para funções concedidas nestes recursos.

  • A associação de funções que concede a função não pode ter uma condição. O recomendador do IAM não gera estatísticas de políticas para associações de funções condicionais.

  • O principal ao qual a função é concedida tem de ser um dos seguintes tipos de principais:

    • Utilizador
    • Conta de serviço
    • Grupo
    • allUsers
    • allAuthenticatedUsers
    • Valores de conveniência do Cloud Storage
    • Associação a grupos especiais do BigQuery
    • Um dos seguintes tipos de identidades federadas:

      • Todas as identidades num Workload Identity Pool
      • Identidade única num Workload Identity Pool
      • Todas as identidades num Workload Identity Pool
      • Identidade única num Workload Identity Pool
      • Todos os pods do Google Kubernetes Engine que usam uma conta de serviço específica do Kubernetes

    Para ver detalhes sobre o formato do identificador para cada tipo de principal, consulte o artigo Identificadores de principais.

O recomendador do IAM pode demorar até 10 dias a gerar estatísticas de políticas para uma função recém-concedida.

As estatísticas de políticas existentes são atualizadas diariamente com base na sua utilização recente de autorizações. No entanto, os dados em que se baseiam as estatísticas das políticas costumam estar até dois dias atrasados em relação à sua utilização real.

Disponibilidade de estatísticas de movimento lateral

As estatísticas de movimento lateral são geradas para funções concedidas nos seguintes recursos:

  • Organizações
  • Pastas
  • Projetos
  • Contas de serviço

Disponibilidade de recomendações de funções

Para que o recomendador do IAM gere uma recomendação de função para uma função, tem de se verificar o seguinte:

  • A função tem de ter uma estatística de políticas associada. Esta estatística da política serve de base para a recomendação.
  • Tem de ter decorrido um período superior ao período de observação mínimo desde que a função foi concedida. Isto garante que o recomendador do IAM tem dados de utilização suficientes para fazer uma recomendação. Por predefinição, o período de observação mínimo é de 90 dias, mas pode defini-lo manualmente para 30 ou 60 dias. Para mais detalhes, consulte o artigo Configure a geração de recomendações de funções.
  • Se o principal ao qual a função foi concedida for um agente de serviço, a função tem de ser Proprietário, Editor ou Leitor. O recomendador do IAM não gera recomendações de funções para agentes de serviço com outras funções. Para mais detalhes, consulte o artigo Recomendações de funções para agentes de serviço.

Se uma função tiver sido concedida recentemente ou não tiver estatísticas, a coluna Autorizações analisadas na Google Cloud consola mostra um ícone .

Existem alguns casos em que o recomendador de IAM não gera recomendações de funções para uma função, apesar de ter passado tempo suficiente e a função ter uma estatística associada. Isto pode acontecer pelos seguintes motivos:

  • Não existem funções de IAM predefinidas mais adequadas do que a função atual. Se um principal já tiver uma função predefinida que minimize as respetivas autorizações ou que inclua menos autorizações do que outras funções predefinidas, o recomendador do IAM não pode recomendar uma função predefinida diferente.

    Pode reduzir as autorizações do principal criando uma função personalizada para o principal.

  • O principal é um agente do serviço e a função não é uma função básica. O recomendador do IAM só gera recomendações de funções para agentes de serviço que tenham uma função básica (proprietário, editor ou leitor). Para mais detalhes, consulte o artigo Recomendações de funções para agentes de serviço.

  • Nenhum outro principal tem a função básica de proprietário para o projeto. Pelo menos, um principal tem de ter a função de proprietário (roles/owner) para cada projeto. Se apenas um principal tiver esta função, o recomendador do IAM não recomenda que revogue nem substitua a função.

Nestes casos, a coluna Autorizações analisadas na Google Cloud consola mostra a utilização de autorizações do principal, mas não tem um ícone Recomendação disponível .

As recomendações de funções existentes são atualizadas diariamente com base na sua utilização recente de autorizações. No entanto, os dados em que se baseiam as recomendações de funções normalmente têm um atraso de até dois dias em relação à sua utilização real.

Prioridade e gravidade

A prioridade das recomendações e a gravidade das estatísticas ajudam a compreender a urgência de uma recomendação ou uma estatística e a dar-lhes prioridade em conformidade.

Prioridade da recomendação de funções

As recomendações são atribuídas a níveis de prioridade com base na urgência percebida. Os níveis de prioridade variam de P1 (prioridade mais alta) a P4 (prioridade mais baixa).

A prioridade de uma recomendação de função depende da função para a qual a recomendação é feita:

Detalhes da recomendação Prioridade Explicação
Recomendações para funções que concedem acesso público a contentores do Cloud Storage P1 Os contentores acessíveis publicamente podem ser acedidos por qualquer pessoa na Internet. A remoção do acesso público dá-lhe mais controlo sobre os seus dados.
Recomendações para funções que concedem acesso público a conjuntos de dados do BigQuery P1 Qualquer pessoa na Internet pode aceder a conjuntos de dados acessíveis publicamente. A remoção do acesso público dá-lhe mais controlo sobre os seus dados.
Recomendações para funções básicas (proprietário, editor e leitor) que são concedidas num projeto, numa pasta ou numa organização P2 As funções básicas são altamente permissivas e a aplicação de recomendações para estas funções pode reduzir significativamente as autorizações excessivas.
Recomendações que não concedem acesso público nem funções básicas P4 Embora estas recomendações ajudem a reduzir as autorizações excessivas, não removem o acesso público nem as funções básicas altamente permissivas, o que as torna uma prioridade mais baixa.

Gravidade das estatísticas

As estatísticas são atribuídas a níveis de gravidade com base na urgência percebida. Os níveis de gravidade podem ser LOW, MEDIUM, HIGH ou CRITICAL.

A gravidade de uma estatística de políticas depende da função a que se destina:

Detalhes das estatísticas Gravidade Explicação
Estatísticas para funções que concedem acesso público a contentores do Cloud Storage CRITICAL Os contentores acessíveis publicamente podem ser acedidos por qualquer pessoa na Internet. A remoção do acesso público dá-lhe mais controlo sobre os seus dados.
Estatísticas para funções que concedem acesso público a conjuntos de dados do BigQuery CRITICAL Qualquer pessoa na Internet pode aceder a conjuntos de dados acessíveis publicamente. A remoção do acesso público dá-lhe mais controlo sobre os seus dados.
Estatísticas para funções básicas (proprietário, editor e leitor) concedidas num projeto, numa pasta ou numa organização HIGH As funções básicas são altamente permissivas e a resolução de estatísticas para estas funções pode reduzir significativamente as autorizações excessivas.
Estatísticas que não concedem acesso público nem funções básicas LOW Embora estas estatísticas realcem as autorizações excessivas, não envolvem acesso público nem funções básicas altamente permissivas, o que as torna uma prioridade inferior.

Todas as estatísticas de movimento lateral têm uma gravidade de LOW.

Como são aplicadas as recomendações de funções

O recomendador da IAM não aplica recomendações automaticamente. Em alternativa, tem de rever as recomendações e decidir se as aplica ou as ignora. Para saber como rever, aplicar e ignorar recomendações de funções, consulte um dos seguintes guias:

Registo de auditoria

Quando aplica ou ignora uma recomendação, o IAM recommender cria uma entrada de registo. Pode ver estas entradas no seu histórico de recomendações ou pode vê-las nos seus Google Cloud registos de auditoria.

Subtipos de recomendações de funções

As recomendações de funções são divididas em vários subtipos diferentes com base na ação que recomendam. Se usar a CLI gcloud ou a API REST, pode usar estes subtipos para filtrar as suas recomendações.

Subtipo Descrição
REMOVE_ROLE Uma recomendação para remover a função do principal ao nível do projeto, da pasta ou da organização.
REMOVE_ROLE_BIGQUERY_DATASET Uma recomendação para remover a função ao nível do conjunto de dados do principal.
REMOVE_ROLE_STORAGE_BUCKET Uma recomendação para remover a função ao nível do contentor do principal.
REPLACE_ROLE Uma recomendação para substituir a função ao nível do projeto, da pasta ou da organização da entidade principal por uma função menos permissiva. A substituição recomendada pode ser uma função personalizada existente ou uma ou mais funções predefinidas.
REPLACE_ROLE_CUSTOMIZABLE Uma recomendação para substituir a função do principal por uma nova função personalizada que seja menos permissiva do que a função atual.
REPLACE_ROLE_BIGQUERY_DATASET Uma recomendação para substituir a função ao nível do conjunto de dados do principal por uma função menos permissiva. A substituição recomendada pode ser uma função personalizada existente ou uma ou mais funções predefinidas.
REPLACE_ROLE_STORAGE_BUCKET Uma recomendação para substituir a função ao nível do contentor da entidade principal por uma função menos permissiva. A substituição recomendada pode ser uma função personalizada existente ou uma ou mais funções predefinidas.
SERVICE_AGENT_WITH_DEFAULT_ROLE Uma recomendação para substituir a função de proprietário, editor ou leitor de um agente de serviço pela função que foi concedida automaticamente à conta de serviço quando foi criada. Para mais informações, consulte o artigo Recomendações de funções para agentes de serviços.
SERVICE_AGENT_WITHOUT_DEFAULT_ROLE Uma recomendação para substituir a função Proprietário, Editor ou Leitor de um agente de serviço por uma função menos permissiva. Para mais informações, consulte o artigo Recomendações de funções para agentes de serviços.

Recomendações de funções para agentes de serviço

Para os agentes de serviço, o recomendador do IAM só fornece recomendações para funções básicas (proprietário, editor ou visitante).

As recomendações para agentes de serviços estão divididas em dois subtipos de recomendações.

SERVICE_AGENT_WITH_DEFAULT_ROLE

Na criação, alguns agentes de serviço recebem automaticamente uma função de agente de serviço para garantir que os seus Google Cloud serviços funcionam corretamente. Se substituir esta função por uma função básica (proprietário, editor ou leitor), uma recomendação de função pode sugerir que restaure a função de agente de serviço original para remover autorizações excessivas, mesmo que a função de agente de serviço tenha autorizações que não estão na função básica. Estas recomendações têm o subtipo SERVICE_AGENT_WITH_DEFAULT_ROLE. Ajudam a remover em segurança as autorizações em excesso, ao mesmo tempo que garantem que todos os Google Cloud serviços funcionam corretamente.

As recomendações SERVICE_AGENT_WITH_DEFAULT_ROLE são o único tipo de recomendação que pode sugerir funções com autorizações que não estão na função atual.

SERVICE_AGENT_WITHOUT_DEFAULT_ROLE

Se um agente de serviço não receber automaticamente uma função na criação, as recomendações para o agente de serviço baseiam-se exclusivamente nas autorizações que o agente de serviço usa. Estas recomendações têm o subtipo SERVICE_AGENT_WITHOUT_DEFAULT_ROLE.

Recomendações de funções no Security Command Center

Se tiver o nível Premium ou Enterprise do Security Command Center, pode ver alguns subtipos de recomendações de funções como resultados no Security Command Center. Cada subtipo está associado a um detetor:

Subtipo de recomendação Categoria dos resultados
REMOVE_ROLE Unused IAM role
REPLACE_ROLE IAM role has excessive permissions
SERVICE_AGENT_WITH_DEFAULT_ROLE Service agent role replaced with basic role
SERVICE_AGENT_WITHOUT_DEFAULT_ROLE Service agent granted basic role

Para mais informações sobre a visualização de recomendações de funções no Security Command Center, consulte o Recomendador do IAM na documentação do Security Command Center.

Preços

As recomendações de funções ao nível do projeto, da pasta e da organização para funções básicas estão disponíveis sem custo financeiro.

As seguintes funcionalidades avançadas do recomendador do IAM estão disponíveis com ativações ao nível do projeto ou da organização do nível Premium ou Enterprise do Security Command Center:

  • Recomendações para funções não básicas
  • Recomendações para funções concedidas em recursos que não sejam organizações, pastas e projetos, por exemplo, recomendações para funções concedidas em contentores do Cloud Storage
  • Recomendações que sugerem funções personalizadas
  • Estatísticas de políticas
  • Estatísticas sobre o movimento lateral

Para mais informações, consulte o artigo Perguntas sobre faturação.

Exemplos de recomendações de funções

Os exemplos seguintes mostram os tipos de recomendações que pode receber.

Revogue uma função existente

O utilizador my-user@example.com recebeu a função de navegador num projeto. A função de navegador inclui seis autorizações que permitem ao utilizador ver recursos no projeto. No entanto, nos últimos 90 dias, o utilizador my-user@example.com não viu nenhum recurso.

Por conseguinte, o recomendador do IAM gera uma recomendação de função que sugere que revogue a função de navegador de my-user@example.com:

Consola

gcloud

{
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/86c14538-dcfd-4326-afe5-ee8ac921e06a"
    }
  ],
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "remove",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/browser"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project"
          }
        ]
      }
    ],
    "overview": {
      "member": "user:my-user@example.com",
      "removedRole": "roles/browser",
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012"
    }
  },
  "description": "This role has not been used during the observation window.",
  "etag": "\"9fc3241da8bfab51\"",
  "lastRefreshTime": "2022-05-20T07:00:00Z",
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fe512038-5455-49g1-8f9c-752e31c8c154",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 6
      }
    }
  },
  "priority": "P4",
  "recommenderSubtype": "REMOVE_ROLE",
  "stateInfo": {
    "state": "ACTIVE"
  }
}

REST

{
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fe512038-5455-49g1-8f9c-752e31c8c154",
  "description": "This role has not been used during the observation window.",
  "lastRefreshTime": "2022-05-20T07:00:00Z",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 6
      }
    }
  },
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "remove",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/browser"
            }
          }
        ]
      }
    ],
    "overview": {
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
      "member": "user:my-user@example.com",
      "removedRole": "roles/browser"
    }
  },
  "stateInfo": {
    "state": "ACTIVE"
  },
  "etag": "\"9fc3241da8bfab51\"",
  "recommenderSubtype": "REMOVE_ROLE",
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/86c14538-dcfd-4326-afe5-ee8ac921e06a"
    }
  ],
  "priority": "P4"
}

Substitua uma função existente

Foi concedida a função de editor (roles/editor) a uma conta de serviço num projeto. Esta função básica inclui mais de 3000 autorizações e concede um acesso extensivo ao projeto. No entanto, durante os últimos 90 dias, a conta de serviço apenas usou algumas dessas autorizações.

Por conseguinte, o recomendador de IAM gera uma recomendação de função que sugere que revogue a função de editor e a substitua por uma combinação de duas outras funções, o que remove milhares de autorizações excessivas:

Consola

gcloud

{
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/3d4ef3d6-bdf0-4330-975d-c65cb929c44d"
    }
  ],
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "add",
            "path": "/iamPolicy/bindings/*/members/-",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/iam.serviceAccountUser"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "value": "user:my-user@example.com"
          },
          {
            "action": "add",
            "path": "/iamPolicy/bindings/*/members/-",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/storage.objectAdmin"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "value": "user:my-user@example.com"
          },
          {
            "action": "remove",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/editor"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project"
          }
        ]
      }
    ],
    "overview": {
      "addedRoles": [
        "roles/iam.serviceAccountUser",
        "roles/storage.objectAdmin"
      ],
      "member": "user:my-user@example.com",
      "minimumObservationPeriodInDays": "0",
      "removedRole": "roles/editor",
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012"
    }
  },
  "description": "Replace the current role with smaller predefined roles to cover the permissions needed.",
  "etag": "\"0da9a354c2a83d96\"",
  "lastRefreshTime": "2022-06-22T07:00:00Z",
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/4637db3d-dba5-45eb-95ac-b4ee4b4cd14e",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 2998
      }
    }
  },
  "priority": "P2",
  "recommenderSubtype": "REPLACE_ROLE",
  "stateInfo": {
    "state": "ACTIVE"
  }
}

REST

{
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/4637db3d-dba5-45eb-95ac-b4ee4b4cd14e",
  "description": "Replace the current role with smaller predefined roles to cover the permissions needed.",
  "lastRefreshTime": "2022-06-22T07:00:00Z",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 2998
      }
    }
  },
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "add",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/-",
            "value": "user:my-user@example.com",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/iam.serviceAccountOwner"
            }
          },
          {
            "action": "add",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/-",
            "value": "user:my-user@example.com",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/storage.objectAdmin"
            }
          },
          {
            "action": "remove",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/editor"
            }
          }
        ]
      }
    ],
    "overview": {
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
      "member": "user:my-user@example.com",
      "removedRole": "roles/editor",
      "addedRoles": [
        "roles/iam.serviceAccountUser",
        "roles/storage.objectAdmin"
      ],
      "minimumObservationPeriodInDays": "0"
    }
  },
  "stateInfo": {
    "state": "ACTIVE"
  },
  "etag": "\"0da9a354c2a83d96\"",
  "recommenderSubtype": "REPLACE_ROLE",
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/3d4ef3d6-bdf0-4330-975d-c65cb929c44d"
    }
  ],
  "priority": "P2"
}

Crie uma função personalizada

Foi concedida ao utilizador my-user@example.com a função de administrador do Cloud Trace (roles/cloudtrace.admin) num projeto. A função inclui mais de 10 autorizações, mas uma estatística de políticas indica que, nos últimos 90 dias, my-user@example.com usou apenas 4 dessas autorizações.

Por conseguinte, o recomendador de IAM gera uma recomendação de função a sugerir que crie uma função personalizada que inclua apenas as autorizações que my-user@example.com foram efetivamente usadas:

Consola

gcloud

O subtipo REPLACE_ROLE_CUSTOMIZABLE indica que o recomendador do IAM recomenda a criação de uma função personalizada com as autorizações usadas. Para ver as autorizações usadas, obtenha as estatísticas da política associada.

{
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/2799dc04-b12e-4cf6-86aa-d81907d31f58"
    }
  ],
  "associatedResourceNames": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ],
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "add",
            "path": "/iamPolicy/bindings/*/members/-",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/cloudtrace.user"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "value": "user:my-user@example.com"
          },
          {
            "action": "remove",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/cloudtrace.admin"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project"
          }
        ]
      }
    ],
    "overview": {
      "minimumObservationPeriodInDays": "0"
    }
  },
  "description": "Replace the current role with a smaller role to cover the permissions needed.",
  "etag": "\"c7f57a4725d32d66\"",
  "lastRefreshTime": "2022-06-22T07:00:00Z",
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/ba1fc977-fddd-3856-a829-f69649ae8075",
  "originalContent": {},
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {},
      "revokedIamPermissionsCount": 1
    }
  },
  "priority": "P4",
  "recommenderSubtype": "REPLACE_ROLE_CUSTOMIZABLE",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ]
}

REST

O subtipo REPLACE_ROLE_CUSTOMIZABLE indica que o recomendador do IAM recomenda a criação de uma função personalizada com as autorizações usadas. Para ver as autorizações usadas, obtenha as estatísticas da política associada.

{
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/ba1fc977-fddd-3856-a829-f69649ae8075",
  "description": "Replace the current role with a smaller role to cover the permissions needed.",
  "lastRefreshTime": "2022-06-22T07:00:00Z",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 1
      }
    }
  },
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "add",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/-",
            "value": "user:my-user@example.com",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/cloudtrace.user"
            }
          },
          {
            "action": "remove",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/cloudtrace.admin"
            }
          }
        ]
      }
    ],
    "overview": {
      "minimumObservationPeriodInDays": "0"
    }
  },
  "stateInfo": {
    "state": "ACTIVE"
  },
  "etag": "\"c7f57a4725d32d66\"",
  "recommenderSubtype": "REPLACE_ROLE_CUSTOMIZABLE",
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/2799dc04-b12e-4cf6-86aa-d81907d31f58"
    }
  ],
  "priority": "P4"
}

A recomendação de função também sugere outra opção, que consiste em substituir a função existente pela função de utilizador do Cloud Trace (roles/cloudtrace.user). Esta função predefinida inclui ligeiramente menos autorizações do que a função de administrador do Cloud Trace.

Substituição de funções com autorizações sugeridas pela aprendizagem automática

Foi concedida a função de editor (roles/editor) a uma conta de serviço num projeto. Esta função básica inclui mais de 3000 autorizações e concede acesso extensivo a um projeto. No entanto, uma estatística de políticas indica que, nos últimos 90 dias, a conta de serviço usou menos de 10 autorizações.

As estatísticas de políticas também realçam várias autorizações que a conta de serviço provavelmente vai precisar no futuro. O recomendador da IAM identificou estas autorizações através da aprendizagem automática.

O recomendador do IAM gera uma recomendação de função que sugere que revogue a função de editor e a substitua pela função de administrador de objetos de armazenamento (roles/storage.objectAdmin), que concede controlo total dos objetos num contentor do Cloud Storage. Esta alteração remove milhares de autorizações em excesso, ao mesmo tempo que inclui as autorizações usadas pela conta de serviço e as autorizações que a conta de serviço provavelmente vai precisar no futuro:

Consola

O recomendador do IAM usa um ícone de aprendizagem automática para identificar as autorizações que foram adicionadas com base na aprendizagem automática do recomendador do IAM e não na utilização de autorizações. Neste exemplo, a autorização resourcemanager.projects.get foi recomendada com base na aprendizagem automática:

gcloud

As autorizações que foram adicionadas com base na aprendizagem automática do recomendador de IAM, em vez da utilização de autorizações, não são apresentadas na própria recomendação. Em alternativa, são apresentadas nas estatísticas de políticas associadas à recomendação. Todas as autorizações baseadas em ML estão listadas no campo inferredPermissions da estatística. Neste exemplo, a autorização resourcemanager.projects.get foi recomendada com base na aprendizagem automática:

associatedRecommendations:
- recommendation: projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/0573b702-96a5-4622-a916-c762e7b0731f
category: SECURITY
content:
  condition:
    description: ''
    expression: ''
    location: ''
    title: ''
  currentTotalPermissionsCount: '5069'
  exercisedPermissions:
  - permission: storage.objects.create
  - permission: storage.objects.delete
  - permission: storage.objects.get
  - permission: storage.objects.list
  inferredPermissions:
  - permission: resourcemanager.projects.get
  member: serviceAccount:my-service-account@my-project.iam.gserviceaccount.com
  role: roles/editor
description: 4 of the permissions in this role binding were used in the past 90 days.
etag: '"d3cdec23cc712bd0"'
insightSubtype: PERMISSIONS_USAGE
lastRefreshTime: '2020-07-11T07:00:00Z'
name: projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/0d3ce433-f067-4e78-b6ae-03d7d1f6f040
observationPeriod: 7776000s
stateInfo:
  state: ACTIVE
targetResources:
- //cloudresourcemanager.googleapis.com/projects/123456789012
severity: HIGH

Para saber como obter uma estatística de políticas, consulte um dos seguintes artigos:

REST

As autorizações que foram adicionadas com base na aprendizagem automática do recomendador de IAM, em vez da utilização de autorizações, não são apresentadas na própria recomendação. Em alternativa, são apresentadas nas estatísticas de políticas associadas à recomendação. Todas as autorizações baseadas em ML estão listadas no campo inferredPermissions da estatística. Neste exemplo, a autorização resourcemanager.projects.get foi recomendada com base na aprendizagem automática:

{
  "name": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/07841f74-02ce-4de8-bbe6-fc4eabb68568",
  "description": "4 of the permissions in this role binding were used in the past 90 days.",
  "content": {
    "role": "roles/editor",
    "member": "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com",
    "condition": {
      "expression": "",
      "title": "",
      "description": "",
      "location": ""
    },
    "exercisedPermissions": [
      {
        "permission": "storage.objects.create"
      },
      {
        "permission": "storage.objects.delete"
      },
      {
        "permission": "storage.objects.get"
      },
      {
        "permission": "storage.objects.list"
      }
    ],
    "inferredPermissions": [
      {
        "permission": "resourcemanager.projects.get"
      }
    ],
    "currentTotalPermissionsCount": "5069"
  },
  "lastRefreshTime": "2020-07-12T07:00:00Z",
  "observationPeriod": "7776000s",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "category": "SECURITY",
  "associatedRecommendations": [
    {
      "recommendation": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/b1932220-867d-43d1-bd74-fb95876ab656"
    }
  ],
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ],
  "insightSubtype": "PERMISSIONS_USAGE",
  "etag": "\"d3cdec23cc712bd0\"",
  "severity": "HIGH"
}

Para saber como obter uma estatística de políticas, consulte um dos seguintes artigos:

O que se segue?