Mejora tu postura de seguridad con estadísticas de los recursos

Las estadísticas del Cloud Asset Inventory pueden ayudarte a detectar posibles riesgos en la configuración de tus recursos y a mejorar tu postura de seguridad. Es parte del servicio de Recommender y se proporciona como el tipo de estadística google.cloudasset.asset.Insight.

Las estadísticas son anomalías específicas que requieren un análisis más detallado para determinar la acción adecuada. Se generan a diario, en función de una instantánea de los datos almacenados en Cloud Asset Inventory.

Las estadísticas que proporciona Cloud Asset Inventory se basan en las políticas de IAM asociadas con los recursos de tu organización.

Antes de comenzar

Antes de comenzar a usar las estadísticas de recursos, debes completar los siguientes pasos.

  1. Habilita la API del Recomendador.

  2. Asegúrate de que tu cuenta tenga los siguientes permisos:

    • recommender.cloudAssetInsights.get

    • recommender.cloudAssetInsights.list

    • recommender.cloudAssetInsights.update

    Puedes otorgar estos permisos de forma individual o puedes otorgar una de las siguientes funciones.

    • Función de visualizador de estadísticas de Cloud Asset (roles/recommender.cloudAssetInsightsViewer)

    • Función de administrador de Cloud Asset Insights (roles/recommender.cloudAssetInsightsAdmin)

Limitaciones

  • Estas estadísticas no consideran las membresías de grupo ni las cuentas de servicio como parte de sus hallazgos y no deben considerarse una lista exhaustiva de vulnerabilidades coincidentes.

  • Las estadísticas individuales incluyen una muestra de políticas de IAM coincidentes, que tiene un límite de 100 políticas distintas. Para recuperar todas las políticas coincidentes, busca políticas de permiso de IAM en los recursos.

Solicita estadísticas de recursos

La forma más fácil de solicitar estadísticas de recursos es enumerarlas, como se muestra en los siguientes pasos. Para otros tipos de interacciones de estadísticas, consulta Usa la API: Estadísticas.

gcloud

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

Ingresa los siguientes valores:

  • SCOPE: Usa uno de los siguientes valores:

    • project=PROJECT_ID, donde PROJECT_ID es el ID del proyecto para el que deseas obtener estadísticas.
    • folder=FOLDER_ID, donde FOLDER_ID es el ID de la carpeta para la que deseas obtener estadísticas.

      Cómo encontrar el ID de una carpeta de Google Cloud

      consola de

      Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:

      1. Ve a la consola de Google Cloud .

        Ve a la consola de Google Cloud

      2. Haz clic en el cuadro de lista del selector en la barra de menú.
      3. Selecciona tu organización en el cuadro de lista.
      4. Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.

      gcloud CLI

      Puedes recuperar el ID de una carpeta de Google Cloud que se encuentra a nivel de la organización con el siguiente 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)"

      En el que TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca --format para ver más información sobre las carpetas encontradas.

      El comando anterior no muestra los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, donde ORGANIZATION_ID es el ID de la organización para la que deseas obtener estadísticas.

      Cómo encontrar el ID de una organización de Google Cloud

      consola de

      Para encontrar el ID de una organización de Google Cloud , completa los siguientes pasos:

      1. Ve a la consola de Google Cloud .

        Ve a la consola de Google Cloud

      2. Haz clic en el cuadro de lista del selector en la barra de menú.
      3. Selecciona tu organización en el cuadro de lista.
      4. Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.

      gcloud CLI

      Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: Opcional El ID del proyecto en el que se encuentra el agente de servicio predeterminado de Cloud Asset Inventory que tiene permisos para administrar tu facturación y cuota Obtén más información para configurar el proyecto de facturación.

  • SUBTYPE: Es el subtipo de estadísticas del activo. Uno de los siguientes valores:

    • EXTERNAL_MEMBER: Detecta políticas de IAM que contienen usuarios o grupos que pertenecen a un dominio fuera de los dominios de tu organización.
    • EXTERNAL_POLICY_EDITOR: Detecta políticas de IAM que contienen usuarios o grupos fuera de los dominios de tu organización a los que se les otorga permiso para modificar las políticas de IAM.
    • EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER: Detecta políticas de IAM que contienen usuarios o grupos fuera de los dominios de tu organización a los que se les otorga permiso para obtener o enumerar objetos de almacenamiento (permiso storage.objects.list o storage.objects.get).
    • EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR: Detecta políticas de IAM que contienen usuarios o grupos fuera de los dominios de tu organización a los que se les otorga permiso para actuar en nombre de cuentas de servicio.
    • TERMINATED_MEMBER: Detecta políticas de IAM que contienen usuarios o grupos con cuentas desactivadas, borradas o purgadas.
    • PUBLIC_IAM_POLICY: Detecta políticas de IAM que contienen todos los usuarios o todos los usuarios autenticados.
    • OWNER_TERMINATED_PROJECT: Detecta proyectos que no contienen ningún usuario o grupo activo en la política de IAM del proyecto.
  • Si no se especifica, se muestran todos los subtipos.

Consulta la referencia de la CLI de gcloud para ver todas las opciones.

Ejemplo

Ejecuta el siguiente comando para mostrar una lista de las estadísticas del proyecto my-project.

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

Respuesta de ejemplo

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 y URL:

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

Encabezados:

X-Goog-User-Project: BILLING_PROJECT_ID

Ingresa los siguientes valores:

  • SCOPE_PATH: Usa uno de los siguientes valores:

    Los valores permitidos son los siguientes:

    • projects/PROJECT_ID, donde PROJECT_ID es el ID del proyecto para el que deseas obtener estadísticas.
    • projects/PROJECT_NUMBER, donde PROJECT_NUMBER es el número del proyecto para el que deseas obtener estadísticas.

      Cómo encontrar el número de proyecto de Google Cloud

      consola de

      Para encontrar el número de proyecto de Google Cloud , completa los siguientes pasos:

      1. Ve a la página Bienvenido en la consola de Google Cloud .

        Ve a Bienvenida

      2. Haz clic en el cuadro de lista del selector en la barra de menú.
      3. Selecciona tu organización en el cuadro de lista y, luego, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Welcome.

        Se muestran hasta 4,000 recursos. Si no ves el proyecto que buscas, ve a la página Administrar recursos y filtra la lista con el nombre de ese proyecto.

      gcloud CLI

      Puedes recuperar un número de proyecto de Google Cloud con el siguiente comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, donde FOLDER_ID es el ID de la carpeta para la que deseas obtener estadísticas.

      Cómo encontrar el ID de una carpeta de Google Cloud

      consola de

      Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:

      1. Ve a la consola de Google Cloud .

        Ve a la consola de Google Cloud

      2. Haz clic en el cuadro de lista del selector en la barra de menú.
      3. Selecciona tu organización en el cuadro de lista.
      4. Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.

      gcloud CLI

      Puedes recuperar el ID de una carpeta de Google Cloud que se encuentra a nivel de la organización con el siguiente 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)"

      En el que TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca --format para ver más información sobre las carpetas encontradas.

      El comando anterior no muestra los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, donde ORGANIZATION_ID es el ID de la organización para la que deseas obtener estadísticas.

      Cómo encontrar el ID de una organización de Google Cloud

      consola de

      Para encontrar el ID de una organización de Google Cloud , completa los siguientes pasos:

      1. Ve a la consola de Google Cloud .

        Ve a la consola de Google Cloud

      2. Haz clic en el cuadro de lista del selector en la barra de menú.
      3. Selecciona tu organización en el cuadro de lista.
      4. Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.

      gcloud CLI

      Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: Es el ID del proyecto en el que se encuentra el agente de servicio predeterminado de Cloud Asset Inventory que tiene permisos para administrar tu facturación y cuota. Obtén más información para configurar el proyecto de facturación.

Ejemplos de comandos

Ejecuta uno de los siguientes comandos para mostrar una lista de estadísticas del proyecto my-project.

curl (Linux, macOS o 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

Respuesta de ejemplo

{
   "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"
}

Interpreta las respuestas de las estadísticas

Además de los atributos de estadísticas estándar, las estadísticas de activos proporcionan varios subtipos y campos especializados.

Subtipos de estadísticas

Los subtipos de estadísticas de recursos son los siguientes:

  • EXTERNAL_MEMBER: Detecta políticas de IAM que contienen usuarios o grupos que pertenecen a un dominio fuera de los dominios de tu organización.

  • EXTERNAL_POLICY_EDITOR: Detecta políticas de IAM que contienen usuarios o grupos fuera de los dominios de tu organización a los que se les otorga permiso para modificar las políticas de IAM.

  • EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER: Detecta políticas de IAM que contienen usuarios o grupos fuera de los dominios de tu organización a los que se les otorga permiso para obtener o enumerar objetos de almacenamiento (storage.objects.list o storage.objects.get permission).

  • EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR: Detecta políticas de IAM que contienen usuarios o grupos fuera de los dominios de tu organización a los que se les otorga permiso para actuar en nombre de cuentas de servicio.

  • TERMINATED_MEMBER: Detecta políticas de IAM que contienen usuarios o grupos con cuentas desactivadas, borradas o purgadas.

  • PUBLIC_IAM_POLICY: Detecta políticas de IAM que contienen todos los usuarios o todos los usuarios autenticados.

  • OWNER_TERMINATED_PROJECT: Detecta proyectos que no contienen ningún usuario o grupo activo en la política de IAM del proyecto.

Campos de contenido adicionales

Además de los campos estándar de la respuesta, las estadísticas de activos proporcionan varios campos especializados en el campo content.

  • user: La dirección de correo electrónico del usuario detectada en los miembros de las vinculaciones de políticas para esta estadística. Este campo se incluye en el subtipo TERMINATED_MEMBER.

  • domain: El dominio detectado en los miembros de las vinculaciones de políticas de esta estadística. Este campo se incluye en los subtipos EXTERNAL_MEMBER, EXTERNAL_POLICY_EDITOR, EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER y EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR.

  • assetName: Es el nombre del recurso para el que se detectó el acceso en esta estadística. Este campo se incluye en los subtipos OWNER_TERMINATED_PROJECT y PUBLIC_IAM_POLICY.

  • policyCount: Es la cantidad total de políticas de IAM distintas en las que se detectaron miembros coincidentes para esta estadística. Este campo se incluye en todos los subtipos de estadísticas de recursos.

  • matchedPolicies: Un muestreo de las políticas de IAM que coinciden con la estadística detectada. Las políticas de coincidencia solo incluyen el subconjunto de vinculaciones y miembros de vinculación que coinciden con la estadística detectada. Este campo se incluye en todos los subtipos de estadísticas de recursos.

  • policySearchQuery: Una consulta que se puede usar con la API de búsqueda de políticas de IAM de Cloud Asset Inventory para recuperar las políticas relevantes en tiempo real.