· Henning Scholand · Proxmox  · 2 Min. Lesezeit

RBAC in Proxmox — Benutzer, Rollen und Active Directory Integration

Proxmox hat ein vollständiges RBAC-System. Wie Realms, Rollen und Berechtigungspfade funktionieren, Active Directory angebunden wird und API-Tokens sicher vergeben werden.

Proxmox hat ein vollständiges RBAC-System. Wie Realms, Rollen und Berechtigungspfade funktionieren, Active Directory angebunden wird und API-Tokens sicher vergeben werden.

Proxmox bringt ein vollständiges Role-Based Access Control System mit. Wer trotzdem alle Admins als root@pam betreibt, verschenkt Auditierbarkeit und verletzt das Least-Privilege-Prinzip.

Das Rechte-Modell verstehen

Proxmox kombiniert drei Dimensionen:

  • User/Group: Wer darf
  • Role: Was darf er (Bündel von Privileges)
  • Path: Worauf darf er es (z.B. /vms/101 oder /storage/local-lvm)
pveum acl modify <path> --roles <role> --users <user> --groups <group>

Built-in Rollen

RolleTypischer Einsatz
AdministratorVoller Zugriff — sparsam vergeben
PVEVMAdminVMs verwalten, kein Node-Zugriff
PVEVMUserVMs starten/stoppen, Konsole
PVEDatastoreAdminStorage verwalten
PVEAuditorRead-only überall

Custom Role erstellen

# Rolle für Helpdesk: VMs starten/stoppen, Konsole öffnen, kein Löschen
pveum role add Helpdesk \
  --privs "VM.PowerMgmt,VM.Console,VM.Audit"

# Verfügbare Privileges auflisten
pveum role list
pveum privlist

Lokale User anlegen und Rechte vergeben

# User anlegen (pve-Realm = lokale Proxmox-Authentifizierung)
pveum user add max.mustermann@pve \
  --comment "IT-Admin" \
  --email max@example.com \
  --password SecurePass123!

# Zugriff nur auf VMs im Pool "Kunden-A"
pveum pool add Kunden-A
pveum pool modify Kunden-A --vms 100,101,102
pveum acl modify /pool/Kunden-A \
  --roles PVEVMAdmin \
  --users max.mustermann@pve

Active Directory / LDAP anbinden

# LDAP-Realm anlegen (Active Directory)
pveum realm add ad-corp \
  --type ad \
  --domain corp.example.com \
  --server1 10.0.1.10 \
  --server2 10.0.1.11 \
  --port 636 \
  --secure 1 \
  --default 0 \
  --comment "Corporate AD"

# Realm testen und User synchronisieren
pveum realm sync ad-corp --enable-new 1 --purge 0 --scope users

AD-Benutzer nach dem Sync:

# AD-Benutzer anzeigen
pveum user list | grep @ad-corp

# Gruppe aus AD mit Rolle verknüpfen
pveum group add admins-ad --comment "AD Admins Gruppe"
pveum acl modify / --roles Administrator --groups admins-ad

# Gruppen aus AD synchronisieren
pveum realm sync ad-corp --scope groups

API-Tokens mit Least-Privilege

Für Automation (Terraform, Ansible, Monitoring) niemals Root-Credentials verwenden:

# Token für Terraform anlegen
pveum user add terraform@pve --comment "Terraform Automation"
pveum role add TerraformRole \
  --privs "VM.Allocate,VM.Clone,VM.Config.CDROM,VM.Config.CPU,VM.Config.Cloudinit,VM.Config.Disk,VM.Config.HWType,VM.Config.Memory,VM.Config.Network,VM.Config.Options,VM.Monitor,VM.Audit,VM.PowerMgmt,Datastore.AllocateSpace,Datastore.Audit"
pveum acl modify / --roles TerraformRole --users terraform@pve

# API-Token erstellen (nur einmal angezeigt!)
pveum user token add terraform@pve terraform-token \
  --privsep 1 \
  --comment "Terraform CI/CD"
# Output: terraform@pve!terraform-token=<uuid>

2FA für alle erzwingen

# TFA-Pflicht für den lokalen pve-Realm
pveum realm modify pve --tfa type=totp

# Alle User ohne TFA anzeigen
pveum user list -o json | python3 -c "
import json,sys
users = json.load(sys.stdin)['data']
for u in users:
    if not u.get('keys'):
        print(u['userid'], '— kein TFA!')
"

Im nächsten Block geht es um Backup und Disaster Recovery — aufbauend auf der gesicherten Umgebung aus den ersten sechs Artikeln.

Zum Blog

Ähnliche Artikel

Alle Artikel »