Mejorar la estrategia de seguridad con estadísticas de recursos

Las estadísticas de Cloud Asset Inventory pueden ayudarte a detectar posibles riesgos en las configuraciones de tus recursos y a mejorar tu postura de seguridad. Forma parte del servicio 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 las medidas adecuadas. Se generan a diario a partir 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 gestión de identidades y accesos asociadas a los recursos de tu organización.

Antes de empezar

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

  1. Habilita la API Recommender.

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

    • recommender.cloudAssetInsights.get

    • recommender.cloudAssetInsights.list

    • recommender.cloudAssetInsights.update

    Puedes conceder estos permisos de forma individual o asignar uno de los siguientes roles.

    • Rol Visor de información valiosa de recursos de Cloud (roles/recommender.cloudAssetInsightsViewer)

    • Rol Administrador de Cloud Asset Insights (roles/recommender.cloudAssetInsightsAdmin)

Limitaciones

  • Estas estadísticas no tienen en cuenta las pertenencias a grupos ni las cuentas de servicio como parte de sus resultados, y no deben considerarse una lista exhaustiva de vulnerabilidades coincidentes.

  • La información valiosa individual incluye una muestra de las políticas de gestión de identidades y accesos coincidentes, con un límite de 100 políticas distintas. Todas las políticas coincidentes se pueden recuperar buscando políticas de gestión de identidades y accesos de permiso en los recursos.

Solicitar estadísticas de recursos

La forma más sencilla de solicitar estadísticas de recursos es enumerarlas, tal como se muestra en los pasos siguientes. Para obtener información sobre otros tipos de interacciones con estadísticas, consulta Usar la API: Estadísticas.

gcloud

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

Proporciona los siguientes valores:

  • SCOPE: usa uno de los siguientes valores:

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

      Cómo encontrar el ID de una Google Cloud carpeta

      Google Cloud consola

      Para encontrar el ID de una carpeta de Google Cloud , sigue estos pasos:

      1. Ve a la Google Cloud consola.

        Ve a la Google Cloud consola

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

      CLI de gcloud

      Puedes obtener el ID de una Google Cloud carpeta que se encuentre a nivel de 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)"

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

      El comando anterior no devuelve los IDs de las subcarpetas 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 de la que quieres obtener estadísticas.

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

      Google Cloud consola

      Para encontrar el ID de una organización de Google Cloud , sigue estos pasos:

      1. Ve a la Google Cloud consola.

        Ve a la Google Cloud consola

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

      CLI de gcloud

      Puedes obtener el ID de una Google Cloud organización 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 gestionar tu facturación y tu cuota. Consulta más información sobre cómo definir el proyecto de facturación.

  • SUBTYPE: el subtipo de estadística del recurso. Uno de los siguientes valores:

    • EXTERNAL_MEMBER: detecta políticas de IAM que contienen usuarios o grupos que pertenecen a un dominio ajeno a los dominios de tu organización.
    • EXTERNAL_POLICY_EDITOR: detecta políticas de gestión de identidades y accesos que contienen usuarios o grupos ajenos a los dominios de tu organización a los que se les ha concedido permiso para modificar políticas de gestión de identidades y accesos.
    • EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER: detecta políticas de gestión de identidades y accesos que contienen usuarios o grupos ajenos a los dominios de tu organización a los que se les ha concedido 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 ajenos a los dominios de tu organización a los que se les ha concedido permiso para suplantar cuentas de servicio.
    • TERMINATED_MEMBER: detecta políticas de gestión de identidades y accesos que contengan usuarios o grupos con cuentas desactivadas, eliminadas o purgadas.
    • PUBLIC_IAM_POLICY: detecta las políticas de gestión de identidades y accesos que contienen todos los usuarios o todos los usuarios autenticados.
    • OWNER_TERMINATED_PROJECT: detecta proyectos que no contienen ningún usuario ni grupo activo en la política de gestión de identidades y accesos del proyecto.
  • Si no se especifica, se devuelven todos los subtipos.

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

Ejemplo

Ejecuta el siguiente comando para enumerar 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

Proporciona los siguientes valores:

  • SCOPE_PATH: usa uno de los siguientes valores:

    Los valores permitidos son:

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

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

      Google Cloud consola

      Para encontrar un número de proyecto de Google Cloud , sigue estos pasos:

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

        Ir a Bienvenida

      2. En la barra de menús, haz clic en el cuadro de lista del selector.
      3. Selecciona tu organización en el cuadro de lista y, a continuación, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Bienvenido.

        Se muestran hasta 4000 recursos. Si no ves el proyecto que buscas, ve a la página Gestionar recursos y filtra la lista por el nombre de ese proyecto.

      CLI de gcloud

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

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

      Cómo encontrar el ID de una Google Cloud carpeta

      Google Cloud consola

      Para encontrar el ID de una carpeta de Google Cloud , sigue estos pasos:

      1. Ve a la Google Cloud consola.

        Ve a la Google Cloud consola

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

      CLI de gcloud

      Puedes obtener el ID de una Google Cloud carpeta que se encuentre a nivel de 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)"

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

      El comando anterior no devuelve los IDs de las subcarpetas 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 de la que quieres obtener estadísticas.

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

      Google Cloud consola

      Para encontrar el ID de una organización de Google Cloud , sigue estos pasos:

      1. Ve a la Google Cloud consola.

        Ve a la Google Cloud consola

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

      CLI de gcloud

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

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: ID del proyecto en el que se encuentra el agente de servicio predeterminado de Inventario de recursos de Cloud, que tiene permisos para gestionar tu facturación y tu cuota. Consulta más información sobre cómo definir el proyecto de facturación.

Ejemplos de comandos

Ejecuta uno de los siguientes comandos para enumerar las 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"
}

Interpretar las respuestas de las estadísticas

Además de los atributos de estadísticas estándar, las estadísticas de recursos 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 ajeno a los dominios de tu organización.

  • EXTERNAL_POLICY_EDITOR: detecta políticas de IAM que contienen usuarios o grupos ajenos a los dominios de tu organización a los que se les ha concedido permiso para modificar políticas de IAM.

  • EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER: detecta políticas de gestión de identidades y accesos que contienen usuarios o grupos ajenos a los dominios de tu organización a los que se les ha concedido 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 ajenos a los dominios de tu organización a los que se les ha concedido permiso para suplantar cuentas de servicio.

  • TERMINATED_MEMBER: detecta políticas de gestión de identidades y accesos que contienen usuarios o grupos con cuentas desactivadas, eliminadas o purgadas.

  • PUBLIC_IAM_POLICY: detecta las políticas de gestión de identidades y accesos que contienen todos los usuarios o todos los usuarios autenticados.

  • OWNER_TERMINATED_PROJECT: detecta proyectos que no contienen usuarios ni grupos activos en la política de gestión de identidades y accesos del proyecto.

Campos de contenido adicionales

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

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

  • domain: el dominio detectado en los miembros de las vinculaciones de la política de este 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: nombre del recurso para el que se ha detectado acceso en esta estadística. Este campo se incluye en los subtipos OWNER_TERMINATED_PROJECT y PUBLIC_IAM_POLICY.

  • policyCount: número total de políticas de gestión de identidades y accesos en las que se han detectado miembros coincidentes para esta información valiosa. Este campo se incluye en todos los subtipos de estadísticas de recursos.

  • matchedPolicies: una muestra de las políticas de gestión de identidades y accesos que coinciden con la información valiosa detectada. Las políticas coincidentes solo incluyen el subconjunto de vinculaciones y miembros de vinculaciones que coinciden con la información valiosa detectada. Este campo se incluye en todos los subtipos de estadísticas de recursos.

  • policySearchQuery: consulta que se puede usar con la API de búsqueda de políticas de gestión de identidades y accesos de Inventario de Recursos de Cloud para obtener las políticas pertinentes en tiempo real.