MSP-verktyg
Din RMM gör redan API-anrop. Clavitor gör dem säkra.
Dina tekniker använder Datto, N-able och ConnectWise varje dag. Varje skript, varje automatisering, varje schemalagd uppgift behöver inloggningsuppgifter. Idag finns de i skriptvariabler, anpassade fält eller ett delat valv som alla kan läsa. Clavitor-proxyn och CLI ändrar det utan att ändra dina arbetsflöden.
Proxy-mönstret för RMM
Ställ in HTTPS_PROXY på slutpunkten och dina befintliga skript fungerar oförändrade. Proxyn fångar upp utgående HTTPS-förfrågningar, löser clavitor://-referenser i rubriker och injicerar de verkliga inloggningsuppgifterna. Ditt skript ser aldrig hemligheten. Din RMM-konsol loggar den aldrig.
# 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 är MSP:ns dagliga språk. Både CLI och proxyn fungerar inbyggt.
CLI — enskilda värden
# 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
Rendera — konfigurationsmallar
# 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 — transparent injicering
$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 ersätter platshållare för anpassade fält i skriptparametrar vid körning, med syntaxen {[Atera.<level>.CustomField.<name>]}. Skicka Clavitor-token till ett engångsinstallationsskript som en parameter; senare skript anropar CLI på slutpunkten.
Installera via IT Automation-profil
I Ateras skriptbibliotek, skapa ett PowerShell-skript Installera Clavitor med en parameter. I IT Automation-profilen som kör det, anropa med kundnivåns fältplatshållare:
Install-Clavitor.ps1 -Token "{[Atera.Customer.CustomField.ClavitorToken]}"Atera ersätter värdet innan agenten läser dess argumentlista. Skriptet:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Lös inloggningsuppgifter vid körning
När slutpunkten är registrerad läser alla senare Atera-skript inloggningsuppgifter från valvet — Atera håller bara token-platsen:
$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 ersätter makron för Extra Data Field (EDF) i skriptstegsargument med syntaxen {%^el:FieldName^%} (datornivå EDF). CLI installeras via ett Automate-skript som laddar ner binären och anropar ett PowerShell-steg med token skickad som parameter — EDF-värdet ersätts innan skriptsteget körs.
Automate-skript: installera
I Automate-skriptredigeraren, skapa skriptet med två steg:
Step 1 File Download from LTShare clavitor-cli.exe → %windir%\Temp\
Step 2 Shell Execute (PowerShell) Install-Clavitor.ps1 -Token "{%^el:ClavitorToken^%}"Makrot {%^el:ClavitorToken^%} ersätts med datornivåns EDF-värde innan PowerShell-steget körs. Håll tokens under 255 tecken för att hålla dig inom LabReplace:s ersättningsgräns. Själva skriptet:
# Install-Clavitor.ps1 param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Automate-skript: rotera en domäninloggningsuppgift
Efterföljande skript läser från valvet och skriver en status tillbaka till EDF för dashboarding:
$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 exponerar webbplats- och globala variabler för PowerShell-komponenter som miljövariabler med prefixet $env:; användardefinierade fält (UDF) exponeras som $env:UDF_1 till $env:UDF_30. En komponent installerar CLI; allt därefter läser från valvet.
Komponent: installera och initialisera
Definiera en webbplatsvariabel ClavitorToken i Datto-konsolen — den visas i komponenten som $env:ClavitorToken:
# Datto RMM component: bootstrap Clavitor CLI # Site variable "ClavitorToken" → $env:ClavitorToken at runtime $env:ClavitorToken | clavitor-cli init
Komponent: API-övervakning via proxyn
Efterföljande komponenter skriver clavitor://-referenser i förfrågehuvuden — proxyn löser dem på värden. Inloggningsuppgifterna kommer aldrig in i skriptets minne eller Dattos loggar:
# 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
VSA-agentprocedurer ersätter #variable#-makron i PowerShell-argument vid körning, och kör sedan skriptet via familjen executePowershell-steg (executePowerShell64BitSystem, etc.). Ett anpassat fält på agentposten innehåller Clavitor-token; proceduren skickar den till init via stdin.
Agentprocedur: installera
Lägg till ett anpassat fält för agenten ClavitorToken (Audit → Edit Profile → Custom Fields), bygg sedan en procedur med två steg:
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#"Makrot #vAgentConfiguration.ClavitorToken# ersätts med värdet från det anpassade fältet innan VSA kör kommandot — token visas inte i VSAs procedurhistorik.
Agentprocedur: rotera en privilegierad inloggningsuppgift
När den är initialiserad läser alla senare procedurer från valvet:
# 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
Automationsenheten är en AMP (Automation Manager Policy) — en PowerShell-baserad policy byggd i Automation Manager. Anpassade egenskaper på organisations-, kund- eller webbplatsnivå kan skickas till ett Run PowerShell Script-objekt som indataparametrar.
AMP: installera med anpassad egenskap som indata
Lägg till en anpassad egenskap ClavitorToken på kundnivå (Administration → Custom Properties). I Automation Manager, skapa en AMP vars Run PowerShell Script-objekt binder indataparametern Token till den anpassade egenskapen. Skriptet:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Värdet från den anpassade egenskapen flödar in som $Token. Det visas aldrig i AMP:ns exporterade XML eller i N-centrals granskningslogg.
Skriptarkiv: hämta en inloggningsuppgift vid körning
För ad-hoc-skript som pushas via Skriptarkivet (Configuration → Repository → Scripts/Software), är slutpunkten redan initialiserad — skriptet anropar bara 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 (tidigare SolarWinds RMM) kör samma Automation Manager-motor som N-central, plus en Script Manager för .ps1, AMP, batch och andra skripttyper. Mönstret speglar N-central: AMP med en indataparameter för token, sedan löser allt annat sig vid körning.
Script Manager: installera via Automatiserad Uppgift
Ladda upp en Install-Clavitor.ps1 till Settings → Script Manager med en parameter för token. Bifoga den som en Automatiserad Uppgift på slutpunkten; skicka token som ett skriptargument från enhetsnivåinställningen:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Automatiserad Uppgift: schemalagd säkerhetskopiering med inloggningsuppgifter från valvet
När slutpunkten är initialiserad hämtar schemalagda uppgifter inloggningsuppgifter från valvet. All standardutdata upp till 255 tecken visas tillbaka till N-sight-instrumentpanelen:
$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
NinjaOne-skript som körs på slutpunkten kan läsa och skriva anpassade fält genom inbyggda cmdlets: Ninja-Property-Get <name> returnerar värdet, Ninja-Property-Set <name> <value> skriver tillbaka det. Lagra Clavitor-token i ett organisationsanpassat fält (typ Secure så det är skrivskyddat från konsolen); installationsskriptet läser det en gång.
Installationsskript: läs token från anpassat fält
I Administration → Library → Custom Fields, lägg till ett organisationsfält clavitorToken av typen Secure. Kör sedan ett installationsskript:
$token = Ninja-Property-Get clavitorToken $token | clavitor-cli init Remove-Variable token
Anpassad Åtgärd: API-anrop via proxyn
När automatiseringar är installerade anropar de externa API:er via proxyn — inloggningsuppgifterna kopieras aldrig till en skriptvariabel:
$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 exponerar anpassade fält och taggar för tillgångar som Platform-skriptvariabler med syntaxen {{asset_custom_field_<name>}} med dubbla klammerparenteser. Definiera en skriptvariabel av typen Platform och bind den till fältet — Syncro ersätter värdet i en PowerShell-parameter vid skriptkörning.
Syncro-skript: installera
Skapa ett anpassat fält för tillgångar clavitor_token. I skriptredigeraren, deklarera en variabel Token av typen Platform bunden till {{asset_custom_field_clavitor_token}}; skicka den till en PowerShell-parameter i skriptkroppen:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Hjälp-panelen längst ner i varje Syncro-skriptredigerare listar alla tillgängliga plattforms-variabler för tillgångs-, kund- och biljettkontexten.
Syncro-skript: anslut VPN med inloggningsuppgifter från valvet
Efter installation löser skript och Automatiserade Åtgärder inloggningsuppgifter från valvet och använder dem direkt:
$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
Varför detta är viktigt för MSP:er
Varje RMM-plattform lagrar inloggningsuppgifter någonstans — anpassade egenskaper, webbplatsvariabler, extra datafält, skriptparametrar. Varje tekniker med konsolåtkomst kan se dem. Varje intrång i din RMM-konsol exponerar alla kunders inloggningsuppgifter.
Clavitor flyttar inloggningsuppgifterna ut ur RMM. RMM lagrar bara agent-token (en per kund). Token ger begränsad åtkomst till den kundens valv. Ett intrång i din RMM-konsol exponerar tokens, inte inloggningsuppgifter — och varje token är IP-vitlistad till den slutpunkt den distribuerades på.
Omfattas per kund
Varje kundvalv har sin egen agent-token. Teknikeråtkomst styrs av omfång, inte av "vem som kan logga in på RMM-konsolen."
Granskas per skript
Varje åtkomst till inloggningsuppgifter loggas — vilket skript, vilken slutpunkt, vilken inloggningsuppgift, när. Dina kunder kan se granskningsspåret. Du kan bevisa vem som fick åtkomst till vad.
Återkallas med ett klick
Kund lämnar? Återkalla deras agent-token. Varje slutpunkt slutar lösa inloggningsuppgifter omedelbart. Inga lösenord att rotera, inga anpassade egenskaper att rensa över 200 maskiner.
Sluta lagra inloggningsuppgifter i din RMM.
En CLI. Varje kund. Varje inloggningsuppgift omfattas, granskas och kan återkallas.