Inloggen Gratis voor altijd Aan de slag

MSP-tools

Je RMM maakt al API-aanroepen. Clavitor maakt ze veilig.

Je technici gebruiken Datto, N-able en ConnectWise elke dag. Elk script, elke automatisering, elke geplande taak heeft inloggegevens nodig. Vandaag staan ze in scriptvariabelen, aangepaste velden of een gedeelde kluis die iedereen kan lezen. De Clavitor proxy en CLI veranderen dat zonder je workflows aan te passen.

Het proxy-patroon voor RMM

Stel HTTPS_PROXY in op het eindpunt en je bestaande scripts werken ongewijzigd. De proxy onderschept uitgaande HTTPS-verzoeken, lost clavitor://-verwijzingen in headers op en injecteert de echte inloggegevens. Je script ziet het geheim nooit. Je RMM-console logt het nooit.

# 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 is de dagelijkse taal van de MSP. Zowel de CLI als de proxy werken native.

CLI — enkele waarden

# 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

Render — configuratietemplates

# 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 — transparante injectie

$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 vervangt placeholders voor aangepaste velden in scriptparameters tijdens runtime, met behulp van de {[Atera.<level>.CustomField.<name>]}-syntaxis. Geef de Clavitor-token mee aan een eenmalig installatiescript als parameter; latere scripts roepen de CLI aan op het eindpunt.

Installeren via IT Automation-profiel

Maak in de Atera-scriptbibliotheek een PowerShell-script Install Clavitor met één parameter. Roep in het IT Automation-profiel dat het uitvoert, aan met de placeholder voor het veld op klantniveau:

Install-Clavitor.ps1 -Token "{[Atera.Customer.CustomField.ClavitorToken]}"

Atera vervangt de waarde voordat de agent de argumentenlijst leest. Het script:

param([Parameter(Mandatory)][string]$Token)
$Token | clavitor-cli init
Remove-Variable Token

Inloggegevens ophalen tijdens runtime

Zodra het eindpunt is geregistreerd, leest elk volgend Atera-script inloggegevens uit de kluis — Atera houdt alleen de token-slot vast:

$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 vervangt Extra Data Field (EDF)-macro's in scriptstapargumenten met behulp van de {%^el:FieldName^%}-syntaxis (EDF op computerniveau). De CLI installeert via een Automate-script dat de binaire bestanden downloadt en een PowerShell-stap aanroept met de token als parameter — de EDF-waarde wordt vervangen voordat de scriptstap wordt uitgevoerd.

Automate-script: installeren

Maak in de Automate-scripteditor het script met twee stappen:

Step 1  File Download from LTShare       clavitor-cli.exe → %windir%\Temp\
Step 2  Shell Execute (PowerShell)       Install-Clavitor.ps1 -Token "{%^el:ClavitorToken^%}"

De macro {%^el:ClavitorToken^%} wordt vervangen door de EDF-waarde op computerniveau voordat de PowerShell-stap wordt uitgevoerd. Houd tokens onder de 255 tekens om binnen de vervangingslimiet van LabReplace te blijven. Het script zelf:

# Install-Clavitor.ps1
param([Parameter(Mandatory)][string]$Token)
$Token | clavitor-cli init
Remove-Variable Token

Automate-script: een domein-inloggegevens roteren

Latere scripts lezen uit de kluis en schrijven een status terug naar de EDF voor dashboards:

$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 stelt site- en globale variabelen beschikbaar aan PowerShell-componenten als omgevingsvariabelen met het voorvoegsel $env:; door de gebruiker gedefinieerde velden (UDF's) worden beschikbaar gesteld als $env:UDF_1 tot $env:UDF_30. Eén component installeert de CLI; al het andere leest uit de kluis.

Component: installeren en initialiseren

Definieer een sitevariabele ClavitorToken in de Datto-console — deze verschijnt binnen de component als $env:ClavitorToken:

# Datto RMM component: bootstrap Clavitor CLI
# Site variable "ClavitorToken" → $env:ClavitorToken at runtime
$env:ClavitorToken | clavitor-cli init

Component: API-monitor via de proxy

Latere componenten schrijven clavitor://-verwijzingen in request-headers — de proxy lost ze op de host op. De inloggegevens komen nooit in het geheugen van het script of de logs van Datto terecht:

# 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-agentprocedures vervangen #variable#-macro's in PowerShell-argumenten tijdens runtime en voeren vervolgens het script uit via de executePowershell-stapfamilie (executePowerShell64BitSystem, etc.). Een aangepast veld op het agentrecord bevat de Clavitor-token; de procedure geeft deze via stdin door aan de initialisatie.

Agentprocedure: installeren

Voeg een aangepast veld ClavitorToken toe aan de agent (Audit → Profiel bewerken → Aangepaste velden), bouw vervolgens een procedure met twee stappen:

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#"

De macro #vAgentConfiguration.ClavitorToken# wordt vervangen door de waarde van het aangepaste veld voordat VSA het commando uitvoert — de token verschijnt niet in de proceduregeschiedenis van VSA.

Agentprocedure: bevoorrechte inloggegevens roteren

Eenmaal geïnitialiseerd, leest elke latere procedure uit de kluis:

# 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

De eenheid van automatisering is een AMP (Automation Manager Policy) — een op PowerShell gebaseerd beleid, gebouwd in Automation Manager. Aangepaste Eigenschappen op organisatie-, klant- of siteniveau kunnen worden doorgegeven aan een Run PowerShell Script-object als Input Parameters.

AMP: installeren met Aangepaste Eigenschap als input

Voeg een Aangepaste Eigenschap ClavitorToken toe op klantniveau (Beheer → Aangepaste Eigenschappen). Maak in Automation Manager een AMP waarvan het Run PowerShell Script-object de Input Parameter Token koppelt aan die Aangepaste Eigenschap. Het script:

param([Parameter(Mandatory)][string]$Token)
$Token | clavitor-cli init
Remove-Variable Token

De waarde van de Aangepaste Eigenschap wordt doorgegeven als $Token. Deze verschijnt nooit in de geëxporteerde XML van de AMP of in het auditlog van N-central.

Script Repository: inloggegevens ophalen tijdens runtime

Voor ad-hoc scripts die via de Script Repository worden verzonden (Configuratie → Repository → Scripts/Software), is het eindpunt al geïnitialiseerd — het script roept gewoon de CLI aan:

$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 (voorheen SolarWinds RMM) gebruikt dezelfde Automation Manager-engine als N-central, plus een Script Manager voor .ps1, batch en andere scripttypen. Het patroon weerspiegelt N-central: AMP met een Input Parameter voor de token, waarna alles tijdens runtime wordt opgelost.

Script Manager: installeren via Geautomatiseerde Taak

Upload een Install-Clavitor.ps1 naar Instellingen → Script Manager met een parameter voor de token. Koppel deze als een Geautomatiseerde Taak op het eindpunt; geef de token door als een scriptargument vanuit de instelling op apparaatniveau:

param([Parameter(Mandatory)][string]$Token)
$Token | clavitor-cli init
Remove-Variable Token

Geautomatiseerde Taak: geplande back-up met kluis-inloggegevens

Eenmaal geïnitialiseerd, halen geplande taken inloggegevens uit de kluis. Elke standaarduitvoer tot 255 tekens verschijnt terug op het N-sight dashboard:

$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-scripts die op het eindpunt draaien, kunnen aangepaste velden lezen en schrijven via ingebouwde cmdlets: Ninja-Property-Get <name> retourneert de waarde, Ninja-Property-Set <name> <value> schrijft deze terug. Sla de Clavitor-token op in een aangepast veld op organisatieniveau (type Beveiligd zodat het alleen-schrijven is vanuit de console); het installatiescript leest het eenmalig.

Installatiescript: token lezen uit aangepast veld

Voeg in Beheer → Bibliotheek → Aangepaste velden een organisatieveld clavitorToken van het type Beveiligd toe. Voer vervolgens een installatiescript uit:

$token = Ninja-Property-Get clavitorToken
$token | clavitor-cli init
Remove-Variable token

Aangepaste Actie: API-aanroep via de proxy

Eenmaal geïnstalleerd, roepen automatiseringen externe API's aan via de proxy — de inloggegevens worden nooit in een scriptvariabele gekopieerd:

$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 stelt aangepaste velden en tags van assets beschikbaar als Platform-scriptvariabelen met de dubbele-krul-syntaxis {{asset_custom_field_<name>}}. Definieer een scriptvariabele van het type Platform en koppel deze aan het veld — Syncro vervangt de waarde in een PowerShell-parameter tijdens scriptuitvoering.

Syncro-script: installeren

Maak een aangepast veld clavitor_token voor de asset. Declareer in de scripteditor een variabele Token van het type Platform gekoppeld aan {{asset_custom_field_clavitor_token}}; geef deze door aan een PowerShell-parameter in de scriptbody:

param([Parameter(Mandatory)][string]$Token)
$Token | clavitor-cli init
Remove-Variable Token

Het Quick Help-paneel onderaan elke Syncro-scripteditor toont alle beschikbare platformvariabelen voor de context van de asset, klant en ticket.

Syncro-script: VPN verbinden met kluis-inloggegevens

Na installatie lossen scripts en Geautomatiseerde Herstelacties inloggegevens op uit de kluis en gebruiken ze direct:

$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

Waarom dit ertoe doet voor MSP's

Elk RMM-platform slaat inloggegevens ergens op — aangepaste eigenschappen, sitevariabelen, extra gegevensvelden, scriptparameters. Elke technicus met consoletoegang kan ze zien. Elke inbreuk op je RMM-console stelt de inloggegevens van elke klant bloot.

Clavitor verplaatst de inloggegevens uit het RMM. Het RMM slaat alleen de agent-token op (één per klant). De token geeft beperkte toegang tot de kluis van die klant. Een inbreuk op je RMM-console stelt tokens bloot, geen inloggegevens — en elke token is IP-whitelisted naar het eindpunt waarop deze is geïmplementeerd.

Beperkt per klant

Elke klantkluis heeft zijn eigen agent-token. Toegang voor technici wordt beheerd door scope, niet door "wie kan inloggen op de RMM-console."

Gecontroleerd per script

Elke toegang tot inloggegevens wordt gelogd — welk script, welk eindpunt, welke inloggegevens, wanneer. Je klanten kunnen het audit trail zien. Je kunt bewijzen wie toegang had tot wat.

Intrekken met één klik

Klant vertrekt? Trek hun agent-token in. Elk eindpunt stopt onmiddellijk met het oplossen van inloggegevens. Geen wachtwoorden om te roteren, geen aangepaste eigenschappen om te wissen op 200 machines.

Stop met het opslaan van inloggegevens in je RMM.

Eén CLI. Elke klant. Alle inloggegevens beperkt, gecontroleerd en intrekbaar.