Google Cloud Recomendador

Este documento fornece orientações para ajudar você a configurar e integrar o Google Cloud Recommender ao Google Security Operations.

Pré-requisitos

Conclua todas as etapas de pré-requisito antes de configurar a integração.

Criar e configurar o papel do IAM

  1. No console do Google Cloud , acesse a página Papéis do IAM.

    Acessar papéis do IAM

  2. Clique em Criar papel para criar um papel personalizado com as permissões necessárias para a integração.

  3. Para uma nova função personalizada, forneça o Título, a Descrição e um ID exclusivo.

  4. Defina o Estágio de lançamento da função como Disponibilidade geral.

  5. Adicione as seguintes permissões ao papel criado:

    • iam.roles.create
    • iam.roles.delete
    • iam.roles.get
    • iam.roles.list
    • iam.roles.undelete
    • iam.roles.update
    • iam.serviceAccounts.create
    • iam.serviceAccounts.delete
    • iam.serviceAccounts.disable
    • iam.serviceAccounts.enable
    • iam.serviceAccounts.get
    • iam.serviceAccounts.getIamPolicy
    • iam.serviceAccounts.list
    • iam.serviceAccounts.setIamPolicy
    • iam.serviceAccounts.undelete
    • iam.serviceAccounts.update
    • recommender.iamPolicyInsights.get
    • recommender.iamPolicyInsights.list
    • recommender.iamPolicyLateralMovementInsights.get
    • recommender.iamPolicyLateralMovementInsights.list
    • recommender.iamPolicyRecommendations.get
    • recommender.iamPolicyRecommendations.list
    • recommender.iamPolicyRecommendations.update
    • recommender.iamServiceAccountInsights.get
    • recommender.iamServiceAccountInsights.list
    • recommender.locations.get
    • recommender.locations.list
    • resourcemanager.folders.get
    • resourcemanager.folders.getIamPolicy
    • resourcemanager.folders.setIamPolicy
    • resourcemanager.organizations.get
    • resourcemanager.organizations.getIamPolicy
    • resourcemanager.organizations.setIamPolicy
    • resourcemanager.projects.get
    • resourcemanager.projects.getIamPolicy
    • resourcemanager.projects.list
    • resourcemanager.projects.setIamPolicy
    • securitycenter.assets.list
    • securitycenter.findings.group
    • securitycenter.findings.list
    • securitycenter.findings.listFindingPropertyNames
    • securitycenter.findings.setMute
    • securitycenter.findings.setState
    • securitycenter.sources.get
    • securitycenter.sources.list
    • securitycenter.userinterfacemetadata.get
  6. Clique em Criar.

Criar uma conta de serviço

  1. Para criar uma conta de serviço, siga o procedimento de como criar uma conta de serviço.

  2. Depois de criar uma conta de serviço, faça o download dela como um arquivo JSON. Você precisa fornecer o conteúdo de um arquivo JSON baixado ao configurar os parâmetros de integração.

Integrar o Google Cloud Recommender ao Google SecOps

Para instruções detalhadas sobre como configurar uma integração no Google SecOps SOAR, consulte Configurar integrações.

Entradas de integração

Para configurar a integração, use os seguintes parâmetros:

Parâmetros
API Root Obrigatório

A raiz da API do serviço Recommender Google Cloud .

O valor padrão é https://recommender.googleapis.com/v1/

Organization ID Opcional

O ID da organização que deve ser usado com a integração do recomendador Google Cloud.

User's Service Account Obrigatório

O conteúdo da conta de serviço do Google Cloud Recommender.

Forneça todo o conteúdo do arquivo JSON da conta de serviço que você baixou ao criar uma conta de serviço.

Verify SSL Opcional

Quando marcada, a caixa verifica se o certificado SSL para conexão com o servidor do Recomendador Google Cloud é válido.

Essa opção vem marcada por padrão.

Ações

Aplicar recomendações do IAM

Aplique as recomendações do IAM com base na entrada fornecida.

Essa ação só funciona com as recomendações google.iam.policy.Recommender.

Entidades

A ação não é executada em entidades.

Entradas de ação

Para configurar a ação, use os seguintes parâmetros:

Parâmetros
IAM Recommendations JSON Obrigatório

O resultado JSON da recomendação.

O resultado JSON pode ser fornecido como um marcador de posição das ações Listar recomendações ou Receber recomendação.

Saídas de ação

Tipo de saída da ação
Anexo do Painel de Casos N/A
Link do Painel de Casos N/A
Tabela do painel de casos N/A
Tabela de enriquecimento N/A
Insight de entidade N/A
Insight N/A
Resultado JSON Disponível
Widget OOTB N/A
Resultado do script Disponível
Resultado do script
Nome do resultado do script Valor
is_success Verdadeiro/Falso
Resultado JSON
{
  "applied_recommendations": [
    {
      "name": "projects/PROJECT_ID/locations/global/recommenders/google.iam.policy.Recommender/recommendations/217d3019-bae5-4a52-9968-787fdd546a53",
      "description": "Replace the current role with a smaller role to cover the permissions needed.",
      "lastRefreshTime": "2023-07-28T07:00:00Z",
      "primaryImpact": {
        "category": "SECURITY",
        "securityProjection": {
          "details": {
            "revokedIamPermissionsCount": 610
          }
        }
      },
      "content": {
        "operationGroups": [
          {
            "operations": [
              {
                "action": "add",
                "resourceType": "cloudresourcemanager.googleapis.com/Project",
                "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
                "path": "/iamPolicy/bindings/*/members/-",
                "value": "USER_ID@example.com",
                "pathFilters": {
                  "/iamPolicy/bindings/*/condition/expression": "",
                  "/iamPolicy/bindings/*/role": "roles/compute.instanceAdmin"
                }
              },
              {
                "action": "remove",
                "resourceType": "cloudresourcemanager.googleapis.com/Project",
                "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
                "path": "/iamPolicy/bindings/*/members/*",
                "pathFilters": {
                  "/iamPolicy/bindings/*/condition/expression": "",
                  "/iamPolicy/bindings/*/members/*": "USER_ID@example.com",
                  "/iamPolicy/bindings/*/role": "roles/compute.admin"
                }
              }
            ]
          }
        ],
        "overview": {
          "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
          "member": "user:USER_ID@example.com",
          "removedRole": "roles/compute.admin",
          "addedRoles": [
            "roles/compute.instanceAdmin"
          ],
          "minimumObservationPeriodInDays": "0"
        }
      },
      "stateInfo": {
        "state": "SUCCEEDED",
        "stateMetadata": {
          "applied_by": "bulk_apply_by_automated_script-2023-08-11"
        }
      },
      "etag": "\"892d57ee41baa03e\"",
      "recommenderSubtype": "REPLACE_ROLE",
      "associatedInsights": [
        {
          "insight": "projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID"
        }
      ],
      "priority": "P4"
    },
    {
      "name": "projects/PROJECT_ID/locations/global/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID",
      "description": "Replace the current role with a smaller role to cover the permissions needed.",
      "lastRefreshTime": "2023-07-28T07:00:00Z",
      "primaryImpact": {
        "category": "SECURITY",
        "securityProjection": {
          "details": {
            "revokedIamPermissionsCount": 19
          }
        }
      },
      "content": {
        "operationGroups": [
          {
            "operations": [
              {
                "action": "add",
                "resourceType": "cloudresourcemanager.googleapis.com/Project",
                "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
                "path": "/iamPolicy/bindings/*/members/-",
                "value": "user:USER_ID@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/PROJECT_ID",
                "path": "/iamPolicy/bindings/*/members/*",
                "pathFilters": {
                  "/iamPolicy/bindings/*/condition/expression": "",
                  "/iamPolicy/bindings/*/members/*": "user:USER_ID@example.com",
                  "/iamPolicy/bindings/*/role": "roles/storage.admin"
                }
              }
            ]
          }
        ],
        "overview": {
          "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
          "member": "user:USER_ID@example.com",
          "removedRole": "roles/storage.admin",
          "addedRoles": [
            "roles/storage.objectAdmin"
          ],
          "minimumObservationPeriodInDays": "0"
        }
      },
      "stateInfo": {
        "state": "SUCCEEDED",
        "stateMetadata": {
          "applied_by": "bulk_apply_by_automated_script-2023-08-11"
        }
      },
      "etag": "\"af7635ffeb512998\"",
      "recommenderSubtype": "REPLACE_ROLE",
      "associatedInsights": [
        {
          "insight": "projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID"
        }
      ],
      "priority": "P4"
    }
  ],
  "failed_recommendations": []
}
Painel de casos

A ação fornece as seguintes mensagens de saída:

Mensagem de resposta Descrição da mensagem
Successfully applied provided IAM recommendations. A ação foi concluída.
Successfully applied provided IAM recommendation, but some of the recommendations were not applied. A ação foi concluída.
No provided IAM recommendations were applied. Falha na recomendação.
Error executing action ACTION_NAME. A ação retornou um erro.

Receber recomendação

Receba uma recomendação específica do serviço Google Cloud Recommender.

Entidades

A ação não é executada em entidades.

Entradas de ação

Para configurar a ação, use os seguintes parâmetros:

Parâmetros
Recommendation name Obrigatório

Especifica o nome da recomendação a ser retornada.

A ação aceita vários valores como uma string separada por vírgulas.

Exemplo da entrada esperada:

    projects/projectname/locations/global/recommenders/google.iam.policy.Recommender/recommendations/0f262740-bf4a-4c3d-9573-0da3345cf3f7
    

Saídas de ação

Tipo de saída da ação
Anexo do Painel de Casos N/A
Link do Painel de Casos N/A
Tabela do painel de casos N/A
Tabela de enriquecimento N/A
Insight de entidade N/A
Insight N/A
Resultado JSON Disponível
Widget OOTB N/A
Resultado do script Disponível
Resultado do script
Nome do resultado do script Valor
is_success Verdadeiro/Falso
Resultado JSON
[
  {
    "name": "name",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2023-07-28T07:00:00Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 68
        }
      }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "resourceType": "cloudresourcemanager.googleapis.com/Project",
              "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "serviceAccount:SERVICE_ACCOUNT_ID.iam.gserviceaccount.com",
                "/iamPolicy/bindings/*/role": "roles/monitoring.admin"
              }
            }
          ]
        }
      ],
      "overview": {
        "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
        "member": "serviceAccount:SERVICE_ACCOUNT_ID.iam.gserviceaccount.com",
        "removedRole": "roles/monitoring.admin",
        "minimumObservationPeriodInDays": "0"
      }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "etag": "",
    "recommenderSubtype": "REMOVE_ROLE",
    "associatedInsights": [
      {
        "insight": "projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.Insight/insights/"
      }
    ],
    "priority": "P4"
  }
]
Painel de casos

A ação fornece as seguintes mensagens de saída:

Mensagem de resposta Descrição da mensagem
Successfully found recommendation in the Google Cloud Recommender service. A ação foi concluída.
No recommendations were found in the Google Cloud Recommender service. Os dados não estão disponíveis.
Error executing action ACTION_NAME. A ação retornou um erro.

Listar recomendações

Liste as recomendações disponíveis no serviço Google Cloud Recommender.

Entidades

A ação não é executada em entidades.

Entradas de ação

Para configurar a ação, use os seguintes parâmetros:

Parâmetros
Recommendation Filter Opcional

Especifica o filtro para buscar as recomendações.

O parâmetro precisa ser uma string em um dos seguintes formatos:

  • PROJECTS_OR_ORGANIZATIONS/ PROJECT_OR_ORGANIZATION_NAME_OR_ID
  • //cloudresourcemanager.googleapis.com/ PROJECTS_OR_ORGANIZATIONS/ PROJECT_OR_ORGANIZATION_NAME_OR_ID

Se nenhum valor for fornecido, a ação vai buscar o ID do projeto na conta de serviço configurada.

Recommendation Location Obrigatório

Especifica o Google Cloud local para buscar recomendações.

O padrão é global.

Recommendation State Opcional

Especifica o estado da recomendação a ser retornado.

O padrão é Not Specified.

Os valores possíveis são:

  • Not Specified
  • Active
  • Dismissed
Recommendation Priority Opcional

Especifica a prioridade de uma recomendação a ser retornada. É possível especificar vários valores como uma string separada por vírgulas.

Recommender Subtype Opcional

Especifica o subtipo de recomendador retornado.

O padrão é Not Specified.

Os valores possíveis são:

  • Not Specified
  • REMOVE_ROLE
  • REPLACE_ROLE
Max Records To Return Opcional

Especifica quantos registros serão retornados. Se nenhum valor for fornecido, a ação vai retornar 50 registros por padrão.

Saídas de ação

Tipo de saída da ação
Anexo do Painel de Casos N/A
Link do Painel de Casos N/A
Tabela do painel de casos Disponível
Tabela de enriquecimento N/A
Insight de entidade N/A
Insight N/A
Resultado JSON Disponível
Widget OOTB N/A
Resultado do script Disponível
Resultado do script
Nome do resultado do script Valor
is_success Verdadeiro/Falso
Resultado JSON
[
  {
    "name": "name",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2023-07-27T07:00:00Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 68
        }
      }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "resourceType": "cloudresourcemanager.googleapis.com/Project",
              "resource": "//cloudresourcemanager.googleapis.com/projects",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "serviceAccount:SERVICE_ACCOUNT_ID",
                "/iamPolicy/bindings/*/role": "roles/monitoring.admin"
              }
            }
          ]
        }
      ],
      "overview": {
        "resource": "//cloudresourcemanager.googleapis.com/",
        "member": "serviceAccount:SERVICE_ACCOUNT_ID",
        "removedRole": "roles/monitoring.admin",
        "minimumObservationPeriodInDays": "0"
      }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "etag": "",
    "recommenderSubtype": "REMOVE_ROLE",
    "associatedInsights": [
      {
        "insight": "projects/i/locations/global/insightTypes/"
      }
    ],
    "priority": "P4"
  },
  {
    "name": "name",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2023-07-27T07:00:00Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 5
        }
      }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "resourceType": "cloudresourcemanager.googleapis.com/Project",
              "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "user:USER_ID@example.com",
                "/iamPolicy/bindings/*/role": "roles/chroniclesm.admin"
              }
            }
          ]
        }
      ],
      "overview": {
        "resource": "//cloudresourcemanager.googleapis.com/projects",
        "member": "user:USER_ID@example.com",
        "removedRole": "roles/chroniclesm.admin",
        "minimumObservationPeriodInDays": "0"
      }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "etag": "",
    "recommenderSubtype": "REMOVE_ROLE",
    "associatedInsights": [
      {
        "insight": "projects"
      }
    ],
    "priority": "P4"
  }
]
Painel de casos

A ação fornece as seguintes mensagens de saída:

Mensagem de resposta Descrição da mensagem
Successfully found recommendations for the provided criteria in the Google Cloud Recommender service. A ação foi concluída.
No recommendations were found for the provided criteria in the Google Cloud Recommender service. Não há dados disponíveis.
Error executing action ACTION_NAME. A ação retornou um erro.

A ação fornece a seguinte tabela de casos:

Recomendações disponíveis
Colunas
  • Nome
  • Descrição
  • Categoria
  • Subtipo de recomendação
  • Prioridade
  • Estado
  • Hora da última atualização

Ping

Teste a conectividade com o serviço Google Cloud Recommender usando os parâmetros fornecidos na página de configuração da integração na guia "Marketplace do Google SecOps".

Entidades

A ação não é executada em entidades.

Entradas de ação

N/A

Saídas de ação

Tipo de saída da ação
Anexo do Painel de Casos N/A
Link do Painel de Casos N/A
Tabela do painel de casos N/A
Tabela de enriquecimento N/A
Insight de entidade N/A
Insight N/A
Resultado JSON N/A
Widget OOTB N/A
Resultado do script Disponível
Resultado do script
Nome do resultado do script Valor
is_success Verdadeiro/Falso
Painel de casos

A ação fornece as seguintes mensagens de saída:

Mensagem de resposta Descrição da mensagem
Successfully connected to the Google Cloud Recommender service with the provided connection parameters! A ação foi concluída.
Failed to connect to the Google Cloud Recommender service! A ação retornou um erro.

Recomendação de atualização

Atualize a recomendação no serviço do recomendador Google Cloud .

Entidades

A ação não é executada em entidades.

Entradas de ação

Use os seguintes parâmetros para configurar a ação:

Parâmetros
Recommendation name Obrigatório

Especifica o nome da recomendação a ser atualizada.

A ação aceita vários valores como uma string separada por vírgulas.

Exemplo de entrada esperada: projects/projectname/locations/global/recommenders/google.iam.policy.Recommender/recommendations/0f262740-bf4a-4c3d-9573-0da3345cf3f7

Recommendation State Opcional

Especifica o estado para o qual a recomendação vai mudar.

O padrão é Not Specified.

Os valores possíveis são:

  • Not Specified
  • Claimed
  • Dismissed
Recommendation Result Opcional

Especifica o resultado para o qual a recomendação será alterada.

O padrão é Not Specified.

Os valores possíveis são:

  • Not Specified
  • Failed
  • Succeeded

Saídas de ação

Tipo de saída da ação
Anexo do Painel de Casos N/A
Link do Painel de Casos N/A
Tabela do painel de casos N/A
Tabela de enriquecimento N/A
Insight de entidade N/A
Insight N/A
Resultado JSON Disponível
Widget OOTB N/A
Resultado do script Disponível
Resultado do script
Nome do resultado do script Valor
is_success Verdadeiro/Falso
Resultado JSON
[
  {
    "name": "name",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2023-07-28T07:00:00Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 68
        }
      }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "resourceType": "cloudresourcemanager.googleapis.com/Project",
              "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "serviceAccount:SERVICE_ACCOUNT_ID.iam.gserviceaccount.com",
                "/iamPolicy/bindings/*/role": "roles/monitoring.admin"
              }
            }
          ]
        }
      ],
      "overview": {
        "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
        "member": "serviceAccount:SERVICE_ACCOUNT_ID.iam.gserviceaccount.com",
        "removedRole": "roles/monitoring.admin",
        "minimumObservationPeriodInDays": "0"
      }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "etag": "",
    "recommenderSubtype": "REMOVE_ROLE",
    "associatedInsights": [
      {
        "insight": "projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.Insight/insights/"
      }
    ],
    "priority": "P4"
  }
]
Painel de casos

A ação fornece as seguintes mensagens de saída:

Mensagem de resposta Descrição da mensagem
Successfully updated recommendation in the Google Cloud Recommender service. A ação foi concluída.
No recommendations were found in the Google Cloud Recommender service. Os dados não estão disponíveis.
Error executing action ACTION_NAME. A ação retornou um erro.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.