Melhorar sua postura de segurança com insights de recursos

Os insights do Inventário de recursos do Cloud ajudam a detectar possíveis riscos nas configurações dos recursos e a melhorar sua postura de segurança. Ele faz parte do serviço Recomendador e é fornecido como o tipo de insight google.cloudasset.asset.Insight.

Os insights são anomalias específicas que exigem uma análise mais detalhada para determinar a ação adequada. Eles são gerados diariamente com base em um snapshot dos dados armazenados no Inventário de recursos do Cloud.

Os insights fornecidos pelo Inventário de recursos do Cloud são baseados nas políticas do IAM associadas aos recursos da sua organização.

Antes de começar

Antes de começar a usar os insights de recursos, conclua as etapas a seguir.

  1. Ative a API Recommender.

  2. Verifique se a sua conta tem as seguintes permissões:

    • recommender.cloudAssetInsights.get

    • recommender.cloudAssetInsights.list

    • recommender.cloudAssetInsights.update

    É possível conceder essas permissões individualmente ou então um dos papéis a seguir.

    • Papel Leitor de insights de recursos do Cloud (roles/recommender.cloudAssetInsightsViewer)

    • Papel Administrador de insights de recursos do Cloud (roles/recommender.cloudAssetInsightsAdmin)

Limitações

  • Esses insights não consideram as associações a grupos ou contas de serviço como parte das descobertas e não devem ser considerados uma lista completa de vulnerabilidades correspondentes.

  • Os insights individuais incluem uma amostragem das políticas de IAM correspondentes, que são limitadas a 100 políticas distintas. Todas as políticas correspondentes podem ser recuperadas pesquisando políticas de permissão do IAM em recursos.

Solicitar insights de recursos

A maneira mais fácil de pedir insights de recursos é listá-los, como mostrado nas etapas a seguir. Para outros tipos de interações de insights, consulte Usar a API - Insights.

gcloud

gcloud recommender insights list \
    --SCOPE \
    --location=global \
    --insight-type=google.cloudasset.asset.Insight \
    --filter="insightSubtype:SUBTYPE" \

Forneça os valores a seguir:

  • SCOPE: use um dos seguintes valores:

    • project=PROJECT_ID, em que PROJECT_ID é o ID do projeto para o qual você quer insights.
    • folder=FOLDER_ID, em que FOLDER_ID é o ID da pasta para a qual você quer insights.

      Como encontrar o ID de uma Google Cloud pasta

      Console doGoogle Cloud

      Para encontrar o ID de uma pasta do Google Cloud , siga estas etapas:

      1. Acesse o console do Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de listagem do switcher na barra de menu.
      3. Selecione sua organização na caixa de listagem.
      4. Pesquise o nome da pasta. O ID da pasta aparece ao lado do nome dela.

      CLI da gcloud

      Para recuperar o ID de uma pasta Google Cloud localizada no nível da organização, use o seguinte comando:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Em que TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para ver mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para isso, execute o seguinte comando usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização para a qual você quer insights.

      Como encontrar o ID de uma Google Cloud organização

      Console doGoogle Cloud

      Para encontrar o ID de uma organização Google Cloud , siga estas etapas:

      1. Acesse o console do Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de listagem do switcher na barra de menu.
      3. Selecione sua organização na caixa de listagem.
      4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

      CLI da gcloud

      Para recuperar o ID de uma organização Google Cloud , use o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: opcional. O ID do projeto em que o agente de serviço padrão do Inventário de recursos do Cloud está e que tem permissões para gerenciar seu faturamento e sua cota. Leia mais sobre como definir o projeto de faturamento.

  • SUBTYPE: o subtipo de insight de recurso. Um dos seguintes valores:

    • EXTERNAL_MEMBER: detecta políticas do IAM que contêm usuários ou grupos que pertencem a um domínio fora dos domínios da sua organização.
    • EXTERNAL_POLICY_EDITOR: detecta políticas do IAM que contêm usuários ou grupos fora dos domínios da organização e que têm permissão para modificar políticas do IAM.
    • EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER: detecta políticas do IAM que contêm usuários ou grupos fora dos domínios da organização e que têm permissão para receber ou listar objetos de armazenamento (permissão storage.objects.list ou storage.objects.get).
    • EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR: detecta políticas do IAM que contêm usuários ou grupos fora dos domínios da organização e que têm permissão para representar contas de serviço.
    • TERMINATED_MEMBER: detecta políticas do IAM que contêm usuários ou grupos com contas desativadas, excluídas ou limpas.
    • PUBLIC_IAM_POLICY: detecta políticas do IAM que contêm todos os usuários ou todos os usuários autenticados.
    • OWNER_TERMINATED_PROJECT: detecta projetos que não contêm usuários ou grupos ativos na política do IAM do projeto.
  • Se não for especificado, todos os subtipos serão retornados.

Consulte a referência da CLI gcloud para todas as opções.

Exemplo

Execute o comando a seguir para listar insights do projeto my-project.

gcloud recommender insights list \
    --project=my-project \
    --location=global \
    --insight-type=google.cloudasset.asset.Insight

Exemplo de resposta

INSIGHT_ID: 00000000-0000-0000-0000-000000000000
CATEGORY: SECURITY
INSIGHT_STATE: ACTIVE
LAST_REFRESH_TIME: 2024-01-30T00:00:00Z
SEVERITY: LOW
INSIGHT_SUBTYPE: EXTERNAL_MEMBER
DESCRIPTION: Domain example.com detected in 1 IAM policies

REST

Método HTTP e URL:

GET https://recommender.googleapis.com/v1/SCOPE_PATH/locations/global/insightTypes/google.cloudasset.asset.Insight/insights

Cabeçalhos:

X-Goog-User-Project: BILLING_PROJECT_ID

Forneça os valores a seguir:

  • SCOPE_PATH: use um dos seguintes valores:

    Os valores permitidos são:

    • projects/PROJECT_ID, em que PROJECT_ID é o ID do projeto para o qual você quer insights.
    • projects/PROJECT_NUMBER, em que PROJECT_NUMBER é o número do projeto para o qual você quer insights.

      Como encontrar um Google Cloud número do projeto

      Console doGoogle Cloud

      Para encontrar o número de um projeto Google Cloud , siga estas etapas:

      1. Acesse a página Boas-vindas no console do Google Cloud .

        Acessar "Conheça o Google Workspace"

      2. Clique na caixa de listagem do switcher na barra de menu.
      3. Selecione sua organização na caixa de listagem e pesquise o nome do projeto. O nome, o número e o ID do projeto são mostrados perto do título Bem-vindo.

        Até 4.000 recursos são exibidos. Se você não encontrar o projeto que está procurando, acesse a página Gerenciar recursos e filtre a lista usando o nome dele.

      CLI da gcloud

      É possível extrair um número de Google Cloud projeto com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, em que FOLDER_ID é o ID da pasta para a qual você quer insights.

      Como encontrar o ID de uma Google Cloud pasta

      Console doGoogle Cloud

      Para encontrar o ID de uma pasta do Google Cloud , siga estas etapas:

      1. Acesse o console do Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de listagem do switcher na barra de menu.
      3. Selecione sua organização na caixa de listagem.
      4. Pesquise o nome da pasta. O ID da pasta aparece ao lado do nome dela.

      CLI da gcloud

      Para recuperar o ID de uma pasta Google Cloud localizada no nível da organização, use o seguinte comando:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Em que TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para ver mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para isso, execute o seguinte comando usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização para a qual você quer insights.

      Como encontrar o ID de uma Google Cloud organização

      Console doGoogle Cloud

      Para encontrar o ID de uma organização Google Cloud , siga estas etapas:

      1. Acesse o console do Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de listagem do switcher na barra de menu.
      3. Selecione sua organização na caixa de listagem.
      4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

      CLI da gcloud

      Para recuperar o ID de uma organização Google Cloud , use o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: o ID do projeto em que o agente de serviço padrão do Inventário de recursos do Cloud está e que tem permissões para gerenciar seu faturamento e sua cota. Saiba mais sobre como definir o projeto de faturamento.

Exemplos de comandos

Execute um dos comandos a seguir para listar insights do projeto my-project.

curl (Linux, macOS ou Cloud Shell)

curl -X GET \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://recommender.googleapis.com/v1/projects/my-project/locations/global/insightTypes/google.cloudasset.asset.Insight/insights

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-Goog-User-Project" = "BILLING_PROJECT_ID";
  "Authorization" = "Bearer $cred"
}


Invoke-WebRequest `
  -Method GET `
  -Headers $headers `
  -Uri "https://recommender.googleapis.com/v1/projects/my-project/locations/global/insightTypes/google.cloudasset.asset.Insight/insights" | Select-Object -Expand Content

Exemplo de resposta

{
   "name": "organizations/000000000000/locations/global/insightTypes/google.cloudasset.asset.Insight/insights/00000000-0000-0000-0000-000000000000",
   "description": "Domain example.com detected in 1 IAM policies",
   "content": {
      "domain": "example.com",
      "policyCount": 1,
      "policySearchQuery": "policy: example.com",
      "matchedPolicies" :[
         {
            "resource" :"//cloudresourcemanager.googleapis.com/projects/000000000000",
            "project" :"projects/000000000000",
            "matchedBindings" :[
               {
                  "role" :"roles/viewer",
                  "matchedMembers" :[
                     "user:example@example.com"
                  ]
               }
            ]
         }
      ]
   },
   "lastRefreshTime": "2024-01-30T00:00:00Z",
   "observationPeriod": "0s",
   "stateInfo": {
      "state": "ACTIVE"
   },
   "category": "SECURITY",
   "targetResources": [
      "//cloudresourcemanager.googleapis.com/organizations/000000000000"
   ],
   "insightSubtype": "EXTERNAL_MEMBER",
   "etag": "\"00000000000\"",
   "initialRefreshTime": "2024-01-30T00:00:00Z"
}

Como interpretar as respostas dos insights

Além dos atributos de insight padrão, os insights de recursos fornecem vários subtipos e campos especializados.

Subtipos de insights

Os subtipos de insights de recursos são os seguintes:

  • EXTERNAL_MEMBER: detecta políticas do IAM que contêm usuários ou grupos que pertencem a um domínio fora dos domínios da sua organização.

  • EXTERNAL_POLICY_EDITOR: detecta políticas do IAM que contêm usuários ou grupos fora dos domínios da organização e que têm permissão para alterar políticas do IAM.

  • EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER: detecta políticas do IAM que contêm usuários ou grupos fora dos domínios da organização que têm permissão para receber ou listar objetos de armazenamento (storage.objects.list ou storage.objects.get permission).

  • EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR: detecta políticas do IAM que contêm usuários ou grupos fora dos domínios da organização e que têm permissão para representar contas de serviço.

  • TERMINATED_MEMBER: detecta políticas do IAM que contêm usuários ou grupos com contas desativadas, excluídas ou limpas.

  • PUBLIC_IAM_POLICY: detecta políticas do IAM que contêm todos os usuários ou todos os usuários autenticados.

  • OWNER_TERMINATED_PROJECT: detecta projetos que não contêm usuários ou grupos ativos na política do IAM do projeto.

Outros campos de conteúdo

Além dos campos padrão na resposta, os insights de recursos fornecem vários campos especializados no campo content.

  • user: o endereço de e-mail do usuário detectado nos membros das vinculações de políticas para esse insight. Esse campo está incluído no subtipo TERMINATED_MEMBER.

  • domain: o domínio detectado nos membros das vinculações de políticas deste insight. Esse campo está incluído nos subtipos EXTERNAL_MEMBER, EXTERNAL_POLICY_EDITOR, EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER e EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR.

  • assetName: o nome do recurso para o qual o acesso foi detectado neste insight. Esse campo está incluído nos subtipos OWNER_TERMINATED_PROJECT e PUBLIC_IAM_POLICY.

  • policyCount: o número total de políticas de IAM distintas em que os membros correspondentes foram detectados para esse insight. Esse campo é incluído para todos os subtipos de insights de recursos.

  • matchedPolicies: uma amostra das políticas do IAM correspondentes ao insight detectado. As políticas correspondentes incluem apenas o subconjunto de vinculações e membros de vinculações que correspondem ao insight detectado. Esse campo é incluído para todos os subtipos de insights de recursos.

  • policySearchQuery: uma consulta que pode ser usada com a API de pesquisa de políticas do IAM do Inventário de recursos do Cloud para recuperar as políticas relevantes em tempo real.