MSP Tools
Ihr RMM führt bereits API-Aufrufe aus.
Clavitor macht diese sicher.
Ihre Techniker nutzen täglich Datto, N-able und ConnectWise. Jedes Skript, jede Automatisierung und jeder geplante Task benötigt Anmeldedaten. Heute liegen diese in Skriptvariablen, benutzerdefinierten Feldern oder einem gemeinsamen Tresor, auf den jeder Zugriff hat. Der Clavitor-Proxy und das CLI ändern das, ohne Ihre Workflows zu verändern.
Das Proxy-Muster für RMM
Setzen Sie HTTPS_PROXY auf dem Endpunkt, und Ihre bestehenden Skripte funktionieren unverändert. Der Proxy fängt ausgehende HTTPS-Anfragen ab, löst clavitor://-Referenzen in den Headern auf und injiziert die echten Anmeldedaten. Ihr Skript sieht das Geheimnis nie. Ihre RMM-Konsole protokolliert es nie.
# Auf dem verwalteten Endpunkt — einmalige Einrichtung
$env:HTTPS_PROXY = "http://localhost:1983"
# Ihre bestehenden Automatisierungsskripte funktionieren unverändert
# Der Proxy löst clavitor://-Referenzen in den Request-Headern auf
Invoke-RestMethod -Uri "https://api.openai.com/v1/models" `
-Headers @{ Authorization = "Bearer clavitor://OpenAI/key" }PowerShell
PowerShell ist die tägliche Sprache eines MSP. Sowohl das CLI als auch der Proxy arbeiten nativ.
CLI — Einzelwerte
# Auflösen, verwenden, bereinigen — die Anmeldedaten existieren nur für eine Anweisung $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 — Konfigurationsvorlagen
# Vorlage mit clavitor://-Referenzen (sicher in Ihrem RMM zu speichern) clavitor-cli render monitoring-config.json | ` Set-Content -Path "C:\ProgramData\Monitor\config.json"
Proxy — Transparente Injektion
$env:HTTPS_PROXY = "http://localhost:1983"
# Jedes Invoke-RestMethod und Invoke-WebRequest löst nun clavitor:// auf
Invoke-RestMethod -Uri "https://api.datto.com/v1/devices" `
-Headers @{ Authorization = "Bearer clavitor://Datto API/key" }Atera
Atera ersetzt Platzhalter in benutzerdefinierten Feldern durch Skriptparameter zur Laufzeit unter Verwendung der {[Atera.<level>.CustomField.<name>]}-Syntax. Übergeben Sie das Clavitor-Token als Parameter an ein einmaliges Installationsskript; spätere Skripte rufen das CLI auf dem Endpunkt auf.
Installation via IT-Automatisierungsprofil
Erstellen Sie in der Atera-Skriptbibliothek ein PowerShell-Skript Install Clavitor mit einem Parameter. Rufen Sie es im IT-Automatisierungsprofil, das es ausführt, mit dem Platzhalter für das Kundenfeld auf:
Install-Clavitor.ps1 -Token "{[Atera.Customer.CustomField.ClavitorToken]}"Atera ersetzt den Wert, bevor der Agent seine Argumentliste liest. Das Skript:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Anmeldedaten zur Laufzeit auflösen
Sobald der Endpunkt registriert ist, lesen alle nachfolgenden Atera-Skripte Anmeldedaten aus dem Tresor — Atera hält nur den Token-Slot vor:
$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 ersetzt Extra Data Field (EDF) Makros in Skriptschritt-Argumenten unter Verwendung der {%^el:FieldName^%}-Syntax (EDF auf Computerebene). Das CLI wird über ein Automate-Skript installiert, das die Binärdatei herunterlädt und einen PowerShell-Schritt aufruft, wobei der Token als Parameter übergeben wird — der EDF-Wert wird ersetzt, bevor der Skriptschritt ausgeführt wird.
Automate-Skript: Installation
Erstellen Sie im Automate-Skripteditor das Skript mit zwei Schritten:
Schritt 1 Datei-Download von LTShare clavitor-cli.exe → %windir%\Temp\
Schritt 2 Shell Execute (PowerShell) Install-Clavitor.ps1 -Token "{%^el:ClavitorToken^%}"Das {%^el:ClavitorToken^%}-Makro wird durch den EDF-Wert auf Computerebene ersetzt, bevor der PowerShell-Schritt ausgeführt wird. Halten Sie Token unter 255 Zeichen, um innerhalb des Ersetzungslimits von LabReplace zu bleiben. Das Skript selbst:
# Install-Clavitor.ps1 param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Automate-Skript: Ein Domänen-Passwort rotieren
Nachfolgende Skripte lesen aus dem Tresor und schreiben einen Status zurück in das EDF für das Dashboard:
$cred = clavitor-cli get "Client-Delta/Domain Admin" --field password
$secure = ConvertTo-SecureString $cred -AsPlainText -Force
Reset-ComputerMachinePassword `
-Credential (New-Object PSCredential("administrator", $secure))
# Zeitstempel via Automate-Schritt "ExtraData Set Value" an EDF "LastRotation" zurückgeben
Write-Output (Get-Date -Format o)
Remove-Variable cred, secureDatto RMM
Datto RMM stellt Site- und globale Variablen als Umgebungsvariablen mit dem Präfix $env: für PowerShell-Komponenten bereit; benutzerdefinierte Felder (UDFs) werden als $env:UDF_1 bis $env:UDF_30 bereitgestellt. Eine Komponente installiert das CLI; alles Folgende liest aus dem Tresor.
Komponente: Installation und Initialisierung
Definieren Sie eine Site-Variable ClavitorToken in der Datto-Konsole — sie erscheint innerhalb der Komponente als $env:ClavitorToken:
# Datto RMM Komponente: Clavitor CLI Bootstrapping # Site-Variable "ClavitorToken" → $env:ClavitorToken zur Laufzeit $env:ClavitorToken | clavitor-cli init
Komponente: API-Monitor via Proxy
Nachfolgende Komponenten schreiben clavitor://-Referenzen in die Request-Header — der Proxy löst diese auf dem Host auf. Die Anmeldedaten gelangen nie in den Speicher des Skripts oder in die Datto-Protokolle:
# Geplanter Monitor — läuft alle 15 Minuten
$env:HTTPS_PROXY = "http://localhost:1983"
$response = Invoke-RestMethod -Uri "https://api.client.com/v1/status" `
-Headers @{ Authorization = "Bearer clavitor://Client-Bravo/Monitoring API" }
# Statuscode zurück in UDF_5 für das Datto-Dashboard schreiben
New-ItemProperty -Path "HKLM:\SOFTWARE\CentraStage" `
-Name "Custom5" -Value $response.status -Force | Out-NullKaseya VSA
VSA-Agent-Prozeduren ersetzen #variable#-Makros zur Laufzeit durch PowerShell-Argumente und führen das Skript dann über die executePowershell-Schrittfamilie aus (executePowerShell64BitSystem, etc.). Ein benutzerdefiniertes Feld im Agenten-Datensatz hält den Clavitor-Token; die Prozedur übergibt ihn via stdin an den init-Befehl.
Agent-Prozedur: Installation
Fügen Sie ein Agent-Custom-Field ClavitorToken hinzu (Audit → Edit Profile → Custom Fields) und erstellen Sie dann eine Prozedur mit zwei Schritten:
Schritt 1 Datei von VSA-Server abrufen clavitor-cli.exe → C:\Program Files\Clavitor\
Schritt 2 PowerShell ausführen (64 Sys) "C:\Program Files\Clavitor\clavitor-cli.exe init" \
stdin = "#vAgentConfiguration.ClavitorToken#"Das #vAgentConfiguration.ClavitorToken#-Makro wird durch den Wert des benutzerdefinierten Feldes ersetzt, bevor VSA den Befehl ausführt — der Token erscheint nicht in der VSA-Prozedurhistorie.
Agent-Prozedur: Ein privilegiertes Passwort rotieren
Sobald initialisiert, liest jede spätere Prozedur aus dem Tresor:
# Wird via executePowerShell64BitSystem ausgeführt $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
Die Einheit der Automatisierung ist eine AMP (Automation Manager Policy) — eine PowerShell-basierte Richtlinie, die im Automation Manager erstellt wird. Benutzerdefinierte Eigenschaften auf Organisations-, Kunden- oder Site-Ebene können als Eingabeparameter an ein Run PowerShell Script-Objekt übergeben werden.
AMP: Installation mit Custom Property als Eingabe
Fügen Sie eine Custom Property ClavitorToken auf Kundenebene hinzu (Administration → Custom Properties). Erstellen Sie im Automation Manager eine AMP, deren Run PowerShell Script-Objekt den Eingabeparameter Token an diese Custom Property bindet. Das Skript:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Der Wert der Custom Property fließt als $Token ein. Er erscheint nie im exportierten XML der AMP oder im Audit-Log von N-central.
Skript-Repository: Anmeldedaten zur Laufzeit abrufen
Für Ad-hoc-Skripte, die über das Skript-Repository (Configuration → Repository → Scripts/Software) bereitgestellt werden, ist der Endpunkt bereits initialisiert — das Skript ruft lediglich das CLI auf:
$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 (ehemals SolarWinds RMM) nutzt dieselbe Automation Manager Engine wie N-central, zusätzlich zu einem Script Manager für .ps1, AMP, Batch und andere Skripttypen. Das Muster spiegelt N-central wider: Eine AMP mit einem Eingabeparameter für den Token, danach wird alles zur Laufzeit aufgelöst.
Script Manager: Installation via Automated Task
Laden Sie eine Install-Clavitor.ps1 unter Settings → Script Manager mit einem Parameter für den Token hoch. Binden Sie diese als Automated Task an den Endpunkt; übergeben Sie den Token als Skriptargument aus der Einstellung auf Geräteebene:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Automated Task: Geplantes Backup mit Tresor-Anmeldedaten
Sobald initialisiert, ziehen geplante Tasks Anmeldedaten aus dem Tresor. Jeder Standard-Output bis zu 255 Zeichen wird an das N-sight-Dashboard zurückgegeben:
$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-Skripte, die auf dem Endpunkt laufen, können benutzerdefinierte Felder über integrierte Cmdlets lesen und schreiben: Ninja-Property-Get <name> gibt den Wert zurück, Ninja-Property-Set <name> <value> schreibt ihn zurück. Speichern Sie den Clavitor-Token in einem benutzerdefinierten Feld der Organisation (Typ Secure, damit er von der Konsole aus nur beschreibbar ist); das Installationsskript liest ihn einmalig aus.
Installationsskript: Token aus benutzerdefiniertem Feld lesen
Fügen Sie unter Administration → Library → Custom Fields ein Organisationsfeld clavitorToken vom Typ Secure hinzu. Führen Sie dann ein Installationsskript aus:
$token = Ninja-Property-Get clavitorToken $token | clavitor-cli init Remove-Variable token
Custom Action: API-Aufruf über den Proxy
Nach der Installation rufen Automatisierungen externe APIs über den Proxy auf — die Anmeldedaten werden niemals in eine Skriptvariable kopiert:
$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" }
# Ergebnis an ein Geräte-Custom-Field für das Dashboard zurückgeben
Ninja-Property-Set lastApiStatus $response.statusSyncro
Syncro stellt Asset-Custom-Fields und Tags als Platform-Skriptvariablen unter Verwendung der {{asset_custom_field_<name>}}-Syntax bereit. Definieren Sie eine Skriptvariable vom Typ Platform und binden Sie diese an das Feld — Syncro ersetzt den Wert zur Laufzeit des Skripts durch einen PowerShell-Parameter.
Syncro-Skript: Installation
Erstellen Sie ein Asset-Custom-Field clavitor_token. Deklarieren Sie im Skripteditor eine Variable Token vom Typ Platform, die an {{asset_custom_field_clavitor_token}} gebunden ist; übergeben Sie diese an einen PowerShell-Parameter im Skriptkörper:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Das Quick-Help-Panel am unteren Rand jedes Syncro-Skripteditors listet alle verfügbaren Plattformvariablen für den Asset-, Kunden- und Ticket-Kontext auf.
Syncro-Skript: VPN-Verbindung mit Tresor-Anmeldedaten herstellen
Nach der Installation lösen Skripte und Automated Remediations Anmeldedaten aus dem Tresor auf und verwenden diese 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 # Status an das Asset für das Syncro-Dashboard zurückschreiben Rmm-Alert -Category "vpn-status" -Body "Golf connected $(Get-Date -Format o)" Remove-Variable pass, secure
Warum das für MSPs wichtig ist
Jede RMM-Plattform speichert Anmeldedaten irgendwo — in benutzerdefinierten Eigenschaften, Site-Variablen, Extra Data Fields oder Skriptparametern. Jeder Techniker mit Zugriff auf die Konsole kann sie sehen. Jede Sicherheitsverletzung Ihrer RMM-Konsole legt die Anmeldedaten jedes Kunden offen.
Clavitor verlagert die Anmeldedaten aus dem RMM. Das RMM speichert nur den Agenten-Token (einer pro Kunde). Der Token gewährt einen eingeschränkten Zugriff auf den Tresor dieses Kunden. Eine Sicherheitsverletzung Ihrer RMM-Konsole legt Token offen, keine Anmeldedaten — und jeder Token ist per IP-Whitelist auf den Endpunkt beschränkt, auf dem er bereitgestellt wurde.
Eingeschränkt pro Kunde
Jeder Kunden-Tresor hat seinen eigenen Agenten-Token. Der Zugriff für Techniker wird durch den Umfang (Scope) gesteuert, nicht durch die Frage, "wer sich in die RMM-Konsole einloggen kann".
Protokolliert pro Skript
Jeder Zugriff auf Anmeldedaten wird protokolliert — welches Skript, welcher Endpunkt, welche Anmeldedaten, wann. Ihre Kunden können den Audit-Trail einsehen. Sie können beweisen, wer worauf zugegriffen hat.
Widerruf mit einem Klick
Kunde kündigt? Widerrufen Sie dessen Agenten-Token. Jeder Endpunkt hört sofort auf, Anmeldedaten aufzulösen. Keine Passwörter zum Rotieren, keine benutzerdefinierten Eigenschaften, die auf 200 Maschinen gelöscht werden müssen.
Hören Sie auf, Anmeldedaten in Ihrem RMM zu speichern.
Ein CLI. Jeder Kunde. Alle Anmeldedaten eingeschränkt, protokolliert und widerrufbar.