Proxmox hat eine sehr schöne Benutzerverwaltung und unterstützt mehrere Anmeldemethoden, wie zum Beispiel: Microsoft Active Directory, LDAP, Linux PAM oder der integrierte Proxmox VE authentication server. Die Rechte können Rollen/Benutzer basiert eingestellt und definiert werden.
Microsoft Active Directory:
Linux PAM standard authentication:
Anmerkung: Zuvor muss in der Shell (SSH) ein Benutzer mit „adduser“ erstellt werden (in meinem Beispiel: adduser test)!
Proxmox VE authentication server:
Diese Methode würde ich bevorzugen, sieht fast so aus wie die Linux PAM standard authentication und man muss nichts in der Shell (SSH) eintippen. Die Passwörter werden in der Datei „/etc/pve/priv/shadow.cfg“ SHA-256 verschlüsselt gespeichert.
Allgemeines / Begriffe und Definitionen:
Alle Einstellungen bzw. Daten der Benutzer (außer Passwörter) werden in der Datei „/etc/pve/user.cfg“ gespeichert, wie zum Beispiel: Vorname, Nachname, E-Mail Adresse, Ablaufdatum, aktiviert oder deaktiviert, Kommentar
Benutzer:
Ein Benutzer besteht bei Proxmox aus 2 teilen: Benutzerid @ Bereich. Der Hauptadmin Account lautet root@pam, alle System E-Mails werden an die E-Mail Adresse weitergeleitet!
Gruppen:
Es wird empfohlen die Zugriffberechtigungen über Gruppen abzuwickeln, jeder Benutzer kann in mehrere Gruppen zugewiesen werden.
Objekte und Pfade:
Zugriffsberechtigungen werden in Objekte und Pfade definiert. Beispiel Pfade: Virtuelle Maschine /vms/{vmid} (/vms/100) oder Speicher /storage/{storeid} (/storage/local)
Rechte:
Es gibt folgende Rechte:
- Permissions.Modify: Ändern der Einstellungen
- Sys.PowerMgmt: Node Energie Management (start, stop, reset, shutdown, …)
- Sys.Console: Konsolen Zugang zum Node
- Sys.Syslog: Syslog einsehbar
- Sys.Audit: zeigt den Node Status und die Konfiguration
- Pool.Allocate: erstellen, löschen und modifizieren eines Pools
Virtuell Maschinen bezogene Rechte:
- VM.Allocate: erstellen und löschen neuer Maschinen
- VM.Migrate: migrieren einer Virtuellen Maschine auf einen alternativ Server im Cluster
- VM.PowerMgmt: Energie Management (start, stop, reset, shutdown, …)
- VM.Console: Konsolen Zugang zur Virtuellen Maschine
- VM.Monitor: Zugang zum „Monitor“ einer Virtuellen Maschine (kvm)
- VM.Backup: backup/restore (wiederherstellen) der virtuellen Maschinen
- VM.Audit: zeigt die Konfiguration einer Virtuellen Maschine
- VM.Clone: klonen/kopieren der Virtuellen Maschine
- VM.Config.Disk: hinzufügen/modifizieren/löschen von Disks (Festplatten)
- VM.Config.CDROM: auswerfen/ändern CDROM
- VM.Config.CPU: modifizieren der CPU Konfigurationen
- VM.Config.Memory: modifizieren der Speicher Einstellungen
- VM.Config.Network: hinzufügen/modifizieren/löschen von Netzwerkkarten
- VM.Config.HWType: modifizieren von simulierter HW
- VM.Config.Options: modifizieren von sonstigen Einstellungen einer Virtuellen Maschine
Speicher bezogene Rechte:
- Datastore.Allocate: erstellen/löschen/modifizieren eines Datenspeichers (Storages)
- Datastore.AllocateSpace: Speicherplatz auf einem Datenspeicher zuweisen
- Datastore.AllocateTemplate: zuweisen/hochladen von templates und ISO-Images
- Datastore.Audit: anzeigen/durchsuchen eines Datenspeichers
Rollen:
Eine Rolle ist eine Art Liste von Rechten. Bei Proxmox gibt es vordefinierte Rollen, die die meisten Rechte abdeckt!
- Administrator: hat alle Rechte
- NoAccess: hat keine Rechte (wird benutzt um den Zugang zu verbieten)
- PVEAdmin: kann das meiste, hat aber keine Rechte um Systemeinstellungen, wie zum Beispiel: Sys.PowerMgmt, Sys.Modify, Realm.Allocate zu ändern.
- PVEAuditor: nur Lesezugriff
Weitere findet man im GUI (Webinterface) ..
Folgende Vererbungsregeln gibt es:
Rechte für individuellen eingestellten Benutzer überschreibt die Gruppenrechte
Rechte für Gruppen gelten, wenn der Benutzer Mitglied der Gruppe ist
Rechte die auf höherer Ebene gesetzt werden, überschreiben immer die geerbten Berechtigungen
Pools (Bereiche):
Pools können dazu verwendet werden um Gruppen bestimmte Virtuelle Maschinen oder Datenspeicher (Storages) zuzuweisen. Zum Beispiel der Benutzer „Hans“ soll den Pool 1 bekommen: /pool/pool1 <=> (/pool/{poolid})
Command Line Tool:
Die meisten Benutzer verwenden das GUI (Webinterface) für die Benutzerverwaltung, dennoch gibt es auch die Möglichkeit alles via Command Line einzustellen:
Um die Hilfe anzuzeigen:
pveum
Oder eine Detaillierte Hilfe für einen bestimmten Befehl:
pveum help useradd
Einen neuen Benutzer erstellen:
pveum useradd testuser@pve -comment 'Just a test'
Passwort setzen oder ändern (nicht für Realms):
pveum passwd testuser@pve
Benutzer deaktivieren bzw. sperren:
pveum usermod testuser@pve -enable 0
Neue Gruppe erstellen:
pveum groupadd testgroup
Neue Rolle erstellen:
pveum roleadd PVE_Power-only -privs "VM.PowerMgmt VM.Console"
Weitere Praxix Beispiele:
Eine Gruppe mit vollen Administrationsrechten erstellen (ohne den root Account)
Gruppe erstellen:
pveum groupadd admin -comment "System Administrators"
Rechte zuweisen:
pveum aclmod / -group admin -role Administrator
Benutzer der Gruppe zuweisen:
pveum usermod testuser@pve -group admin
Auditors:
Benutzern mit „PVEAuditor“ nur Lesezugriff geben.
Beispiel 1: Benutzer ‚joe@pve‘ erlauben, alles zu sehen:
pveum aclmod / -user joe@pve -role PVEAuditor
Beispiel 2: Benutzer ‚joe@pve‘ erlauben, alle Virtuellen Maschinen zu sehen:
pveum aclmod /vms -user joe@pve -role PVEAuditor
Delegierte Benutzerverwaltung:
Benutzer joe@pve die Rechte geben, andere Benutzer zu verwalten sprich ihm die Benutzerverwaltung zu erlauben:
pveum aclmod /access -user joe@pve -role PVEUserAdmin
Benutzer „joe@pve“ hat damit vollen Zugriff. Man kann dies auf bestimmte Bereiche und Gruppen limitieren, z.B. auf den Bereich (realm) „pve“, wenn dieser Benutzer der Gruppe „customers“ angehört:
pveum aclmod /access/realm/pve -user joe@pve -role PVEUserAdmin pveum aclmod /access/groups/customers -user joe@pve -role PVEUserAdmin
Hinweis: Der Benutzer kann dann zwar andere Benutzer komplett verwalten, aber nur für den Bereich „pve“ und Gruppe „customers“