Saltar a contenido

Tarea 10 min de lectura

Conectar Azure a su inventario de activos

El conector de Azure lee los recursos expuestos a Internet de sus suscripciones de Azure y los mantiene en el inventario de activos de Ostorlab, para que pueda analizarlos y hacerles seguimiento como parte de su superficie de ataque. Solo necesita el rol integrado Lector (Reader).

Esta página trata del conector cloud de Azure. Para la integración CI/CD con Azure DevOps, consulte Azure DevOps.

¿Qué recopila el conector?

El conector lee Azure Resource Graph y la API de administración de Azure DNS. Las direcciones privadas se omiten.

Recurso Qué se conserva
Suscripciones Cada suscripción leída se convierte en un nodo cloud que es el padre de los demás
Direcciones IP públicas Direcciones IPv4 e IPv6, con el nombre de host de la etiqueta DNS cuando existe
Balanceadores de carga y puertas de enlace de aplicaciones Los front-ends a los que está asociada una dirección IP pública
Máquinas virtuales Las máquinas a las que está asociada una dirección IP pública, a través de su interfaz de red
Azure DNS Zonas DNS públicas y sus registros A, AAAA y CNAME (los registros comodín se omiten)

No se recopilan bases de datos, CDN, almacenamiento, AKS, Functions ni Front Door. Las direcciones IP públicas y los nombres de host de los recursos se convierten en activos de IP y de dominio normales, que el resto de la plataforma puede analizar.

¿Qué necesito antes de empezar?

  • Un plan de Ostorlab que incluya integraciones. De lo contrario, Ostorlab responde «Your organisation does not have the necessary permissions to run this integration.»
  • El ID de su inquilino de Microsoft Entra y el ID de la suscripción o del grupo de administración que se va a conectar.
  • La CLI de Azure (az), por ejemplo en Azure Cloud Shell, con sesión iniciada en el inquilino propietario del ámbito.
  • El rol Propietario o Administrador de acceso de usuario en ese ámbito, para asignar el rol Lector. Según la configuración de su inquilino, añadir una aplicación externa al directorio también puede requerir un rol de administrador del directorio, como Administrador de aplicaciones.
  • Un propietario de Ostorlab para los activos importados. Cree uno antes si es necesario.

Configurar el acceso en Azure

Abra Library > Integrations, seleccione la categoría Nube y después la tarjeta Azure (no Azure DevOps). La pestaña Configuración empieza con Paso 1: prepare su inquilino de Azure.

Categoría Nube con la tarjeta de Azure

Ambos métodos son scripts de az, que se ejecutan con el SCOPE que elija:

  • /subscriptions/<subscription id> para una suscripción;
  • /providers/Microsoft.Management/managementGroups/<group id> para un grupo de administración, que cubre todas las suscripciones que contiene.

Escriba el valor de SCOPE entre comillas simples, por ejemplo SCOPE='/providers/Microsoft.Management/managementGroups/<group id>': los ID de grupo de administración pueden contener paréntesis, que el shell rechaza si no van entre comillas.

Paso de configuración con los botones de descarga

Opción 1: aplicación multiinquilino de Ostorlab (recomendado)

Ostorlab registra su propia aplicación multiinquilino en su inquilino y se autentica sin ningún secreto.

  1. En el Paso 1, haga clic en Aplicación multiinquilino de Ostorlab: descargar el archivo de configuración. Obtendrá ostorlab-azure-reader.sh. El bloque Parámetros a utilizar muestra el ID de la aplicación de Ostorlab y el ID del inquilino de Ostorlab con los que trabaja el script.
  2. En Cloud Shell, ejecute:

    SCOPE='/subscriptions/<subscription id>' bash ostorlab-azure-reader.sh
    
  3. El script registra la aplicación de Ostorlab en su inquilino si todavía no está, le asigna el rol integrado Lector en el ámbito (reintenta mientras Azure propaga la nueva entidad de seguridad) y muestra Tenant id: <su ID de inquilino>. Copie ese valor.

Opción 2: registro de aplicación con secreto de cliente

Use este método si prefiere ser propietario de la aplicación.

  1. En el Paso 1, haga clic en Registro de aplicación con secreto de cliente: descargar el archivo de configuración. Obtendrá ostorlab-azure-service-principal.sh.
  2. Ejecútelo de la misma forma:

    SCOPE='/subscriptions/<subscription id>' bash ostorlab-azure-service-principal.sh
    
  3. El script crea un registro de aplicación llamado ostorlab-cloud-connector-sub-<subscription id> (o ostorlab-cloud-connector-mg-<group id>), le asigna Lector en el ámbito y muestra tenant_id, client_id, client_secret y scope_id. Asígnelos al formulario del conector:

    • tenant_id -> ID de inquilino
    • client_id -> ID de cliente
    • client_secret -> Secreto de cliente
    • scope_id (el GUID de la suscripción o el ID del grupo de administración) -> ID de suscripción o ID del grupo de administración
    • Cada ámbito tiene su propia aplicación. Volver a ejecutar el script para el mismo ámbito reemplaza el secreto de cliente, así que actualice el conector con el nuevo. Rote el secreto antes de que caduque.

Tip

El secreto de cliente se cifra en reposo y no vuelve a mostrarse en Ostorlab.

Añadir el conector

  1. En la pestaña Configuración, bajo Paso 2: conectores de Azure, haga clic en Añadir conector (o Añadir otro conector).

    Botón Añadir otro conector

  2. Complete el formulario y haga clic en Crear.

    Formulario de añadir conector con el ID de inquilino resaltado

Campo Qué introducir
Nombre Un nombre único en su organización, por ejemplo Azure Producción.
Ámbito Suscripción o Grupo de administración.
ID de suscripción o ID del grupo de administración El GUID de la suscripción, o el ID del grupo de administración (de 1 a 90 letras, dígitos, guiones, guiones bajos, puntos o paréntesis). Se recopilan todas las suscripciones de un grupo de administración.
Credencial Aplicación multiinquilino de Ostorlab o Registro de aplicación con secreto de cliente.
ID de inquilino El GUID del inquilino de Microsoft Entra, que se muestra al final del script de configuración.
ID de cliente y Secreto de cliente Solo método de registro de aplicación.
Propietario Obligatorio. Los activos importados se asocian a este propietario.
Ubicación Ubicación opcional de los activos importados.
Activo La sincronización programada omite los conectores inactivos.

Probar la conexión

Haga clic en Probar conexión en la fila del conector. La prueba lee de su ámbito sin importar nada.

Acción Probar conexión

Se ejecutan cuatro comprobaciones:

Comprobación Qué verifica
Credenciales Ostorlab se autenticó en Microsoft Entra ID como la aplicación multiinquilino, o canjeó el secreto de cliente por un token, y obtuvo un token válido.
Permisos Ostorlab consultó Resource Graph en el ámbito e indica cuántos recursos son legibles.
Ámbitos Las suscripciones que se leerán. En un grupo de administración, todas las suscripciones que contiene. Una suscripción que no se puede leer aparece en el mensaje.
Recurso de muestra Ostorlab lee una dirección IP pública del ámbito. La comprobación también se supera si el ámbito no tiene ninguna.

Prueba de conexión con cuatro comprobaciones superadas

Sincronizar el conector

Cada conector activo se sincroniza automáticamente cada doce horas. Para importar de inmediato, haga clic en Sincronizar ahora en la fila del conector.

Acción Sincronizar ahora

Una notificación confirma el trabajo (Sincronización iniciada (trabajo ...)). Una sincronización se rechaza si el conector está inactivo o si ya hay una sincronización del mismo conector en curso.

Notificación de sincronización iniciada

Leer las ejecuciones de sincronización y los errores

Haga clic en Sincronizaciones recientes para ver las ejecuciones de un conector.

Diálogo de sincronizaciones recientes

Columna Significado
Estado En curso, Correcto, Parcial (algunos ámbitos fallaron, el resto se importó) o Fallido (la sincronización no pudo completarse, por ejemplo porque se rechazaron las credenciales).
Recursos Recursos encontrados en esta ejecución.
Creados, Actualizados Activos y nodos nuevos y modificados. El recuento de creados incluye los activos de IP y de nombre de host además de los nodos.
Obsoletos Recursos que el conector etiquetó como cloud:stale porque no se vieron en esta ejecución.
Errores El número de errores de ámbito. Haga clic en él para listarlos.

Con un grupo de administración, una suscripción que no se puede leer cuenta como un error (por ejemplo «Subscription ... could not be read.») y las demás suscripciones se leen igualmente: la ejecución termina como Parcial.

Errores de una sincronización parcial

Note

Los recursos que desaparecen de Azure se etiquetan cloud:stale solo después de una ejecución sin ningún error de ámbito. Nunca se eliminan del inventario. La etiqueta se retira cuando una sincronización posterior vuelve a ver el recurso.

Una ejecución que permanece En curso durante más de dos horas se considera detenida: deja de bloquear una nueva sincronización y la siguiente sincronización programada la marca como Fallido.

Ver los activos en el inventario

Los activos importados pertenecen al propietario y a la ubicación que eligió. Todos llevan la etiqueta cloud:azure.

  1. Abra Inventory > Assets.
  2. Abra el panel de búsqueda, vaya a la pestaña Tags, establezca el nombre de la etiqueta en cloud y el valor en azure, y haga clic en Search.

    Inventario filtrado con la etiqueta cloud establecida en azure

  3. Para acotar la lista, filtre por las demás etiquetas que añade el conector: azure:account (el GUID de la suscripción), azure:region (como westeurope, o global), azure:resource (el ID del recurso de Azure) y azure:connector (el ID del conector).

Activos de una suscripción: IP, nombres de host y nodos cloud

Seguir la ruta de descubrimiento

Abra un nodo cloud, como un balanceador de carga, para ver su destino, etiquetas, propietario y ubicación. La tarjeta Discovery Path muestra de dónde procede el nodo: la suscripción de Azure y después su recurso principal. Las direcciones públicas y los nombres de host de un nodo incluyen ese nodo en su propia ruta de descubrimiento, de modo que siempre puede saber qué suscripción y qué recurso los expusieron.

Nodo cloud con su ruta de descubrimiento

Editar, pausar o eliminar el conector

  • Editar permite cambiar el nombre, la credencial, el propietario, la ubicación y el interruptor Activo. Deje vacío un secreto de cliente guardado para conservarlo, o escriba uno nuevo para reemplazarlo.

    Formulario de edición del conector

  • Desactive Activo para pausar la sincronización programada conservando el conector.

  • Eliminar borra el conector: los activos ya importados permanecen en el inventario y las sincronizaciones futuras se detienen.
  • Para retirar también el acceso de Ostorlab en Azure, elimine la asignación del rol Lector de la aplicación de Ostorlab (o de su registro de aplicación) en el ámbito, y elimine el registro de aplicación o la aplicación empresarial si ya no los necesita.

Solución de problemas

Síntoma Qué comprobar
El script se detiene con «SCOPE must be a subscription or a management group, not a nested resource path» Establezca SCOPE en /subscriptions/<id> o /providers/Microsoft.Management/managementGroups/<id>, nada más profundo.
El script indica «Could not assign Reader» Necesita el rol Propietario o Administrador de acceso de usuario en el ámbito. Vuelva a ejecutar el script cuando se haya concedido el rol.
El script no puede añadir la aplicación de Ostorlab Su inquilino restringe las aplicaciones externas. Pida a un administrador del directorio, como un Administrador de aplicaciones, que lo ejecute.
La comprobación Credenciales falla El ID de inquilino es incorrecto, falta la asignación del rol Lector o (método de secreto de cliente) el secreto caducó o fue reemplazado. Vuelva a ejecutar el script y actualice el conector.
La comprobación Permisos falla El rol Lector aún no está asignado en el ámbito, o todavía no se ha propagado. Espere unos minutos y vuelva a probar.
La comprobación Ámbitos nombra una suscripción que «could not be read» La entidad de seguridad no tiene el rol Lector en esa suscripción. Asigne Lector en el grupo de administración o en esa suscripción.
Error de formulario sobre un GUID Los ID de inquilino, suscripción y cliente son GUID, por ejemplo 00000000-0000-0000-0000-000000000000.
«The cloud connector is disabled.» Active Activo en el formulario de edición del conector.
«A sync of this cloud connector is already running.» Espere a que termine la sincronización en curso.
Faltan recursos que esperaba El conector solo conserva las direcciones IP públicas, sus balanceadores de carga, puertas de enlace de aplicaciones y máquinas virtuales, y los registros públicos de Azure DNS.

Siguientes pasos