Como avaliar e aplicar recomendações

Nesta página, explicamos como visualizar, entender e aplicar recomendações feitas pelo 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õesde que realmente precisam.

Antes de começar

Como avaliar e aplicar recomendações

A maneira mais fácil de avaliar e aplicar as recomendações é usando o Console do Google Cloud. Use o Console do Cloud para concluir algumas tarefas:

  • Como visualizar detalhes sobre o motivo pelo qual você recebeu uma recomendação.
  • Como dispensar recomendações.
  • Como criar um papel personalizado automaticamente ao aplicar uma recomendação.

Você também pode avaliar e aplicar recomendações com a ferramenta de linha de comando gcloud e a API Recommender.

Console

  1. No Console do Cloud, acesse a página IAM.

    Acessar a página "IAM"

  2. Na lista de membros do projeto, encontre a coluna Permissões analisadas.

    Para cada papel atribuído a um membro, essa coluna mostra o número de permissões em excesso, seguido pelo número total de permissões atribuídas a ele:

    O ícone Recomendação disponível indica que há recomendação disponível para o papel, tanto para revogá-lo quanto para substituí-lo por um papel que inclui menos permissões.

  3. Se houver recomendações para avaliar, clique em um ícone de Recomendação disponível para ver detalhes da recomendação.

    Se a recomendação for substituir o papel, o recomendador do IAM sempre irá sugerir um conjunto de papéis predefinidos que é possível aplicar.

    Em alguns casos, o recomendador do IAM também sugere a criação de um novo papel personalizado no nível do projeto. Se uma recomendação de papel personalizado estiver disponível, o Console do Cloud a mostrará por padrão. Para alternar para a recomendação de papel predefinido, clique em Visualizar papel predefinido recomendado.

  4. Avalie a recomendação com atenção e entenda como ela irá alterar o acesso do membro aos recursos do Google Cloud. Consulte Como avaliar recomendações para entender os tipos de alterações que uma recomendação pode incluir.

  5. (Opcional) Se a recomendação for criar um papel personalizado, atualize o Título, a Descrição, o ID e a Etapa de criação do papel conforme necessário.

    Se for necessário adicionar permissões ao papel personalizado, clique em Adicionar permissões.

    Se for necessário remover permissões do papel personalizado, desmarque a caixa de seleção de cada permissão que você queira remover.

  6. Tome providências com relação à recomendação.

    Para aplicar a recomendação, clique em Aplicar ou Criar e aplicar. Se você mudar de ideia nos próximos 90 dias, use os registros do recomendador do IAM para reverter a escolha.

    Para dispensar a recomendação, clique em Dispensar e confirme sua escolha. É possível restaurar uma recomendação dispensada, desde que a recomendação ainda seja válida.

  7. Repita as etapas anteriores até ter avaliado todas as recomendações.

gcloud

Para listar as recomendações, execute o comando gcloud recommender recommendations list:

gcloud recommender recommendations list \
    --location=global \
    --recommender=google.iam.policy.Recommender \
    --project=project-id \
    --format=format

Substitua os seguintes valores:

  • project-id: o identificador do projeto, como project-123.
  • format: o formato da resposta. Use json ou yaml.

A resposta é semelhante ao exemplo a seguir. Neste exemplo, uma conta de serviço não usou permissões do papel "Administrador" do Compute (roles/compute.admin) nos últimos 90 dias. Assim, o recomendador do IAM sugere que você revogue o papel:

[
  {
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilter": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "serviceAccount:id-1234567890@example-project.iam.gserviceaccount.com",
                "/iamPolicy/bindings/*/role": "roles/compute.admin"
              },
              "resource": "//cloudresourcemanager.googleapis.com/projects/example-project",
              "resourceType": "cloudresourcemanager.googleapis.com/Project"
            }
          ]
        }
      ]
    },
    "description": "This role has not been used during the observation window.",
    "recommenderSubtype": "REMOVE_ROLE",
    "etag": "\"770237e2c0decf40\"",
    "lastRefreshTime": "2020-01-09T06:06:17Z",
    "name": "projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f",
    "primaryImpact": {
      "category": "SECURITY",
        "securityProjection": {
          "revokedIamPermissionsCount": 708
        }
    },
    "stateInfo": {
      "state": "ACTIVE"
    }
  }
]

Avalie cada recomendação com cuidado e veja como isso mudará o acesso do membro aos recursos do Google Cloud.

Para aplicar uma recomendação:

  1. Use o comando gcloud recommender recommendations mark-claimed para alterar o estado da recomendação para CLAIMED,, o que impede que a recomendação seja alterada enquanto você a aplica:

    gcloud recommender recommendations mark-claimed \
        recommendation-id \
        --location=global \
        --recommender=google.iam.policy.Recommender \
        --project=project-id \
        --format=format \
        --etag=etag \
        --state-metadata=state-metadata
    

    Substitua os seguintes valores:

    • recommendation-id: o identificador exclusivo da recomendação. Esse valor é exibido no final do campo name na recomendação. No exemplo mostrado acima, o ID é fb927dc1-9695-4436-0000-f0f285007c0f.
    • project-id: o identificador do projeto, como project-123.
    • format: o formato da resposta. Use json ou yaml.
    • etag: o valor do campo etag na recomendação, como "dd0686e7136a4cbb". Observe que esse valor pode incluir aspas.
    • state-metadata: opcional. Pares de chave-valor separados por vírgula que contenham a opção de metadados sobre a recomendação. Por exemplo, --state-metadata=reviewedBy=alice,priority=high. Os metadados substituem o campo stateInfo.stateMetadata na recomendação.

    Se o comando for bem-sucedido, a resposta mostrará a recomendação em um estado CLAIMED, conforme mostrado no exemplo a seguir. Para esclarecer, o exemplo omite a maioria dos campos:

    [
      {
        "description": "This role has not been used during the observation window.",
        "recommenderSubtype": "REMOVE_ROLE",
        "etag": "\"df7308cca9719dcc\"",
        "name": "projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f",
        "stateInfo": {
          "state": "CLAIMED",
          "stateMetadata": {
            "reviewedBy": "alice",
            "priority": "high"
          }
        }
      }
    ]
  2. Veja a política do IAM do projeto e, em seguida, modifique a política para que ela reflita a recomendação.

  3. Se você tiver conseguido aplicar a recomendação, atualize o estado dela para SUCCEEDED. Caso contrário, atualize o estado para FAILED:

    gcloud recommender recommendations command \
        recommendation-id \
        --location=global \
        --recommender=google.iam.policy.Recommender \
        --project=project-id \
        --format=format \
        --etag=etag \
        --state-metadata=state-metadata
    

    Substitua os seguintes valores:

    • command: use mark-succeeded se tiver conseguido aplicar a recomendação. Caso contrário, use mark-failed.
    • recommendation-id: o identificador exclusivo da recomendação. Esse valor é exibido no final do campo name na recomendação. No exemplo mostrado acima, o ID é fb927dc1-9695-4436-0000-f0f285007c0f.
    • project-id: o identificador do projeto, como project-123.
    • format: o formato da resposta. Use json ou yaml.
    • etag: o valor do campo etag na recomendação, como "dd0686e7136a4cbb". Observe que esse valor pode incluir aspas.
    • state-metadata: opcional. Pares de chave-valor separados por vírgula que contenham a opção de metadados sobre a recomendação. Por exemplo, --state-metadata=reviewedBy=alice,priority=high. Os metadados substituem o campo stateInfo.stateMetadata na recomendação.

    Por exemplo, se você tiver marcado a recomendação como bem-sucedida, a resposta mostrará a recomendação em um estado SUCCEEDED. Para esclarecer, este exemplo omite a maioria dos campos:

    [
      {
        "description": "This role has not been used during the observation window.",
        "recommenderSubtype": "REMOVE_ROLE",
        "etag": "\"dd0686e7136a4cbb\"",
        "name": "projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f",
        "stateInfo": {
          "state": "SUCCEEDED",
          "stateMetadata": {
            "reviewedBy": "alice",
            "priority": "high"
          }
        }
      }
    ]

REST

Revisar suas recomendações

O método recommendations.list da API Recommender lista todas as recomendações disponíveis para seu projeto.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto do Google Cloud.
  • page-size: opcional. O número máximo de resultados a serem retornados a partir dessa solicitação. Se não especificado, o servidor determinará o número de resultados a serem retornados. Se o número de recomendações for maior que o tamanho da página, a resposta conterá um token de paginação que é possível usar para recuperar a próxima página de resultados.
  • page-token: opcional. O token de paginação retornado em uma resposta anterior desse método. Se especificado, a lista de recomendações começará onde a solicitaçãoanterior foi finalizada.
  • filter: opcional. Uma expressão de filtro para restringir as recomendações retornadas. É possível filtrar as recomendações com base no campo stateInfo.state. Por exemplo, stateInfo.state:"DISMISSED" ou stateInfo.state:"FAILED".

Método HTTP e URL:

GET https://recommender.googleapis.com/v1/projects/project-id/locations/global/recommenders/google.iam.policy.Recommender/recommendations?pageSize=page-size&pageToken=page-token&filter=filter

Para enviar a solicitação, expanda uma destas opções:

A resposta é semelhante ao exemplo a seguir. Neste exemplo, uma conta de serviço não usou permissões do papel "Administrador" do Compute(roles/compute.admin) nos últimos 90 dias. Assim, o recomendador do IAM sugere que você revogue o papel:

{
  "recommendations": [
    "name": "projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2020-01-09T06:06:17Z",
    "primaryImpact": {
      "category": "SECURITY",
        "securityProjection": {
          "revokedIamPermissionsCount": 708
        }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilter": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "serviceAccount:id-1234567890@example-project.iam.gserviceaccount.com",
                "/iamPolicy/bindings/*/role": "roles/compute.admin"
              },
              "resource": "//cloudresourcemanager.googleapis.com/projects/example-project",
              "resourceType": "cloudresourcemanager.googleapis.com/Project"
            }
          ]
        }
      ]
    },
    "stateInfo": {
      "state": "ACTIVE"
    }
    "etag": "\"770237e2c0decf40\"",
    "recommenderSubtype": "REMOVE_ROLE"
  ]
}

Avalie cada recomendação com cuidado e veja como isso mudará o acesso do membro aos recursos do Google Cloud.

Para aplicar uma recomendação:

  1. Marque a recomendação como CLAIMED:

    O método recommendations.markClaimed da API Recommender marca uma recomendação como CLAIMED, o que impede que a recomendação seja alterada enquanto você a aplica.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • project-id: o ID do projeto do Google Cloud.
    • recommendation-id: o identificador exclusivo da recomendação. Esse valor é exibido no final do campo name na recomendação. Por exemplo, se o campo name for projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, o ID de recomendação será fb927dc1-9695-4436-0000-f0f285007c0f.
    • etag: o valor do campo etag na recomendação, como "dd0686e7136a4cbb". Use barras invertidas para escapar das aspas, por exemplo, "\"df7308cca9719dcc\"".
    • state-metadata: opcional. Um objeto que contém pares de chave-valor com a opção de metadados sobre a recomendação. Por exemplo, {"reviewedBy": "alice", "priority": "high"}. Os metadados substituem o campo stateInfo.stateMetadata na recomendação.

    Método HTTP e URL:

    POST https://recommender.googleapis.com/v1/projects/project-id/locations/global/recommenders/google.iam.policy.Recommender/recommendations/recommendation-id:markClaimed

    Corpo JSON da solicitação:

    {
      "etag": "etag"
      "stateMetadata": {
        "state-metadata"
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    A resposta mostra a recomendação em um estado CLAIMED, conforme mostrado no exemplo a seguir. Para esclarecer, este exemplo omite a maioria dos campos:

    {
      "description": "This role has not been used during the observation window.",
      "stateInfo": {
        "state": "CLAIMED",
        "stateMetadata": {
          "reviewedBy": "alice",
          "priority": "high"
        }
      }
      "etag": "\"dd0686e7136a4cbb\"",
      "recommenderSubtype": "REMOVE_ROLE"
    }
    

  2. Veja a política do IAM do projeto e, em seguida, modifique a política para que ela reflita a recomendação.

  3. Se você tiver conseguido aplicar a recomendação, atualize o estado dela para SUCCEEDED. Caso contrário, atualize o estado para FAILED:

    SUCCEEDED

    O método recommendations.markSucceeded da API Recommender marca uma recomendação como SUCCEEDED, indicando que você conseguiu aplicá-la.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • project-id: o ID do projeto do Google Cloud.
    • recommendation-id: o identificador exclusivo da recomendação. Esse valor é exibido no final do campo name na recomendação. Por exemplo, se o campo name for projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, o ID de recomendação será fb927dc1-9695-4436-0000-f0f285007c0f.
    • etag: o valor do campo etag na recomendação, como "dd0686e7136a4cbb". Use barras invertidas para escapar das aspas, por exemplo, "\"df7308cca9719dcc\"".
    • state-metadata: opcional. Um objeto que contém pares de chave-valor com a opção de metadados sobre a recomendação. Por exemplo, {"reviewedBy": "alice", "priority": "high"}. Os metadados substituem o campo stateInfo.stateMetadata na recomendação.

    Método HTTP e URL:

    POST https://recommender.googleapis.com/v1/projects/project-id/locations/global/recommenders/google.iam.policy.Recommender/recommendations/recommendation-id:markSucceeded

    Corpo JSON da solicitação:

    {
      "etag": "etag"
      "stateMetadata": {
        "state-metadata"
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    A resposta mostra a recomendação em um estado SUCCEEDED, conforme mostrado no exemplo a seguir. Para esclarecer, este exemplo omite a maioria dos campos:

    {
      "description": "This role has not been used during the observation window.",
      "stateInfo": {
        "state": "SUCCEEDED",
        "stateMetadata": {
          "reviewedBy": "alice",
          "priority": "high"
        }
      }
      "etag": "\"dd0686e7136a4cbb\"",
      "recommenderSubtype": "REMOVE_ROLE"
    }
    

    FAILED

    O método recommendations.markFailed da API Recommender marca uma recomendação como FAILED, indicando que não foi possível aplicá-la.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • project-id: o ID do projeto do Google Cloud.
    • recommendation-id: o identificador exclusivo da recomendação. Esse valor é exibido no final do campo name na recomendação. Por exemplo, se o campo name for projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, o ID de recomendação será fb927dc1-9695-4436-0000-f0f285007c0f.
    • etag: o valor do campo etag na recomendação, como "dd0686e7136a4cbb". Use barras invertidas para escapar das aspas, por exemplo, "\"df7308cca9719dcc\"".
    • state-metadata: opcional. Um objeto que contém pares de chave-valor com a opção de metadados sobre a recomendação. Por exemplo, {"reviewedBy": "alice", "priority": "high"}. Os metadados substituem o campo stateInfo.stateMetadata na recomendação.

    Método HTTP e URL:

    POST https://recommender.googleapis.com/v1/projects/project-id/locations/global/recommenders/google.iam.policy.Recommender/recommendations/recommendation-id:markFailed

    Corpo JSON da solicitação:

    {
      "etag": "etag"
      "stateMetadata": {
        "state-metadata"
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    A resposta mostra a recomendação em um estado FAILED, conforme mostrado no exemplo a seguir. Para esclarecer, este exemplo omite a maioria dos campos:

    {
      "description": "This role has not been used during the observation window.",
      "stateInfo": {
        "state": "FAILED",
        "stateMetadata": {
          "reviewedBy": "alice",
          "priority": "high"
        }
      }
      "etag": "\"dd0686e7136a4cbb\"",
      "recommenderSubtype": "REMOVE_ROLE"
    }
    

Como visualizar, reverter e restaurar alterações

Depois de aplicar ou dispensar uma recomendação, essa ação será exibida no histórico de recomendações. Para ver o histórico, siga estas etapas:

  1. No Console do Cloud, acesse a página IAM.

    Acessar a página "IAM"

  2. Próximo à parte superior da tela, clique em Histórico de recomendações.

    O Console do Cloud mostra uma lista de ações anteriores nas recomendações do IAM.

  3. Para visualizar detalhes sobre uma recomendação, clique na seta expansora .

    O Console do Cloud mostra detalhes sobre a ação que foi realizada, inclusive o membro que executou a ação:

  4. (Opcional) Se necessário, é possível reverter a recomendação, o que desfará as alterações feitas. Também é possível restaurar uma recomendação dispensada.

    Para reverter uma alteração aplicada anteriormente a uma recomendação, clique em Reverter. O Console do Cloud reverte as alterações para os papéis do membro. A recomendação não aparece mais no Console do Cloud.

    Para restaurar uma recomendação dispensada, clique em Restaurar. A recomendação ficará visível na página IAM do Console do Cloud. Nem papéis nem permissões são alterados.

A seguir