Detecta recursos expuestos con la Exposición externa

External Exposure de Security Command Center es un Google Cloud servicio que te ayuda a administrar y reducir tu superficie de ataque externa a través del descubrimiento automatizado y la validación de riesgos.

Debido a que los analizadores automatizados pueden orientarse a los recursos expuestos a Internet en cuestión de minutos, External Exposure descubre de forma proactiva las exposiciones accidentales y los recursos ocultos antes de que los atacantes puedan descubrirlos y aprovecharlos.

Al analizar tu entorno desde una perspectiva externa, el servicio intenta confirmar a qué se puede acceder realmente desde Internet y qué exposiciones son realmente aprovechables.

External Exposure analiza continuamente las direcciones IP externas, los nombres de host, los nombres de dominio y las URLs en tu Google Cloud entorno. Esta función usa el análisis de red para confirmar a qué recursos y aplicaciones se puede acceder desde Internet público.

Para cada exposición confirmada, External Exposure hace lo siguiente:

  • Realiza un seguimiento y muestra la ruta de red para los balanceadores de cargas externos, las políticas de Google Cloud Armor, las reglas de firewall, Private Service Connect, Cloud Interconnect y los servicios de backend hasta el recurso expuesto. Google Cloud

    Este recurso puede ser una instancia de Compute Engine o un pod de Google Kubernetes Engine (GKE), incluido un servicio o una aplicación expuestos.

    Esta integración profunda con la estructura de redes de Google ayuda a proporcionar un contexto procesable para que puedas aplicar de inmediato mitigaciones preventivas, como bloquear una regla de firewall específica o configurar Google Cloud Armor.

  • Realiza la toma de huellas digitales para intentar identificar la aplicación web o el software de servidor específicos que se ejecutan en cada recurso expuesto.

  • Si puede identificar el servicio o el software expuesto, identifica las vulnerabilidades que se sabe que lo afectan.

  • Usa detectores pasivos y activos avanzados para probar la capacidad de aprovechamiento en el mundo real mediante la validación de vulnerabilidades, errores de configuración y el uso de credenciales predeterminadas o débiles.

Antes de comenzar

En esta sección, se describe cómo preparar tu entorno para usar External Exposure.

Habilita la API de Security Center Management

Si planeas usar las APIs de Security Command Center, debes habilitar la API de Security Center Management para tu proyecto de cuota y, si se usan políticas de la organización que restringen el uso de la API, asegúrate de que se permita la API de Security Center Management. La API de Security Center Management se usa para controlar el estado de habilitación de los servicios de Security Command Center, como External Exposure.

  1. En una terminal, habilita la API de Security Center Management para tu proyecto de cuota:

    gcloud services enable securitycentermanagement.googleapis.com \
        --project=QUOTA_PROJECT_ID
    

    Reemplaza QUOTA_PROJECT_ID por el ID del proyecto que usas para administrar la cuota.

  2. Si tienes políticas de la organización que restringen el uso de la API, asegúrate de que se permita la API de Security Center Management. Para obtener más información, consulta Revisa las políticas de la organización.

  3. Si deseas recibir estadísticas de la ruta de exposición de la red en tus resultados, asegúrate de activar External Exposure a nivel de la organización o de la carpeta.

Roles obligatorios

Si quieres obtener los permisos que necesitas para configurar External Exposure y ver los datos del panel, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu organización, carpeta o proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Se pueden usar los siguientes comandos de Google Cloud CLI para asignar los roles anteriores a un usuario:

Asigna roles con gcloud CLI

  • Para otorgar el rol de administrador del Centro de seguridad a un usuario, ejecuta el siguiente comando:

    gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
        --member=user:USER_EMAIL_ID \
        --role=roles/securitycenter.admin
    
  • Para otorgar el rol de visualizador administrador del Centro de seguridad a un usuario, ejecuta el siguiente comando:

    gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
        --member=user:USER_EMAIL_ID \
        --role=roles/securitycenter.adminViewer
    
  • Para otorgar el rol de Visualizador de External Exposure a un usuario para el acceso a métricas de la CLI o la API, ejecuta el siguiente comando:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=user:USER_EMAIL_ID \
        --role=roles/externalexposure.viewer
    

    Reemplaza lo siguiente:

    • ORGANIZATION_ID: el ID numérico de la organización
    • PROJECT_ID: El ID del proyecto
    • USER_EMAIL_ID: La dirección de correo electrónico del usuario que requiere acceso

Habilita y configura el servicio

Para habilitar y configurar External Exposure, completa las tareas de las siguientes secciones.

Puedes habilitar y configurar el servicio a nivel de la organización, la carpeta o el proyecto. Cuando usas la API, si deseas configurar los parámetros a nivel de la carpeta o la organización en lugar del proyecto, reemplaza projects/PROJECT_ID por folders/FOLDER_ID o organizations/ORGANIZATION_ID en todas las URLs de solicitud y los parámetros de datos JSON.

Activa External Exposure

Activa External Exposure para tu organización, carpeta o proyecto.

Después de activar el servicio, asegúrate de otorgarle al agente de servicio los permisos necesarios, como se describe en Otorga permisos a los agentes de servicio.

Console

  1. En la Google Cloud consola de, ve a la página Habilitación de servicios para External Exposure.

    Ir a Habilitación de servicios

  2. Selecciona tu organización o proyecto.

  3. En la pestaña Habilitación de servicios, en la columna External Exposure , selecciona el estado de habilitación de la organización, la carpeta o el proyecto que deseas modificar y, luego, selecciona una de las siguientes opciones:

    • Habilitar: Habilita External Exposure.
    • Inhabilitar: Inhabilita External Exposure.
    • Heredar: Hereda la configuración del recurso superior, a menos que se anule en el recurso secundario.

gcloud

Habilita la API de Security Center Management y activa External Exposure para tu alcance objetivo.

  1. En una terminal, habilita la API para tu proyecto de cuota:

    gcloud services enable securitycentermanagement.googleapis.com \
        --project=QUOTA_PROJECT_ID
    
  2. En una terminal, habilita External Exposure con la API de Security Center Management:

    curl --request PATCH \
      "https://securitycentermanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityCenterServices/external_exposure?updateMask=intended_enablement_state" \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --header "X-Goog-User-Project: QUOTA_PROJECT_ID" \
      --header "Accept: application/json" \
      --header "Content-Type: application/json" \
      --data '{
        "intendedEnablementState": "ENABLED",
        "name": "projects/PROJECT_ID/locations/global/securityCenterServices/external_exposure"
      }' \
      --compressed
    

    Reemplaza lo siguiente:

    • QUOTA_PROJECT_ID: el ID del proyecto que usas para administrar la cuota.
    • PROJECT_ID: el ID del proyecto en el que deseas habilitar External Exposure.

Otorga permisos a agente de servicio

Según el nivel de recursos en el que habilites el servicio, Google Cloud se genera un agente de servicio:

  • Nivel de organización o carpeta: Se crea un agente de servicio a nivel de la organización o de la carpeta.
  • Nivel de proyecto: Se crea un agente de servicio a nivel de proyecto.

Para otorgar permisos a nivel de la organización, ejecuta el siguiente comando gcloud en una terminal:

gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member="serviceAccount:service-org-ORGANIZATION_ID@gcp-sa-ee-hpsa.iam.gserviceaccount.com" \
    --role=roles/externalexposure.serviceAgent

Reemplaza ORGANIZATION_ID por el ID numérico de tu organización.

Para otorgar permisos a nivel de la carpeta, ejecuta el siguiente comando gcloud en una terminal:

gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
    --member="serviceAccount:service-folder-FOLDER_ID@gcp-sa-ee-hpsa.iam.gserviceaccount.com" \
    --role=roles/externalexposure.serviceAgent

Reemplaza FOLDER_ID por el ID numérico de tu carpeta.

Otorga acceso de entrada a los perímetros de servicio

Si usas los Controles del servicio de VPC, otorga acceso de entrada al agente de servicio de External Exposure a cualquier perímetro de servicio que proteja los proyectos que deseas analizar. Si no otorgas acceso de entrada, External Exposure no podrá realizar análisis ni generar resultados para los proyectos protegidos por perímetros de servicio.

Según el nivel de recursos en el que esté habilitado el servicio, el identificador de la cuenta de servicio usa uno de los siguientes formatos de dirección de correo electrónico:

  • Para organizaciones o carpetas:

    service-RESOURCE_KEYWORD-RESOURCE_ID@gcp-sa-ee-hpsa.iam.gserviceaccount.com
    
  • Para los proyectos:

    service-project-PROJECT_NUMBER@gcp-sa-ee.iam.gserviceaccount.com
    

Reemplaza lo siguiente:

  • RESOURCE_KEYWORD: la palabra clave org o folder
  • RESOURCE_ID: el ID de la organización o el ID de la carpeta
  • PROJECT_NUMBER: el número del proyecto

Si tienes cuentas de servicio a nivel de la organización y del proyecto, aplica los siguientes pasos a ambas.

Para otorgar acceso, agrega una regla de entrada a cada perímetro de servicio de bloqueo:

  1. En la Google Cloud consola de, ve a la página Controles del servicio de VPC.

    Ir a los Controles del servicio de VPC

  2. Selecciona la política de acceso de bloqueo y el perímetro de servicio.

  3. Haz clic en Editar y, luego, en Política de entrada.

  4. Haz clic en Agregar regla de entrada y configura el bloque De:

    1. En Identidad, selecciona Identidades y grupos seleccionados.
    2. Ingresa la dirección de correo electrónico de la cuenta de servicio de External Exposure.
    3. En Fuente, selecciona Todas las fuentes.
  5. Configura el bloque A de la regla:

    1. En Proyecto, selecciona Todos los proyectos.
    2. En Operaciones o roles de IAM, selecciona Todas las operaciones.
  6. Haz clic en Guardar.

Configura puertos personalizados

Configura hasta 32 puertos personalizados por proyecto para que se analicen además de los puertos estándar que se enumeran en Rendimiento y limitaciones:

Console

  1. En la Google Cloud consola, ve a la página Habilitación de servicios.

    Ir a Habilitación de servicios

  2. Selecciona tu organización o proyecto.

  3. En la columna External Exposure de la fila que deseas modificar, haz clic en Configuración.

  4. En el campo Puertos personalizados, ingresa los números de puerto separados por comas.

  5. Haz clic en Guardar.

gcloud

Para configurar puertos personalizados para el análisis, incluye service_config en updateMask y especifica los números enteros de puerto en el wrapper del array ports en el objeto serviceConfig. En el siguiente ejemplo, se configuran los puertos personalizados 8081 y 8188 para el análisis:

curl --request PATCH \
  "https://securitycentermanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityCenterServices/external_exposure?updateMask=service_config" \
  --header "Authorization: Bearer $(gcloud auth print-access-token)" \
  --header "X-Goog-User-Project: QUOTA_PROJECT_ID" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{
    "serviceConfig": {
      "ports": [8081, 8188]
    },
    "name": "projects/PROJECT_ID/locations/global/securityCenterServices/external_exposure"
  }' \
  --compressed

Reemplaza lo siguiente:

  • QUOTA_PROJECT_ID: el ID del proyecto que usas para administrar la cuota.
  • PROJECT_ID: el ID del proyecto en el que deseas configurar puertos personalizados.

Configura módulos de análisis

Configura módulos de análisis específicos para activarlos o desactivarlos:

Console

  1. En la Google Cloud consola, ve a la página Habilitación de servicios.

    Ir a Habilitación de servicios

  2. Selecciona tu organización o proyecto.

  3. En la columna External Exposure de la fila que deseas modificar, haz clic en Configuración.

  4. En la sección Módulos de análisis , selecciona la casilla de verificación para habilitar o inhabilitar cada módulo (como interfaces expuestas, APIs, credenciales débiles o RCE).

  5. Haz clic en Guardar.

gcloud

Para habilitar o inhabilitar módulos específicos, incluye modules en updateMask y especifica el estado de habilitación de cada módulo en el objeto modules. En el siguiente ejemplo, se habilita EXTERNALLY_EXPOSED_RCE_VULNERABILITY y se inhabilita EXTERNALLY_EXPOSED_WEAK_CREDENTIALS:

curl --request PATCH \
  "https://securitycentermanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityCenterServices/external_exposure?updateMask=modules" \
  --header "Authorization: Bearer $(gcloud auth print-access-token)" \
  --header "X-Goog-User-Project: QUOTA_PROJECT_ID" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{
    "modules": {
      "EXTERNALLY_EXPOSED_RCE_VULNERABILITY": {
        "intendedEnablementState": "ENABLED"
      },
      "EXTERNALLY_EXPOSED_WEAK_CREDENTIALS": {
        "intendedEnablementState": "DISABLED"
      }
    },
    "name": "projects/PROJECT_ID/locations/global/securityCenterServices/external_exposure"
  }' \
  --compressed

Reemplaza lo siguiente:

  • QUOTA_PROJECT_ID: el ID del proyecto que usas para administrar la cuota.
  • PROJECT_ID: el ID del proyecto en el que deseas configurar módulos.

Solo puedes configurar estados de habilitación para los siguientes módulos:

  • EXTERNALLY_EXPOSED_UI
  • EXTERNALLY_EXPOSED_API
  • EXTERNALLY_EXPOSED_WEAK_CREDENTIALS
  • EXTERNALLY_EXPOSED_RCE_VULNERABILITY
  • EXTERNALLY_EXPOSED_ARBITRARY_DATA_READ

Todos los demás módulos de External Exposure (incluidas las verificaciones de bases de datos, cargas de trabajo sin servidores y almacenamiento de balanceador de cargas) están habilitados de forma predeterminada y no aparecen en la página de configuración de módulos.

Una vez que se habilita External Exposure, se ejecutan automáticamente análisis por lotes continuos para identificar direcciones IP externas expuestas, sondear servicios en ejecución y validar vulnerabilidades activas.

Investiga los resultados

Después de habilitar External Exposure, puedes ver los resultados en la Google Cloud consola. En Security Command Center, ve a la página Descripción general de riesgos y consulta el panel de External Exposure. Este panel está disponible cuando el alcance se establece en una organización, una carpeta o un proyecto. Para obtener más información sobre este panel, consulta Evalúa el riesgo con los paneles de descripción general de riesgos.

Para recuperar los resultados activos de External Exposure con la CLI, ejecuta el siguiente comando:

gcloud alpha scc findings list projects/PROJECT_ID \
    --location=global \
    --filter="state=\"ACTIVE\" AND finding_class=\"EXTERNAL_EXPOSURE\""

Reemplaza PROJECT_ID por el ID del proyecto en el que deseas ver los resultados.

Comprende los detalles de los resultados

Los resultados que pertenecen a la clase EXTERNAL_EXPOSURE identifican el tipo de riesgo y cómo se expone el recurso.

Para obtener una lista de las categorías de riesgo detalladas que se generan para estos resultados (como EXTERNALLY_EXPOSED_VM_INSTANCE o EXTERNALLY_EXPOSED_SERVERLESS_WORKLOAD), consulta Resultados de External Exposure.

Todos los resultados de la clase EXTERNAL_EXPOSURE incluyen los siguientes detalles:

  • Servicio expuesto: La aplicación web, el software de servidor o el protocolo específicos identificados en el puerto activo.
  • Estadísticas de la ruta de red: La conectividad de seguimiento de la ruta de red desde Internet público a través de balanceadores de cargas, reglas de reenvío y servicios de backend hasta el recurso de destino.
  • Extremo expuesto: El recurso de destino subyacente (por ejemplo, una instancia de Compute Engine o un pod de Google Kubernetes Engine [GKE]).

Si se puede identificar el servicio o la versión del software expuestos, el resultado también muestra las vulnerabilidades de CVE que lo afectan.

Prioriza los resultados con las puntuaciones de exposición a ataques

Los resultados de External Exposure se integran con las simulaciones de rutas de ataque. Para obtener más información, consulta Descripción general de las puntuaciones de exposición a ataques y las rutas de ataque. Cuando una exposición confirmada se conecta a una posible ruta de movimiento lateral (por ejemplo, una cuenta de servicio expuesta que puede llegar a una base de datos sensible de BigQuery o un bucket de Cloud Storage), el resultado recibe una puntuación de exposición a ataques. Puedes usar esta puntuación para priorizar la corrección de las exposiciones que representan el mayor riesgo para tus recursos de alto valor.

Supervisa las métricas de análisis

Para ayudarte a confirmar que External Exposure funciona correctamente en tu entorno, la consola muestra métricas de análisis por lotes continuas:

  • Último análisis: La marca de tiempo del ciclo de análisis completado más recientemente, que confirma que los resultados reflejan una vista actual de tus recursos.
  • Próximo análisis: La hora de inicio programada del ciclo de análisis posterior.
  • Proyectos exitosos: La cantidad total de proyectos que se analizan correctamente durante el ciclo de análisis más reciente.
  • Proyectos excluidos: La cantidad total de proyectos que se omitieron porque las políticas de la organización o las restricciones de los Controles del servicio de VPC impiden que el analizador acceda a los recursos. Cuando se omite un proyecto, Security Command Center genera uno o más resultados de la clase SCC_ERROR.
  • Recursos expuestos: La cantidad total de destinos de recursos únicos identificados como accesibles públicamente.
  • Puertos públicos expuestos: La cantidad total de puertos externos activos distintos detectados en tus recursos expuestos.

Identifica el tráfico del analizador en tus registros

Cuando External Exposure analiza de forma activa tus recursos externos, es posible que observes solicitudes de análisis entrantes en los registros de servicio, como los registros de solicitudes de Cloud Run en Cloud Logging.

Para verificar que las solicitudes entrantes provengan de External Exposure en lugar de terceros no autorizados, inspecciona la entrada de registro del campo userAgent en httpRequest. Todas las solicitudes activas del servicio se identifican con el agente de usuario TsunamiSecurityScanner.

En el siguiente ejemplo, se muestra una entrada de registro de solicitud de Cloud Logging que se genera cuando External Exposure analiza un servicio de Cloud Run expuesto:

{
  "httpRequest": {
    "latency": "0.004745622s",
    "protocol": "HTTP/1.1",
    "remoteIp": "2600:1900:4180:5b2:0:1ae::",
    "requestMethod": "POST",
    "requestSize": "441",
    "requestUrl": "https://SERVICE_URL/mcp",
    "responseSize": "131",
    "serverIp": "2600:1900:4244:200::",
    "status": 405,
    "userAgent": "TsunamiSecurityScanner"
  },
  "insertId": "6a16af86000c7e0d0fdc1c58",
  "labels": {
    "goog-managed-by": "cloudfunctions",
    "goog-serve-source": "user-container"
  },
  "logName": "projects/PROJECT_ID/logs/run.googleapis.com%2Frequests",
  "receiveTimestamp": "2026-05-27T08:47:03.025492782Z",
  "resource": {
    "labels": {
      "configuration_name": "SERVICE_NAME",
      "location": "us-central1",
      "project_id": "PROJECT_ID",
      "revision_name": "REVISION_NAME",
      "service_name": "SERVICE_NAME"
    },
    "type": "cloud_run_revision"
  },
  "severity": "WARNING",
  "timestamp": "2026-05-27T08:47:02.811254Z"
}

Rendimiento y limitaciones

  • Recursos compatibles: Instancias de Compute Engine, servicios de Google Kubernetes Engine (GKE) y controladores de entrada, bases de datos, incluidos Cloud SQL y AlloyDB para PostgreSQL, clústeres de Managed Service for Apache Spark, Cloud Run, Cloud Storage y Gemini Enterprise Agent Platform Workbench.
  • Intervalo de actualización: Para obtener información sobre la frecuencia de análisis de External Exposure, consulta Cuándo esperar resultados en Security Command Center.
  • Puertos analizados: External Exposure analiza automáticamente los servicios que se ejecutan en una línea de base predefinida de puertos comunes, agrupados principalmente por tipo de servicio o protocolo:
    • Administrativo / shell: 22 (SSH), 23 (Telnet), 3389 (RDP)
    • Web / HTTP(S): 80, 443, 8000, 8080, 8081, 8443, 8800, 9000, 9443
    • Bases de datos: 1433, 1521, 3306, 5432, 9200, 11211, 27017, 6379
    • Kubernetes y puertas de enlace de servicio: 6443, 10250, 10255, 15020, 15021
    • Otras herramientas y servicios comunes para desarrolladores: 1099, 1880, 2323, 2375, 2376, 2379, 2746, 3000, 3100, 4040, 5000, 5173, 5678, 6006, 6274, 7001, 7002, 7077, 7860, 8001, 8042, 8083, 8088, 8090, 8111, 8123, 8153, 8154, 8188, 8265, 8500, 8501, 8787, 8888, 8890, 8983, 9001, 9010, 9090, 9091, 9092, 9100, 9870, 9876, 11434, 15672, 18080, 54321 y 61616.
  • Puertos personalizados: Además de los puertos estándar, puedes configurar hasta 32 puertos personalizados por proyecto para el análisis. Para obtener más información, consulta Configura puertos personalizados.
  • Estadísticas de la ruta de red: Los resultados informan una ruta de red para un recurso expuesto.
  • VMs con balanceo de cargas: Si varias instancias de VM están conectadas a un balanceador de cargas, los resultados se informan solo para una de las instancias de VM.
  • Priorización de resultados de Cloud Run: Debido a que cada implementación de Cloud Run recibe una URL pública de forma predeterminada, los resultados se evalúan en función de las políticas de IAM y de Identity-Aware Proxy (IAP). Si una carga de trabajo está protegida por IAM o IAP (y muestra una respuesta HTTP 403 no autorizada), la gravedad del resultado se reduce a LOW para reducir el ruido informativo.
  • Estadísticas de la ruta de exposición de la red: Los resultados no incluyen estadísticas de la ruta de exposición de la red cuando External Exposure se activa a nivel del proyecto. Para recibir estadísticas de la ruta de exposición de la red, activa el servicio a nivel de la organización o de la carpeta.