Logga in Gratis för alltid Kom igång

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, secure

ConnectWise 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, secure

Datto 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-Null

Kaseya 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, secure

N-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, secure

NinjaOne

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.status

Syncro

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.