Alat MSP
RMM Anda sudah melakukan panggilan API. Clavitor membuatnya aman.
Teknisi Anda menggunakan Datto, N-able, dan ConnectWise setiap hari. Setiap skrip, setiap otomatisasi, setiap tugas terjadwal membutuhkan kredensial. Saat ini, kredensial tersebut tersimpan dalam variabel skrip, bidang kustom, atau brankas bersama yang dapat dibaca oleh siapa saja. Proksi dan CLI Clavitor mengubah hal tersebut tanpa mengubah alur kerja Anda.
Pola proksi untuk RMM
Atur HTTPS_PROXY pada endpoint dan skrip Anda yang sudah ada akan berfungsi tanpa perubahan. Proksi mencegat permintaan HTTPS keluar, meresolusi referensi clavitor:// di header, dan menginjeksikan kredensial asli. Skrip Anda tidak pernah melihat rahasia tersebut. Konsol RMM Anda tidak pernah mencatatnya.
# 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 adalah bahasa sehari-hari MSP. CLI dan proksi berfungsi secara native.
CLI — nilai tunggal
# 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 — template konfigurasi
# 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 — injeksi transparan
$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 menyisipkan placeholder bidang kustom ke dalam parameter skrip saat runtime, menggunakan sintaks {[Atera.<level>.CustomField.<name>]}. Berikan token Clavitor ke skrip instalasi satu kali sebagai parameter; skrip selanjutnya akan memanggil CLI pada endpoint.
Instal melalui profil Otomatisasi IT
Di pustaka skrip Atera, buat skrip PowerShell Install Clavitor dengan satu parameter. Dalam profil Otomatisasi IT yang menjalankannya, panggil dengan placeholder bidang tingkat pelanggan:
Install-Clavitor.ps1 -Token "{[Atera.Customer.CustomField.ClavitorToken]}"Atera menyisipkan nilai sebelum agen membaca daftar argumennya. Skripnya:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Ambil kredensial saat runtime
Setelah endpoint terdaftar, setiap skrip Atera selanjutnya akan membaca kredensial dari brankas — Atera hanya menyimpan slot 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 menyisipkan makro Extra Data Field (EDF) ke dalam argumen langkah skrip menggunakan sintaks {%^el:FieldName^%} (EDF tingkat komputer). CLI diinstal melalui skrip Automate yang mengunduh file biner dan memanggil langkah PowerShell dengan token yang diberikan sebagai parameter — nilai EDF diganti sebelum langkah skrip dieksekusi.
Skrip Automate: instal
Di editor skrip Automate, buat skrip dengan dua langkah:
Step 1 File Download from LTShare clavitor-cli.exe → %windir%\Temp\
Step 2 Shell Execute (PowerShell) Install-Clavitor.ps1 -Token "{%^el:ClavitorToken^%}"Makro {%^el:ClavitorToken^%} diganti dengan nilai EDF tingkat komputer sebelum langkah PowerShell berjalan. Pastikan token kurang dari 255 karakter agar tetap dalam batas substitusi LabReplace. Skrip itu sendiri:
# Install-Clavitor.ps1 param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Skrip Automate: rotasi kredensial domain
Skrip selanjutnya membaca dari brankas dan menulis status kembali ke EDF untuk dasbor:
$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 mengekspos variabel situs dan global ke komponen PowerShell sebagai variabel lingkungan dengan awalan $env:; bidang yang ditentukan pengguna (UDF) diekspos sebagai $env:UDF_1 hingga $env:UDF_30. Satu komponen menginstal CLI; semua komponen selanjutnya membaca dari brankas.
Komponen: instal dan inisialisasi
Tentukan variabel situs ClavitorToken di konsol Datto — ini muncul di dalam komponen sebagai $env:ClavitorToken:
# Datto RMM component: bootstrap Clavitor CLI # Site variable "ClavitorToken" → $env:ClavitorToken at runtime $env:ClavitorToken | clavitor-cli init
Komponen: monitor API melalui proksi
Komponen selanjutnya menulis referensi clavitor:// di header permintaan — proksi meresolusinya di host. Kredensial tidak pernah masuk ke memori skrip atau log 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
Prosedur agen VSA menyisipkan makro #variable# ke dalam argumen PowerShell saat runtime, lalu mengeksekusi skrip melalui keluarga langkah executePowershell (executePowerShell64BitSystem, dll.). Bidang Kustom pada catatan agen menyimpan token Clavitor; prosedur meneruskannya ke inisialisasi melalui stdin.
Prosedur agen: instal
Tambahkan Bidang Kustom agen ClavitorToken (Audit → Edit Profil → Bidang Kustom), lalu buat prosedur dengan dua langkah:
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#"Makro #vAgentConfiguration.ClavitorToken# diganti dengan nilai Bidang Kustom sebelum VSA mengeksekusi perintah — token tidak muncul dalam riwayat prosedur VSA.
Prosedur agen: rotasi kredensial istimewa
Setelah diinisialisasi, prosedur selanjutnya akan membaca dari brankas:
# 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
Unit otomatisasi adalah AMP (Automation Manager Policy) — kebijakan berbasis PowerShell yang dibuat di Automation Manager. Properti Kustom pada tingkat organisasi, pelanggan, atau situs dapat diteruskan ke objek Run PowerShell Script sebagai Parameter Input.
AMP: instal dengan Properti Kustom sebagai input
Tambahkan Properti Kustom ClavitorToken pada tingkat pelanggan (Administrasi → Properti Kustom). Di Automation Manager, buat AMP yang objek Run PowerShell Script-nya mengikat Parameter Input Token ke Properti Kustom tersebut. Skripnya:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Nilai Properti Kustom masuk sebagai $Token. Nilai tersebut tidak pernah muncul di XML yang diekspor AMP atau di log audit N-central.
Repositori Skrip: ambil kredensial saat runtime
Untuk skrip ad-hoc yang didistribusikan melalui Repositori Skrip (Konfigurasi → Repositori → Skrip/Perangkat Lunak), endpoint sudah diinisialisasi — skrip hanya memanggil 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 (sebelumnya SolarWinds RMM) menjalankan mesin Automation Manager yang sama dengan N-central, ditambah Script Manager untuk tipe skrip .ps1, AMP, batch, dan lainnya. Polanya sama seperti N-central: AMP dengan Parameter Input untuk token, lalu semua hal lainnya diresolusi saat runtime.
Script Manager: instal melalui Tugas Otomatis
Unggah Install-Clavitor.ps1 ke Pengaturan → Script Manager dengan parameter untuk token. Lampirkan sebagai Tugas Otomatis pada endpoint; berikan token sebagai argumen skrip dari pengaturan tingkat perangkat:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Tugas Otomatis: pencadangan terjadwal dengan kredensial brankas
Setelah diinisialisasi, tugas terjadwal mengambil kredensial dari brankas. Output standar apa pun hingga 255 karakter akan muncul kembali ke dasbor 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
Skrip NinjaOne yang berjalan di endpoint dapat membaca dan menulis bidang kustom melalui cmdlet bawaan: Ninja-Property-Get <name> mengembalikan nilai, Ninja-Property-Set <name> <value> menuliskannya kembali. Simpan token Clavitor di bidang kustom organisasi (tipe Secure sehingga hanya dapat ditulis dari konsol); skrip instalasi membacanya sekali.
Skrip instalasi: baca token dari bidang kustom
Di Administrasi → Pustaka → Bidang Kustom, tambahkan bidang organisasi clavitorToken bertipe Secure. Kemudian jalankan skrip instalasi:
$token = Ninja-Property-Get clavitorToken $token | clavitor-cli init Remove-Variable token
Tindakan Kustom: panggilan API melalui proksi
Setelah diinstal, otomatisasi memanggil API eksternal melalui proksi — kredensial tidak pernah disalin ke variabel skrip:
$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 mengekspos bidang kustom aset dan tag sebagai variabel skrip Platform menggunakan sintaks kurung ganda {{asset_custom_field_<name>}}. Tentukan variabel skrip bertipe Platform dan ikat ke bidang tersebut — Syncro menyisipkan nilai ke dalam parameter PowerShell saat skrip dijalankan.
Skrip Syncro: instal
Buat bidang kustom aset clavitor_token. Di editor skrip, deklarasikan variabel Token bertipe Platform yang terikat ke {{asset_custom_field_clavitor_token}}; berikan ke parameter PowerShell di badan skrip:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Panel Bantuan Cepat di bagian bawah setiap editor skrip Syncro mencantumkan setiap variabel platform yang tersedia untuk konteks aset, pelanggan, dan tiket.
Skrip Syncro: sambungkan VPN dengan kredensial brankas
Setelah instalasi, skrip dan Otomatisasi Perbaikan mengambil kredensial dari brankas dan menggunakannya secara langsung:
$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
Mengapa ini penting bagi MSP
Setiap platform RMM menyimpan kredensial di suatu tempat — properti kustom, variabel situs, bidang data tambahan, parameter skrip. Setiap teknisi dengan akses konsol dapat melihatnya. Setiap pelanggaran keamanan pada konsol RMM Anda membocorkan kredensial setiap klien.
Clavitor memindahkan kredensial keluar dari RMM. RMM hanya menyimpan token agen (satu per klien). Token memberikan akses terlingkup ke brankas klien tersebut. Pelanggaran keamanan pada konsol RMM Anda membocorkan token, bukan kredensial — dan setiap token dibatasi daftar putih IP pada endpoint tempat penerapannya.
Terlingkup per klien
Setiap brankas klien memiliki token agen sendiri. Akses teknisi dikontrol oleh cakupan, bukan oleh "siapa yang dapat masuk ke konsol RMM."
Diaudit per skrip
Setiap akses kredensial dicatat — skrip mana, endpoint mana, kredensial mana, kapan. Klien Anda dapat melihat jejak audit. Anda dapat membuktikan siapa yang mengakses apa.
Dicabut dalam satu klik
Klien keluar? Cabut token agen mereka. Setiap endpoint berhenti mengambil kredensial segera. Tidak ada kata sandi untuk dirotasi, tidak ada properti kustom untuk dihapus di 200 mesin.
Berhenti menyimpan kredensial di RMM Anda.
Satu CLI. Setiap klien. Setiap kredensial terlingkup, diaudit, dan dapat dicabut.