Melhore a sua postura de segurança com estatísticas de recursos

As estatísticas do inventário de recursos na nuvem podem ajudar a detetar potenciais riscos nas configurações dos seus recursos e a melhorar a sua postura de segurança. Faz parte do serviço Recommender e é fornecido como o tipo de estatísticas google.cloudasset.asset.Insight.

As estatísticas são anomalias específicas que requerem uma análise mais detalhada para determinar a ação adequada. São gerados diariamente com base num instantâneo dos dados armazenados no Cloud Asset Inventory.

As estatísticas fornecidas pelo Cloud Asset Inventory baseiam-se nas políticas IAM associadas aos recursos da sua organização.

Antes de começar

Antes de poder começar a usar as estatísticas dos recursos, tem de concluir os seguintes passos.

  1. Ative a API Recommender.

  2. Certifique-se de que a sua conta tem as seguintes autorizações:

    • recommender.cloudAssetInsights.get

    • recommender.cloudAssetInsights.list

    • recommender.cloudAssetInsights.update

    Pode conceder estas autorizações individualmente ou conceder uma das seguintes funções.

    • Função de leitor do Cloud Asset Insights (roles/recommender.cloudAssetInsightsViewer)

    • Função de administrador do Cloud Asset Insights (roles/recommender.cloudAssetInsightsAdmin)

Limitações

  • Estas estatísticas não consideram as associações a grupos nem as contas de serviço como parte das respetivas conclusões e não devem ser consideradas uma lista exaustiva de vulnerabilidades correspondentes.

  • As estatísticas individuais incluem uma amostragem de políticas de IAM correspondentes, limitada a 100 políticas distintas. Pode obter todas as políticas correspondentes pesquisando políticas de autorização da IAM em recursos.

Peça estatísticas de recursos

A forma mais fácil de pedir estatísticas dos recursos é enumerá-las, conforme mostrado nos passos seguintes. Para outros tipos de interações com estatísticas, consulte o artigo Use a API – Estatísticas.

gcloud

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

Indique os seguintes valores:

  • SCOPE: use um dos seguintes valores:

    • project=PROJECT_ID, onde PROJECT_ID é o ID do projeto para o qual quer estatísticas.
    • folder=FOLDER_ID, onde FOLDER_ID é o ID da pasta para a qual quer ver estatísticas.

      Como encontrar o ID de uma Google Cloud pasta

      Google Cloud consola

      Para encontrar o ID de uma Google Cloud pasta, conclua os seguintes passos:

      1. Aceda à Google Cloud consola.

        Aceda à Google Cloud consola

      2. Clique na caixa de lista do comutador na barra de menu.
      3. Selecione a sua organização na caixa de lista.
      4. Pesquise o nome da pasta. O ID da pasta é apresentado junto ao nome da pasta.

      CLI gcloud

      Pode obter o ID de uma Google Cloud pasta localizada ao nível da organização com 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)"

      Onde 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 devolve os IDs das subpastas dentro das pastas. Para tal, execute o seguinte comando com o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, onde ORGANIZATION_ID é o ID da organização para a qual quer estatísticas.

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

      Google Cloud consola

      Para encontrar o ID de uma Google Cloud organização, conclua os seguintes passos:

      1. Aceda à Google Cloud consola.

        Aceda à Google Cloud consola

      2. Clique na caixa de lista do comutador na barra de menu.
      3. Selecione a sua organização na caixa de lista.
      4. Clique no separador Tudo. O ID da organização é apresentado junto ao nome da organização.

      CLI gcloud

      Pode obter o ID de uma Google Cloud organização com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: opcional. O ID do projeto no qual o agente do serviço do Cloud Asset Inventory predefinido tem autorizações para gerir a sua faturação e quota. Leia mais sobre como definir o projeto de faturação.

  • SUBTYPE: o subtipo de estatísticas dos recursos. Um dos seguintes valores:

    • EXTERNAL_MEMBER: deteta políticas de IAM que contêm utilizadores ou grupos que pertencem a um domínio fora dos domínios da sua organização.
    • EXTERNAL_POLICY_EDITOR: deteta políticas de IAM que contêm utilizadores ou grupos fora dos domínios da sua organização aos quais é concedida autorização para modificar políticas de IAM.
    • EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER: deteta políticas de IAM que contêm utilizadores ou grupos fora dos domínios da sua organização aos quais é concedida autorização para obter ou listar objetos de armazenamento (autorização storage.objects.list ou storage.objects.get).
    • EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR: deteta políticas de IAM que contêm utilizadores ou grupos fora dos domínios da sua organização aos quais é concedida autorização para se fazerem passar por contas de serviço.
    • TERMINATED_MEMBER: deteta políticas de IAM que contêm utilizadores ou grupos com contas desativadas, eliminadas ou removidas.
    • PUBLIC_IAM_POLICY: deteta políticas de IAM que contêm todos os utilizadores ou todos os utilizadores autenticados.
    • OWNER_TERMINATED_PROJECT: deteta projetos que não contêm utilizadores nem grupos ativos na política de IAM do projeto.
  • Se não for especificado, são devolvidos todos os subtipos.

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

Exemplo

Execute o seguinte comando para listar as estatísticas 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

Indique os seguintes valores:

  • SCOPE_PATH: use um dos seguintes valores:

    Os valores permitidos são:

    • projects/PROJECT_ID, onde PROJECT_ID é o ID do projeto para o qual quer estatísticas.
    • projects/PROJECT_NUMBER, onde PROJECT_NUMBER é o número do projeto para o qual quer ver estatísticas.

      Como encontrar um Google Cloud número do projeto

      Google Cloud consola

      Para encontrar um Google Cloud número do projeto, conclua os seguintes passos:

      1. Aceda à página Boas-vindas na Google Cloud consola.

        Aceder a Boas-vindas

      2. Clique na caixa de lista do comutador na barra de menu.
      3. Selecione a sua organização na caixa de lista e, em seguida, pesquise o nome do projeto. O nome do projeto, o número do projeto e o ID do projeto são apresentados junto ao título Bem-vindo.

        São apresentados até 4000 recursos. Se não vir o projeto que procura, aceda à página Gerir recursos e filtre a lista através do nome desse projeto.

      CLI gcloud

      Pode obter um Google Cloud número do projeto com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, onde FOLDER_ID é o ID da pasta para a qual quer ver estatísticas.

      Como encontrar o ID de uma Google Cloud pasta

      Google Cloud consola

      Para encontrar o ID de uma Google Cloud pasta, conclua os seguintes passos:

      1. Aceda à Google Cloud consola.

        Aceda à Google Cloud consola

      2. Clique na caixa de lista do comutador na barra de menu.
      3. Selecione a sua organização na caixa de lista.
      4. Pesquise o nome da pasta. O ID da pasta é apresentado junto ao nome da pasta.

      CLI gcloud

      Pode obter o ID de uma Google Cloud pasta localizada ao nível da organização com 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)"

      Onde 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 devolve os IDs das subpastas dentro das pastas. Para tal, execute o seguinte comando com o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, onde ORGANIZATION_ID é o ID da organização para a qual quer estatísticas.

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

      Google Cloud consola

      Para encontrar o ID de uma Google Cloud organização, conclua os seguintes passos:

      1. Aceda à Google Cloud consola.

        Aceda à Google Cloud consola

      2. Clique na caixa de lista do comutador na barra de menu.
      3. Selecione a sua organização na caixa de lista.
      4. Clique no separador Tudo. O ID da organização é apresentado junto ao nome da organização.

      CLI gcloud

      Pode obter o ID de uma Google Cloud organização com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: O ID do projeto no qual o agente do serviço do Cloud Asset Inventory predefinido tem autorizações para gerir a sua faturação e quota. Leia mais sobre como definir o projeto de faturação.

Exemplos de comandos

Execute um dos seguintes comandos para listar as estatísticas 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"
}

Interpretar respostas de estatísticas

Além dos atributos de estatísticas padrão, as estatísticas dos recursos oferecem vários subtipos e campos especializados.

Subtipos de estatísticas

Seguem-se os subtipos de estatísticas dos recursos:

  • EXTERNAL_MEMBER: deteta políticas de IAM que contêm utilizadores ou grupos pertencentes a um domínio fora dos domínios da sua organização.

  • EXTERNAL_POLICY_EDITOR: deteta políticas de IAM que contêm utilizadores ou grupos fora dos domínios da sua organização aos quais foi concedida autorização para modificar políticas de IAM.

  • EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER: deteta políticas de IAM que contêm utilizadores ou grupos fora dos domínios da sua organização aos quais foi concedida autorização para obter ou listar objetos de armazenamento (storage.objects.list ou storage.objects.get permission).

  • EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR: deteta políticas de IAM que contêm utilizadores ou grupos fora dos domínios da sua organização aos quais foi concedida autorização para se fazerem passar por contas de serviço.

  • TERMINATED_MEMBER: deteta políticas de IAM que contêm utilizadores ou grupos com contas desativadas, eliminadas ou removidas.

  • PUBLIC_IAM_POLICY: deteta políticas de IAM que contêm todos os utilizadores ou todos os utilizadores autenticados.

  • OWNER_TERMINATED_PROJECT: deteta projetos que não contêm utilizadores nem grupos ativos na política de IAM do projeto.

Campos de conteúdo adicionais

Além dos campos padrão na resposta, as estatísticas dos recursos fornecem vários campos especializados no campo content.

  • user: o endereço de email do utilizador detetado nos membros das associações de políticas para esta estatística. Este campo está incluído no subtipo TERMINATED_MEMBER.

  • domain: o domínio detetado nos membros das associações de políticas desta estatística. Este 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 foi detetado acesso nesta estatística. Este campo está incluído nos subtipos OWNER_TERMINATED_PROJECT e PUBLIC_IAM_POLICY.

  • policyCount: o número total de políticas de IAM distintas nas quais foram detetados membros correspondentes para esta estatística. Este campo está incluído para todos os subtipos de estatísticas de recursos.

  • matchedPolicies: Uma amostragem das políticas IAM que correspondem à estatística detetada. As políticas correspondentes incluem apenas o subconjunto de associações e membros de associações que correspondem à estatística detetada. Este campo está incluído para todos os subtipos de estatísticas de recursos.

  • policySearchQuery: Uma consulta que pode ser usada com a API de pesquisa de políticas IAM do Cloud Asset Inventory para obter as políticas relevantes em tempo real.