Ir al contenido

Desplegar el descubrimiento

Requiere @openlatch/client 0.11.12 o una versión posterior

Despliega el descubrimiento una vez en las máquinas que gestiona tu herramienta de gestión de flota. Cada máquina analiza entonces en la sesión de cada usuario y, cuando encuentra un agente de IA que OpenLatch conoce, instala e inscribe el cliente para ese usuario. Descubrimiento explica qué hace un análisis y qué registra.

Antes de empezar, comprueba estos elementos:

#ElementoDe dónde viene
1Una clave de organización creada desde Host enrollment, guardada en tu almacén de secretosSettings › API keys, o Generate key and fill en Settings › Discovery, como admin u owner
2El slug o el identificador de tu organizaciónSettings › Discovery lo muestra cuando rellena el comando
3Una herramienta de gestión de flota que ejecuta un script con privilegio de sistema: Intune, Configuration Manager, Jamf Pro, Ansible, Salt o similarTu equipo de puestos de trabajo
4macOS, Linux con systemd, o Windows con PowerShell 5.1 o posteriorLas máquinas
5El tráfico de salida aprobado para el clienteRequisitos de red
6Un aviso a tus empleados, donde tus representantes de los trabajadores o tus normas de protección de datos lo pidanEl aviso para tus empleados
  1. Abre Settings › Discovery como admin u owner, y pulsa Generate key and fill.

    Resultado esperado: el comando muestra una clave de organización nueva y tu organización, una sola vez. La clave lleva la fecha de hoy y no puede hacer nada salvo inscribir hosts.

  2. Copia la clave en tu almacén de secretos antes de salir de la página. La página la olvida cuando sales; la clave sigue listada en Settings › API keys, donde puedes eliminarla.

También puedes crear la clave tú mismo en Settings › API keys, desde el preajuste Host enrollment. Una máquina solo necesita la clave para inscribirse: el cliente la cambia por la credencial de host propia de la máquina y nunca la guarda, así que rotar o eliminar la clave más tarde no desconecta ninguna máquina inscrita.

El descubrimiento escribe la clave y la organización en un archivo de clave en cada máquina, para que el análisis de cada usuario pueda inscribir el cliente de ese usuario. Cada usuario de la máquina puede leer ese archivo, porque cada análisis se ejecuta como su usuario. Quien lo lea puede inscribir hosts en tu organización, y nada más: la clave no tiene ningún otro permiso, no lee datos y no puede actuar sobre un agente. Trátala como compartida dentro de la máquina, da al descubrimiento una clave propia y rótala cuando se vaya alguien que la tenía.

Ejecuta el comando de Settings › Discovery en una máquina de cada sistema operativo antes de desplegar una oleada. Con sudo, o en un PowerShell elevado, el comando despliega el descubrimiento para cada usuario de esa máquina.

En macOS y Linux:

Ventana de terminal
curl -LsSf https://openlatch.ai/discover.sh | sudo OPENLATCH_API_KEY=<api-key> OPENLATCH_ORG=<org> sh

En Windows, en un PowerShell elevado, escribe la clave y la organización en la sesión y luego ejecuta el script:

Ventana de terminal
$env:OPENLATCH_API_KEY='<api-key>'; $env:OPENLATCH_ORG='<org>'
irm https://openlatch.ai/discover.ps1 | iex

Sin sudo ni elevación, el mismo comando despliega el descubrimiento solo para el usuario actual, sin derechos de administrador. Sirve para una prueba en tu propia máquina:

Ventana de terminal
curl -LsSf https://openlatch.ai/discover.sh | OPENLATCH_API_KEY=<api-key> OPENLATCH_ORG=<org> sh
Ventana de terminal
$env:OPENLATCH_API_KEY='<api-key>'; $env:OPENLATCH_ORG='<org>'
powershell -ExecutionPolicy Bypass -c "irm https://openlatch.ai/discover.ps1 | iex"

Un despliegue por tubería vuelve a descargar su propio archivo de versión e instala esa copia. En macOS y Linux, primero compara la copia con el SHA-256 publicado y no instala nada cuando no coinciden. Para ver qué encontraría el análisis sin instalar nada, añade —dry-run al script, o -DryRun en Windows.

Ambos scripts son texto plano, servidos para leerse. Para el script de macOS y Linux, OpenLatch publica el SHA-256 de cada versión. Comprueba con él el archivo que despliegas:

Ventana de terminal
curl -LsSfO https://openlatch.ai/discover.sh
curl -LsSf https://openlatch.ai/discover.sh.sha256 | shasum -a 256 -c -

En Linux, sha256sum -c funciona igual. Un archivo que no coincide no es el que publicó OpenLatch: no lo despliegues. No se publica ningún resumen para el script de Windows.

El despliegue copia el script, escribe el archivo de clave y registra una programación. Nunca analiza ni escribe en la carpeta personal de un usuario.

ElementoLinuxmacOSWindows
Copia local del script, en una carpeta que solo los administradores pueden modificar/usr/local/lib/openlatch/discovery/discover.sh/Library/Application Support/OpenLatch/Discovery/discover.shC:\Program Files\OpenLatch\Discovery\discover.ps1
Archivo de clave, legible por los usuarios de la máquina/etc/openlatch/discovery.key/Library/Application Support/OpenLatch/Discovery/discovery.keyC:\ProgramData\OpenLatch\Discovery\discovery.key
Programación, una para todos los usuariosEl temporizador de usuario de systemd openlatch-discovery.timer, activado para cada usuarioEl LaunchAgent ai.openlatch.discoveryLa tarea programada OpenLatch Discovery, ejecutada para el grupo Users
Resultados de análisis y registro de cada usuario~/.local/share/openlatch-discovery/~/Library/Application Support/OpenLatch Discovery/%LOCALAPPDATA%\OpenLatch\Discovery\

Un despliegue solo para el usuario guarda su copia, su archivo de clave y su programación en la carpeta de descubrimiento de ese usuario.

El script acepta estas opciones. Las formas para la herramienta de gestión de flota pasan la clave y la organización por el entorno o un archivo de clave, nunca en la línea de comandos:

Ventana de terminal
sh discover.sh [--api-key-file <path>] [--interval <seconds>] [--dry-run] [--uninstall] [--scan-once]
powershell.exe -NoProfile -ExecutionPolicy Bypass -File discover.ps1 [-ApiKeyFile <path>] [-Interval <seconds>] [-DryRun] [-Uninstall] [-ScanOnce]
OpciónEfecto
—api-key-file, -ApiKeyFileUn archivo con la clave y la organización, una línea cada una: OPENLATCH_API_KEY=… y OPENLATCH_ORG=…
—interval, -IntervalEl intervalo de análisis en segundos, 86400 por defecto. Cámbialo desplegando de nuevo con otro valor
—dry-run, -DryRunSolo detectar y registrar: no instalar, inscribir ni registrar nada
—uninstall, -UninstallQuitar la programación, la copia local y el archivo de clave. Cada cliente inscrito se queda
—scan-once, -ScanOnceUn análisis en el contexto actual, sin programación: para contenedores y pruebas

Estas recetas despliegan el descubrimiento. Para instalar tú mismo el cliente en cada máquina, usa en su lugar las recetas de Desplegar el cliente.

Cada receta sigue las mismas reglas:

ReglaQué significa
Ejecutar con privilegio de sistemaComo root en macOS y Linux, como SYSTEM en Windows. El despliegue registra la programación para cada usuario; los análisis se ejecutan como cada usuario
Desplegar el archivo del scriptMantenerlo exactamente como se publica, sin envolverlo ni editarlo nunca
Tomar la clave de un canal secretoLa clave llega al script por el entorno o un archivo de clave, nunca por una línea de comandos ni por un cuerpo de script que tu herramienta muestre a otros
Leer el informe de ejecuciónEl informe de cada ejecución de tu herramienta de gestión de flota es donde ves las máquinas que ejecutaron el script sin encontrar nada

Prueba cada receta en un dispositivo antes de la oleada. Después, despliégala de nuevo cada vez que quieras cambiar el intervalo o entregar una versión nueva del script: hasta entonces, la programación sigue ejecutando la copia que ya está en la máquina.

Añade un script de plataforma que se ejecute como SYSTEM. Descarga el script, escribe un archivo de clave desde tu almacén de secretos y despliega:

Ventana de terminal
# Intune platform script, run as SYSTEM.
$ErrorActionPreference = "Stop"
$dir = Join-Path $env:ProgramData "OpenLatch\Deploy"
New-Item -ItemType Directory -Path $dir -Force | Out-Null
$script = Join-Path $dir "discover.ps1"
Invoke-WebRequest -UseBasicParsing -Uri "https://openlatch.ai/discover.ps1" -OutFile $script
# Replace this call with the one your secret store provides.
$key = Get-DiscoveryKeyFromSecretStore
$keyFile = Join-Path $dir "discovery.key"
Set-Content -Path $keyFile -Value @("OPENLATCH_API_KEY=$key", "OPENLATCH_ORG=<org>")
powershell.exe -NoProfile -ExecutionPolicy Bypass -File $script -ApiKeyFile $keyFile
$status = $LASTEXITCODE
Remove-Item $keyFile -ErrorAction SilentlyContinue
exit $status
AjusteValor
Run this script using the logged on credentialsNo, para que se ejecute como SYSTEM
Enforce script signature checkNo
Run script in 64 bit PowerShell HostYes
AsignaciónUn grupo de dispositivos

Cualquiera que pueda leer la directiva puede leer el cuerpo del script, por eso el script obtiene la clave en lugar de contenerla.

Guarda el script de Intune de arriba como deploy-discovery.ps1, conviértelo en el contenido de un paquete o de una aplicación, y despliégalo con estos ajustes:

AjusteValor
Línea de comandospowershell.exe -NoProfile -ExecutionPolicy Bypass -File deploy-discovery.ps1
EjecuciónTanto si hay un usuario conectado como si no, con derechos de administrador
ImplementaciónRequerida, para una recopilación de dispositivos

El estado de implementación de cada dispositivo es tu informe de ejecución.

Una directiva de Jamf ejecuta sus scripts como root, que es lo que el despliegue necesita. El script obtiene la clave de tu almacén de secretos y la escribe en un archivo de clave que solo root puede leer. Nunca pases la clave como parámetro de la directiva: Jamf entrega los parámetros al script en su línea de comandos.

#!/bin/zsh
# Jamf Pro policy script, run as root.
set -eu
work=$(mktemp -d /tmp/openlatch-discovery.XXXXXX)
trap 'rm -rf "$work"' EXIT
cd "$work"
curl -LsSfO https://openlatch.ai/discover.sh
curl -LsSf https://openlatch.ai/discover.sh.sha256 | shasum -a 256 -c -
# Replace this call with the one your secret store provides.
key=$(get-discovery-key-from-secret-store)
umask 077
print -r -- "OPENLATCH_API_KEY=$key" > discovery.key
print -r -- "OPENLATCH_ORG=<org>" >> discovery.key
sh discover.sh --api-key-file "$work/discovery.key"

Configura la Execution Frequency de la directiva como Once per computer, y ejecútala de nuevo cuando cambies el intervalo o el script.

En macOS 13 y posterior, un elemento en segundo plano nuevo hace que el sistema pida al usuario que lo apruebe. Para evitar la petición, añade un perfil de configuración con una carga Managed Login Items que contenga una regla: Rule Type Label, Rule Value ai.openlatch.discovery. Con esa carga, el elemento queda aprobado y el usuario puede ver un aviso de que se añadieron elementos gestionados; desplegar la carga es tu elección. Sin ella, el usuario ve el aviso Background Items Added del sistema.

Las carpetas del catálogo están fuera de las carpetas que protegen los controles de privacidad de macOS, así que el análisis no necesita ningún perfil de preferencias de privacidad (PPPC). Una comprobación que macOS rechaza cuenta como no concluyente, nunca como ausente.

Sigue los mismos pasos que el script de Jamf con privilegio de root: descarga el script, comprueba su SHA-256, escribe el archivo de clave desde tu almacén con permisos que solo root pueda leer, y ejecútalo con —api-key-file.

EtapaComandoEfecto
Construcción de la imagensh discover.sh —scan-once —dry-runDetecta y registra, nunca inscribe
Arranque del contenedorsh discover.sh —scan-onceDetecta e inscribe, con la clave y la organización de un secreto de ejecución

Nunca incluyas la clave en una imagen ni la pases como argumento de construcción. Cada arranque de contenedor que inscribe es un host nuevo para las licencias. En imágenes musl o BusyBox el análisis solo detecta, y registra que la instalación no es compatible ahí.

Windows: reglas de detección en los puestos

Sección titulada «Windows: reglas de detección en los puestos»

La tarea programada ejecuta esta acción, con la ruta de la copia local:

conhost.exe --headless powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File "C:\Program Files\OpenLatch\Discovery\discover.ps1"

conhost.exe —headless evita que el análisis muestre una ventana. Microsoft documenta esta opción como no admitida, y las reglas de detección estándar para ventanas ocultas, como las reglas Sigma para MITRE ATT&CK T1564.003, pueden detectarla. Si tu detección en los puestos señala la tarea, permite esa línea de comandos para la ruta de la copia local. Como la opción oculta el código de salida, el análisis escribe su propio resultado en su registro y en su archivo de último análisis.

SituaciónCuándo se ejecuta el primer análisis
Un usuario inicia sesión tras el despliegueEn ese inicio de sesión, y luego en cada intervalo
Una sesión ya abierta en el despliegue, en macOS, en Windows, o en Linux con systemd 248 o posteriorDe inmediato
Una sesión ya abierta, en Linux con systemd anterior a 248En el próximo inicio de sesión de ese usuario
Una sesión ya abierta en Windows que el despliegue no puede alcanzarEn el próximo inicio de sesión de ese usuario
Linux sin systemdNunca: el despliegue se detiene con OL-2203

Quitar el descubrimiento o excluir una máquina

Sección titulada «Quitar el descubrimiento o excluir una máquina»

Para quitar el descubrimiento de una máquina, despliega de nuevo el script con —uninstall, o -Uninstall en Windows. La programación, la copia local y el archivo de clave desaparecen; cada cliente inscrito se queda, con su inscripción. Para quitar también el cliente, usa su propia desinstalación: consulta Desinstalar.

Para que el descubrimiento siga analizando una máquina sin inscribir nada, coloca un archivo vacío llamado opt-out en la carpeta del descubrimiento. Los análisis entonces solo detectan y registran.

DespliegueDónde va el archivo opt-out
Para cada usuario, en Linux/usr/local/lib/openlatch/discovery/opt-out
Para cada usuario, en macOS/Library/Application Support/OpenLatch/Discovery/opt-out
Para cada usuario, en WindowsC:\Program Files\OpenLatch\Discovery\opt-out
Solo para el usuario actualopt-out en la raíz de la carpeta de descubrimiento de ese usuario, junto a su archivo de clave, no en su carpeta bin

Para mantener una máquina fuera de tu organización, dala de baja en la consola: consulta Gestionar los hosts descubiertos.

Rota la clave cuando se vaya alguien que la tenía, o según tu propio calendario. Las máquinas inscritas tienen su propia credencial de host, así que una rotación no desconecta ninguna.

  1. Crea una clave nueva desde Host enrollment en Settings › API keys, o con Generate key and fill, y guárdala en tu almacén de secretos.
  2. Despliega de nuevo el script con la clave nueva, para que el archivo de clave de cada máquina la contenga.
  3. Elimina la clave antigua en Settings › API keys una vez ejecutada la oleada. Una máquina que aún tenga el archivo de clave antiguo no puede inscribir a un usuario nuevo hasta que reciba el nuevo.

Los scripts muestran un código junto a cada fallo, y luego el paso siguiente en la línea de abajo. La instalación que ejecuta el análisis al encontrar un agente conserva los códigos OL-21xx de los scripts de instalación.

CódigoQué ocurrióQué hacer a continuación
OL-2200No se dio ninguna clave ni organización, en el entorno ni en un archivo de clave. En un despliegue no cambia nada; en un análisis falta el archivo de clave y no se instala nadaEntrega la clave y la organización desde tu almacén de secretos y despliega de nuevo
OL-2201Una opción no se reconoció, o el intervalo no es un número entero de segundos mayor que ceroUsa las opciones indicadas arriba; el intervalo va en segundos
OL-2202El script no se ejecuta en este sistema operativoUsa discover.sh en macOS y Linux, discover.ps1 en Windows
OL-2203Esta máquina Linux no ejecuta systemd, que la programación necesitaEjecuta el script con —scan-once desde el programador de tareas de la máquina, o usa el script de instalación
OL-2204El paso necesita privilegio de sistema, por ejemplo para quitar un despliegue hecho para todos los usuariosEjecuta el mismo comando mediante tu herramienta de gestión de flota, o con sudo o un PowerShell elevado
OL-2205Un despliegue por tubería no pudo descargar su archivo de versión o su resumenComprueba que la máquina alcanza openlatch.ai y despliega de nuevo, o despliega el archivo del script
OL-2206Un despliegue por tubería descargó su archivo de versión y su SHA-256 no coincide con el resumen publicadoDespliega de nuevo; si sigue fallando, despliega el archivo del script tras comprobar su resumen
OL-2207Un despliegue por tubería descargó el script de Windows y este lleva una firma que no es válidaDespliega de nuevo; si sigue fallando, despliega el archivo del script
OL-2208No se pudo escribir la copia local, su resumen o el archivo de claveComprueba que la cuenta que ejecuta el despliegue puede escribir en la carpeta de descubrimiento, y despliega de nuevo
OL-2209No se pudo registrar la programaciónDespliega de nuevo; el mensaje nombra el paso que rechazó el sistema operativo
OL-2210La programación está registrada, pero falló su inicio en una sesión abiertaNada: los análisis de ese usuario empiezan en su próximo inicio de sesión
OL-2211Al quitar el descubrimiento quedaron la programación, la copia local o el archivo de claveVuelve a quitarlo mediante tu herramienta de gestión de flota; el mensaje nombra lo que queda
OL-2212Ya había una inscripción en curso para este usuario, así que este análisis omitió la suyaNada: el análisis siguiente vuelve a intentarlo

Cuando un análisis inscribe un cliente, la propia inscripción del cliente responde, y el análisis actúa según la respuesta:

CódigoQué significaQué hace el análisis
OL-1201La plataforma rechazó la claveDeja de inscribir tras tres rechazos seguidos, hasta que cambie el archivo de clave. Los análisis siguen detectando. Sustituye el archivo de clave por una clave válida
OL-1612La clave pertenece a otra organización distinta de la indicadaDeja de inscribir tras tres rechazos seguidos, hasta que cambie el archivo de clave. Los análisis siguen detectando
OL-1613No se pudo contactar con la plataforma para confirmar la organizaciónVuelve a intentarlo en el análisis siguiente
OL-1614La instalación de este usuario está inscrita en otra organizaciónDeja esa instalación sin cambios
OL-1624Un administrador dio de baja este hostSolo detecta y registra, hasta que un administrador pulse Re-enrol
OL-1626Un administrador cortó este hostSolo detecta y registra. Una persona que ejecuta openlatch init con una clave recupera el host
OL-1625Había otra inscripción en cursoOmite la inscripción de este análisis