Herramientas MSP
Su RMM ya realiza llamadas a la API.
Clavitor las hace seguras.
Sus técnicos utilizan Datto, N-able y ConnectWise a diario. Cada script, cada automatización, cada tarea programada necesita credenciales. Hoy están en variables de script, campos personalizados o una bóveda compartida que todos pueden leer. El proxy y la CLI de Clavitor cambian eso sin modificar sus flujos de trabajo.
El patrón de proxy para RMM
Configure HTTPS_PROXY en el endpoint y sus scripts existentes funcionarán sin cambios. El proxy intercepta las solicitudes HTTPS salientes, resuelve las referencias clavitor:// en las cabeceras e inyecta la credencial real. Su script nunca ve el secreto. Su consola RMM nunca lo registra.
# On the managed endpoint — one-time setup
$env:HTTPS_PROXY = "http://localhost:1983"
# Your existing automation scripts work unchanged
# The proxy resolves clavitor:// references in request headers
Invoke-RestMethod -Uri "https://api.openai.com/v1/models" `
-Headers @{ Authorization = "Bearer clavitor://OpenAI/key" }PowerShell
PowerShell es el lenguaje diario del MSP. Tanto la CLI como el proxy funcionan de forma nativa.
CLI — valores únicos
# Resolve, use, scrub — the credential lives for one statement $cred = clavitor-cli get "Client-Acme/VPN" --field password Add-VpnConnection -Name "Acme" -ServerAddress "vpn.acme.com" -AuthenticationMethod MSChapv2 $secure = ConvertTo-SecureString $cred -AsPlainText -Force Set-VpnConnectionUsernamePassword -ConnectionName "Acme" -Password $secure Remove-Variable cred, secure
Renderizado — plantillas de configuración
# Template with clavitor:// references (safe to store in your RMM) clavitor-cli render monitoring-config.json | ` Set-Content -Path "C:\ProgramData\Monitor\config.json"
Proxy — inyección transparente
$env:HTTPS_PROXY = "http://localhost:1983"
# Every Invoke-RestMethod and Invoke-WebRequest now resolves clavitor://
Invoke-RestMethod -Uri "https://api.datto.com/v1/devices" `
-Headers @{ Authorization = "Bearer clavitor://Datto API/key" }Atera
Atera sustituye los marcadores de campo personalizados en los parámetros de script en tiempo de ejecución, utilizando la sintaxis {[Atera.<level>.CustomField.<name>]}. Pase el token de Clavitor a un script de instalación de un solo uso como parámetro; los scripts posteriores se ejecutarán a través de la CLI en el endpoint.
Instalación a través del perfil de automatización de TI
En la biblioteca de scripts de Atera, cree un script de PowerShell Instalar Clavitor con un parámetro. En el perfil de automatización de TI que lo ejecuta, invoque con el marcador de campo a nivel de cliente:
Install-Clavitor.ps1 -Token "{[Atera.Customer.CustomField.ClavitorToken]}"Atera sustituye el valor antes de que el agente lea su lista de argumentos. El script:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Resuelva credenciales en tiempo de ejecución
Una vez que el endpoint esté registrado, todos los scripts posteriores de Atera leerán las credenciales de la bóveda — Atera solo mantiene la ranura del token:
$pass = clavitor-cli get "Client-Acme/SQL Server" --field password
$secure = ConvertTo-SecureString $pass -AsPlainText -Force
Invoke-Sqlcmd -ServerInstance "sql.acme.local" `
-Credential (New-Object PSCredential("sa", $secure)) -Query "SELECT 1"
Remove-Variable pass, secureConnectWise Automate
Automate sustituye las macros de Campo de Datos Adicionales (EDF) en los argumentos de los pasos de script utilizando la sintaxis {%^el:FieldName^%} (EDF a nivel de equipo). La CLI se instala a través de un script de Automate que descarga el binario e invoca un paso de PowerShell con el token pasado como parámetro — el valor del EDF se reemplaza antes de que se ejecute el paso del script.
Script de Automate: instalar
En el editor de scripts de Automate, cree el script con dos pasos:
Step 1 File Download from LTShare clavitor-cli.exe → %windir%\Temp\
Step 2 Shell Execute (PowerShell) Install-Clavitor.ps1 -Token "{%^el:ClavitorToken^%}"La macro {%^el:ClavitorToken^%} se reemplaza con el valor del EDF a nivel de equipo antes de que se ejecute el paso de PowerShell. Mantenga los tokens por debajo de 255 caracteres para permanecer dentro del límite de sustitución de LabReplace. El script en sí:
# Install-Clavitor.ps1 param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Script de Automate: rotar una credencial de dominio
Los scripts posteriores leen de la bóveda y escriben un estado de vuelta en el EDF para la creación de paneles:
$cred = clavitor-cli get "Client-Delta/Domain Admin" --field password
$secure = ConvertTo-SecureString $cred -AsPlainText -Force
Reset-ComputerMachinePassword `
-Credential (New-Object PSCredential("administrator", $secure))
# Push timestamp back to EDF "LastRotation" via Automate's ExtraData Set Value step
Write-Output (Get-Date -Format o)
Remove-Variable cred, secureDatto RMM
Datto RMM expone variables de sitio y globales a los componentes de PowerShell como variables de entorno con el prefijo $env:; los campos definidos por el usuario (UDF) se exponen como $env:UDF_1 a $env:UDF_30. Un componente instala la CLI; todo lo posterior lee de la bóveda.
Componente: instalar e inicializar
Defina una variable de sitio ClavitorToken en la consola de Datto — aparece dentro del componente como $env:ClavitorToken:
# Datto RMM component: bootstrap Clavitor CLI # Site variable "ClavitorToken" → $env:ClavitorToken at runtime $env:ClavitorToken | clavitor-cli init
Componente: monitor de API a través del proxy
Los componentes posteriores escriben referencias clavitor:// en las cabeceras de solicitud — el proxy las resuelve en el host. La credencial nunca entra en la memoria del script ni en los registros de Datto:
# Scheduled monitor — runs every 15 minutes
$env:HTTPS_PROXY = "http://localhost:1983"
$response = Invoke-RestMethod -Uri "https://api.client.com/v1/status" `
-Headers @{ Authorization = "Bearer clavitor://Client-Bravo/Monitoring API" }
# Push a status code back into UDF_5 for the Datto dashboard
New-ItemProperty -Path "HKLM:\SOFTWARE\CentraStage" `
-Name "Custom5" -Value $response.status -Force | Out-NullKaseya VSA
Los procedimientos del agente VSA sustituyen las macros #variable# en los argumentos de PowerShell en tiempo de ejecución, y luego ejecutan el script a través de la familia de pasos executePowershell (executePowerShell64BitSystem, etc.). Un Campo Personalizado en el registro del agente contiene el token de Clavitor; el procedimiento lo pasa a la inicialización a través de stdin.
Procedimiento de agente: instalar
Añada un Campo Personalizado del agente ClavitorToken (Auditoría → Editar Perfil → Campos Personalizados), luego cree un procedimiento con dos pasos:
Step 1 Get File from VSA Server clavitor-cli.exe → C:\Program Files\Clavitor\
Step 2 Execute PowerShell (64 Sys) "C:\Program Files\Clavitor\clavitor-cli.exe init" \
stdin = "#vAgentConfiguration.ClavitorToken#"La macro #vAgentConfiguration.ClavitorToken# se reemplaza con el valor del Campo Personalizado antes de que VSA ejecute el comando — el token no aparece en el historial de procedimientos de VSA.
Procedimiento de agente: rotar una credencial privilegiada
Una vez inicializado, cualquier procedimiento posterior lee de la bóveda:
# Executed via executePowerShell64BitSystem $cred = clavitor-cli get "Client-Hotel/Local Admin" --field password $secure = ConvertTo-SecureString $cred -AsPlainText -Force Set-LocalUser -Name "Administrator" -Password $secure Remove-Variable cred, secure
N-able N-central
La unidad de automatización es una AMP (Automation Manager Policy) — una política basada en PowerShell creada en Automation Manager. Las Propiedades Personalizadas a nivel de organización, cliente o sitio se pueden pasar a un objeto Run PowerShell Script como Parámetros de Entrada.
AMP: instalar con Propiedad Personalizada como entrada
Añada una Propiedad Personalizada ClavitorToken a nivel de cliente (Administración → Propiedades Personalizadas). En Automation Manager, cree una AMP cuyo objeto Run PowerShell Script enlace el Parámetro de Entrada Token a esa Propiedad Personalizada. El script:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
El valor de la Propiedad Personalizada fluye como $Token. Nunca aparece en el XML exportado de la AMP ni en el registro de auditoría de N-central.
Repositorio de Scripts: obtener una credencial en tiempo de ejecución
Para scripts ad-hoc enviados a través del Repositorio de Scripts (Configuración → Repositorio → Scripts/Software), el endpoint ya está inicializado — el script simplemente llama a la CLI:
$dbPass = clavitor-cli get "Client-Bcme/SQL Server" --field password
$secure = ConvertTo-SecureString $dbPass -AsPlainText -Force
Invoke-Sqlcmd -ServerInstance "sql.bcme.com" `
-Credential (New-Object PSCredential("sa", $secure)) -Query "SELECT 1"
Remove-Variable dbPass, secureN-able N-sight
N-sight (anteriormente SolarWinds RMM) ejecuta el mismo motor de Automation Manager que N-central, además de un Script Manager para scripts .ps1, AMP, batch y otros tipos. El patrón refleja N-central: AMP con un Parámetro de Entrada para el token, luego todo lo demás se resuelve en tiempo de ejecución.
Script Manager: instalar a través de Tarea Automatizada
Cargue un Install-Clavitor.ps1 en Configuración → Script Manager con un parámetro para el token. Adjúntelo como una Tarea Automatizada en el endpoint; pase el token como un argumento de script desde la configuración a nivel de dispositivo:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Tarea Automatizada: copia de seguridad programada con credenciales de bóveda
Una vez inicializadas, las tareas programadas obtienen credenciales de la bóveda. Cualquier salida estándar de hasta 255 caracteres se muestra de vuelta en el panel de N-sight:
$pass = clavitor-cli get "Client-India/SQL Backup" --field password
$secure = ConvertTo-SecureString $pass -AsPlainText -Force
Backup-SqlDatabase -ServerInstance "sql.india.com" -Database "AppDB" `
-Credential (New-Object PSCredential("backup-svc", $secure))
Write-Output "backup OK $(Get-Date -Format o)"
Remove-Variable pass, secureNinjaOne
Los scripts de NinjaOne que se ejecutan en el endpoint pueden leer y escribir campos personalizados a través de cmdlets integrados: Ninja-Property-Get <name> devuelve el valor, Ninja-Property-Set <name> <value> lo escribe de vuelta. Almacene el token de Clavitor en un campo personalizado de organización (tipo Seguro para que sea de solo escritura desde la consola); el script de instalación lo lee una vez.
Script de instalación: leer token de campo personalizado
En Administración → Biblioteca → Campos Personalizados, añada un campo de organización clavitorToken de tipo Seguro. Luego ejecute un script de instalación:
$token = Ninja-Property-Get clavitorToken $token | clavitor-cli init Remove-Variable token
Acción Personalizada: llamada a API a través del proxy
Una vez instalado, las automatizaciones llaman a APIs externas a través del proxy — la credencial nunca se copia en una variable de script:
$env:HTTPS_PROXY = "http://localhost:1983"
$response = Invoke-RestMethod -Uri "https://api.client-echo.com/v1/status" `
-Headers @{ Authorization = "Bearer clavitor://Client-Echo/Monitoring API" }
# Push the result back to a device custom field for dashboarding
Ninja-Property-Set lastApiStatus $response.statusSyncro
Syncro expone campos personalizados y etiquetas de activos como variables de script Plataforma utilizando la sintaxis de doble llave {{asset_custom_field_<name>}}. Defina una variable de script de tipo Plataforma y vincúlela al campo — Syncro sustituye el valor en un parámetro de PowerShell en el momento de la ejecución del script.
Script de Syncro: instalar
Cree un campo personalizado de activo clavitor_token. En el editor de scripts, declare una variable Token de tipo Plataforma vinculada a {{asset_custom_field_clavitor_token}}; pásela a un parámetro de PowerShell en el cuerpo del script:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
El panel de Ayuda Rápida en la parte inferior de cada editor de scripts de Syncro enumera todas las variables de plataforma disponibles para el contexto de activo, cliente y ticket.
Script de Syncro: conectar VPN con credenciales de bóveda
Después de la instalación, los scripts y las Remediaciones Automatizadas resuelven las credenciales de la bóveda y las utilizan directamente:
$pass = clavitor-cli get "Client-Golf/VPN" --field password $secure = ConvertTo-SecureString $pass -AsPlainText -Force Add-VpnConnection -Name "Golf" -ServerAddress "vpn.golf.com" ` -AuthenticationMethod MSChapv2 -Force Set-VpnConnectionUsernamePassword -ConnectionName "Golf" -Password $secure # Write status back to asset for Syncro dashboard Rmm-Alert -Category "vpn-status" -Body "Golf connected $(Get-Date -Format o)" Remove-Variable pass, secure
Por qué esto importa para los MSP
Cada plataforma RMM almacena credenciales en algún lugar — propiedades personalizadas, variables de sitio, campos de datos adicionales, parámetros de script. Cada técnico con acceso a la consola puede verlas. Cada brecha en su consola RMM expone las credenciales de cada cliente.
Clavitor mueve las credenciales fuera del RMM. El RMM almacena solo el token del agente (uno por cliente). El token otorga acceso con alcance limitado a la bóveda de ese cliente. Una brecha en su consola RMM expone tokens, no credenciales — y cada token está en la lista blanca de IP del endpoint en el que se desplegó.
Con alcance limitado por cliente
Cada bóveda de cliente tiene su propio token de agente. El acceso del técnico se controla por alcance, no por "quién puede iniciar sesión en la consola RMM".
Auditado por script
Cada acceso a credenciales se registra — qué script, qué endpoint, qué credencial, cuándo. Sus clientes pueden ver el rastro de auditoría. Puede demostrar quién accedió a qué.
Revocado con un clic
¿Se va un cliente? Revoque su token de agente. Cada endpoint deja de resolver credenciales inmediatamente. Sin contraseñas que rotar, sin propiedades personalizadas que borrar en 200 máquinas.
Deje de almacenar credenciales en su RMM.
Una CLI. Cada cliente. Cada credencial con alcance limitado, auditada y revocable.