Usar las estadísticas de Asset

En este tema, se muestra cómo usar las estadísticas de recursos para detectar posibles riesgos en la configuración de tus elementos y ayudarte a mejorar tu posición de seguridad.

Descripción general

Las estadísticas de Cloud Asset proporcionan estadísticas basadas en las políticas de IAM asociadas con los recursos de tu organización. Forma parte del servicio de Recomendador. y se proporciona como el tipo de estadística google.cloudasset.asset.Insight. Información valiosa son anomalías específicas que requieren un análisis más profundo para determinar la la acción adecuada. Se generan a diario y se basan en un resumen de los datos que se almacenan en Cloud Asset Inventory.

Antes de comenzar

Antes de comenzar a usar las estadísticas de recurso, 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)

Solicita estadísticas de recurso

Para solicitar estadísticas de recursos, la forma más fácil es enumerar las estadísticas como se muestra en los siguientes pasos. Para otros tipos de interacciones de estadísticas, consulta la guía de estadísticas de la API del recomendador.

Solicita estadísticas de proyecto

Para solicitar estadísticas de un proyecto, realiza una de las siguientes solicitudes.

gcloud

Ejecuta los siguientes comandos de gcloud CLI para crear una lista de las estadísticas de tu proyecto, organización o carpeta.

Proyectos

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

Ingresa los siguientes valores:

  • PROJECT_ID: El ID del proyecto que deseas estadísticas.

Otras marcas:

  • --filter: Opcional Filtra los resultados por subtipo de estadísticas.

  • --format: Opcional Un formato de salida compatible para gcloud CLI. Por ejemplo, para enumerar el contenido de las estadísticas como una tabla compactada:

    gcloud recommender insights list \
        --project=PROJECT_ID \
        --location=global \
        --insight-type=google.cloudasset.asset.Insight \
        --flatten="content.matchedPolicies[].matchedBindings[].matchedMembers[]" \
        --format="table(insightSubtype, name,
            content.matchedPolicies.matchedBindings.matchedMembers,
            content.matchedPolicies.matchedBindings.role,
            content.matchedPolicies.resource)"
    

Carpetas

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

Ingresa los siguientes valores:

  • FOLDER_ID: El ID de la carpeta que deseas estadísticas.

    Cómo encontrar un ID de carpeta de Google Cloud

    Console

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

    1. Ve a la consola de Google Cloud.

      Ir a la consola de Google Cloud

    2. Haz clic en el cuadro de selector en la barra de menú.
    3. Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
    4. Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.

    gcloud CLI

    Puedes recuperar un ID de 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)"

    Donde TOP_LEVEL_FOLDER_NAME puede ser una coincidencia de cadena completa o parcial. Quita la opción --format para ver más información sobre las carpetas encontradas.

    Para obtener el ID de una carpeta dentro de otra carpeta, enumera las subcarpetas:

    gcloud resource-manager folders list --folder=FOLDER_ID

Otras marcas:

  • --filter: Opcional Filtra los resultados por subtipo de estadísticas.

  • --format: Opcional Un formato de salida compatible para gcloud CLI. Por ejemplo, para enumerar el contenido de las estadísticas como una tabla compactada:

    gcloud recommender insights list \
        --folder=FOLDER_ID \
        --location=global \
        --insight-type=google.cloudasset.asset.Insight \
        --flatten="content.matchedPolicies[].matchedBindings[].matchedMembers[]" \
        --format="table(insightSubtype, name,
            content.matchedPolicies.matchedBindings.matchedMembers,
            content.matchedPolicies.matchedBindings.role,
            content.matchedPolicies.resource)"
    

Organizaciones

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

Ingresa los siguientes valores:

  • ORGANIZATION_ID: El ID de la organización para la que deseas obtener estadísticas.

    Cómo encontrar un ID de organización de Google Cloud

    Console

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

    1. Ve a la consola de Google Cloud.

      Ir a la consola de Google Cloud

    2. Haz clic en el cuadro de selector en la barra de menú.
    3. Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
    4. Haz clic en la pestaña Todos. El ID de la organización se muestra junto a su nombre.

    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))"

Otras marcas:

  • --filter: Opcional Filtra los resultados por subtipo de estadísticas.

  • --format: Opcional Un formato de salida compatible con la CLI de gcloud Por ejemplo, para enumerar el contenido de las estadísticas como una tabla compactada:

    gcloud recommender insights list \
        --organization=ORGANIZATION_ID \
        --location=global \
        --insight-type=google.cloudasset.asset.Insight \
        --flatten="content.matchedPolicies[].matchedBindings[].matchedMembers[]" \
        --format="table(insightSubtype, name,
            content.matchedPolicies.matchedBindings.matchedMembers,
            content.matchedPolicies.matchedBindings.role,
            content.matchedPolicies.resource)"
    

REST

Ejecuta el siguiente comando curl para enumerar las estadísticas de tu proyecto, carpeta u organización.

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

Ingresa los siguientes valores:

  • SCOPE: Un permiso puede ser un proyecto, una carpeta o un organización.

    Los valores permitidos son los siguientes:

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

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

      Console

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

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

        Ir al panel

      2. Haz clic en el cuadro del selector en la barra de menú.
      3. Selecciona tu organización en el cuadro Seleccionar una opción y, luego, busca tu el nombre del proyecto.
      4. Haz clic en el nombre del proyecto para cambiar a él. El número de proyecto se muestra Tarjeta Información del 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

      Cómo encontrar un ID de carpeta de Google Cloud

      Console

      Para encontrar un ID de 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 selector en la barra de menú.
      3. Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
      4. Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.

      gcloud CLI

      Puedes recuperar un ID de 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)"

      Donde TOP_LEVEL_FOLDER_NAME puede ser una coincidencia de cadena completa o parcial. Quita la opción --format para ver más información sobre las carpetas encontradas.

      Para obtener el ID de una carpeta dentro de otra carpeta, enumera las subcarpetas:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Cómo encontrar un ID de organización de Google Cloud

      Console

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

      1. Ve a la consola de Google Cloud.

        Ir a la consola de Google Cloud

      2. Haz clic en el cuadro de selector en la barra de menú.
      3. Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
      4. Haz clic en la pestaña Todos. El ID de la organización se muestra junto a su nombre.

      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))"

Interpreta las respuestas de las estadísticas

Además de los atributos de estadísticas estándares, Asset Insights proporciona varios subtipos y campos especializados.

Subtipos de estadísticas

Existen siete subtipos de Asset Insights distintos.

  • 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 proyecto activo. usuarios o grupos en la política de IAM del proyecto.

Campos de contenido adicionales

Además de los campos estándares de la respuesta, Asset Insights varios especializados en el campo content.

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

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

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

  • policyCount: La cantidad total de políticas de IAM distintas en las que se detectaron miembros coincidentes para esta estadística en particular. 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 coincidencias solo incluyen el subconjunto de vinculaciones y y vincular miembros que coincidan con la estadística detectada. Este campo se incluye para todos los subtipos de Asset Insights.

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

Respuesta de muestra

En el siguiente fragmento de código, se muestra el formato de una respuesta de muestra.

{
   "name": "organizations/1234567/locations/global/insightTypes/google.cloudasset.asset.Insight/insights/0ab35ae7-afa8-42a3-a173-92da8771a489",
   "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/5678910",
            "project" :"projects/5678910",
            "matchedBindings" :[
               {
                  "role" :"roles/viewer",
                  "matchedMembers" :[
                     "user:example@example.com"
                  ]
               }
            ]
         }
      ]
   },
   "lastRefreshTime": "2020-12-04T06:59:04Z",
   "observationPeriod": "0s",
   "stateInfo": {
      "state": "ACTIVE"
   },
   "category": "SECURITY",
   "targetResources": [
      "//cloudresourcemanager.googleapis.com/organizations/1234567"
   ],
   "insightSubtype": "EXTERNAL_MEMBER",
   "etag": "\"00000000000\"",
   "initialRefreshTime": "2020-12-01T06:58:03Z"
}

Limitaciones

  • Estas estadísticas no consideran las membresías de grupo 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. Todas las políticas de coincidencias se pueden se recupera con una llamada a la búsqueda de políticas de Cloud Asset Inventory.

  • Las estadísticas de elementos no consideran las cuentas de servicio para la generación de estadísticas.