Google Cloud Recomendador

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

Pré-requisitos

Certifique-se de que conclui todos os passos pré-requisitos antes de configurar a integração.

Crie e configure a função IAM

  1. Na Google Cloud consola, aceda à página Funções da IAM.

    Aceda a Funções de IAM

  2. Clique em Criar função para criar uma função personalizada com as autorizações necessárias para a integração.

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

  4. Defina o Role Launch Stage como General Availability.

  5. Adicione as seguintes autorizações à função criada:

    • 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 para criar uma conta de serviço.

  2. Depois de criar uma conta de serviço, transfira-a como um ficheiro JSON. Tem de fornecer o conteúdo de um ficheiro JSON transferido quando configurar os parâmetros de integração.

Integre o Google Cloud Recommender com o Google SecOps

Para obter instruções detalhadas sobre como configurar uma integração no Google SecOps SOAR, consulte o artigo Configure 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 Google Cloud Recommender.

O valor predefinido é https://recommender.googleapis.com/v1/

Organization ID Opcional

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

User's Service Account Obrigatório

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

Certifique-se de que fornece o conteúdo completo do ficheiro JSON da conta de serviço que transferiu quando criou uma conta de serviço.

Verify SSL Opcional

Quando selecionado, o parâmetro verifica se o certificado SSL para a ligação ao servidor do Recomendador é válido. Google Cloud

Selecionada por predefinição.

Ações

Aplique recomendações da IAM

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

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

Entidades

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

Dados de ações

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 a partir das ações List recommendations ou Get recommendation.

Resultados da ação

Tipo de saída da ação
Fixação à parede da caixa N/A
Link da parede da caixa N/A
Mesa de parede para caixas N/A
Tabela de enriquecimento N/A
Estatísticas da 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": []
}
Parede da caixa

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

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

Receba uma recomendação

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

Entidades

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

Dados de ações

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

Parâmetros
Recommendation name Obrigatório

Especifica o nome da recomendação a devolver.

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
    

Resultados da ação

Tipo de saída da ação
Fixação à parede da caixa N/A
Link da parede da caixa N/A
Mesa de parede para caixas N/A
Tabela de enriquecimento N/A
Estatísticas da 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"
  }
]
Parede da caixa

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

Mensagem de saída Descrição da mensagem
Successfully found recommendation in the Google Cloud Recommender service. A ação foi concluída com êxito.
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 devolveu um erro.

Recomendações de listas

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

Entidades

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

Dados de ações

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

Parâmetros
Recommendation Filter Opcional

Especifica o filtro para obter as recomendações.

O parâmetro deve ser uma string num 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 não for indicado nenhum valor, a ação obtém o ID do projeto a partir da conta de serviço configurada.

Recommendation Location Obrigatório

Especifica a Google Cloud localização para obter recomendações.

A predefinição é global.

Recommendation State Opcional

Especifica o estado da recomendação a devolver.

A predefinição é Not Specified.

Os valores possíveis são os seguintes:

  • Not Specified
  • Active
  • Dismissed
Recommendation Priority Opcional

Especifica a prioridade de uma recomendação a devolver. Podem ser especificados vários valores como uma string separada por vírgulas.

Recommender Subtype Opcional

Especifica o subtipo de recomendador devolvido.

A predefinição é Not Specified.

Os valores possíveis são os seguintes:

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

Especifica o número de registos a devolver. Se não for indicado nenhum valor, a ação devolve 50 registos por predefinição.

Resultados da ação

Tipo de saída da ação
Fixação à parede da caixa N/A
Link da parede da caixa N/A
Mesa de parede para caixas Disponível
Tabela de enriquecimento N/A
Estatísticas da 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"
  }
]
Parede da caixa

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

Mensagem de saída Descrição da mensagem
Successfully found recommendations for the provided criteria in the Google Cloud Recommender service. A ação foi concluída com êxito.
No recommendations were found for the provided criteria in the Google Cloud Recommender service. Não existem dados disponíveis.
Error executing action ACTION_NAME. A ação devolveu um erro.

A ação fornece a seguinte tabela de registo de ocorrências:

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

Tchim-tchim

Teste a conetividade ao serviço Google Cloud Recommender com os parâmetros fornecidos na página de configuração da integração no separador Google SecOps Marketplace.

Entidades

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

Dados de ações

N/A

Resultados da ação

Tipo de saída da ação
Fixação à parede da caixa N/A
Link da parede da caixa N/A
Mesa de parede para caixas N/A
Tabela de enriquecimento N/A
Estatísticas da 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
Parede da caixa

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

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

Atualize a recomendação

Atualize a recomendação no Google Cloud serviço de recomendações.

Entidades

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

Dados de ações

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

Parâmetros
Recommendation name Obrigatório

Especifica o nome da recomendação a atualizar.

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

Recommendation State Opcional

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

A predefinição é Not Specified.

Os valores possíveis são os seguintes:

  • Not Specified
  • Claimed
  • Dismissed
Recommendation Result Opcional

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

A predefinição é Not Specified.

Os valores possíveis são os seguintes:

  • Not Specified
  • Failed
  • Succeeded

Resultados da ação

Tipo de saída da ação
Fixação à parede da caixa N/A
Link da parede da caixa N/A
Mesa de parede para caixas N/A
Tabela de enriquecimento N/A
Estatísticas da 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"
  }
]
Parede da caixa

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

Mensagem de saída Descrição da mensagem
Successfully updated recommendation in the Google Cloud Recommender service. A ação foi concluída com êxito.
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 devolveu um erro.

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