Release v1.3.87 — VM.Monitor gibt es in Proxmox 9 nicht mehr
Die Übernahme des ersten PVE-9-Hosts blieb in CreateAutomationToken stehen: `pveum role modify` lehnt die GANZE Privilegienliste ab, sobald ein einziger Name darin unbekannt ist — "invalid privilege 'VM.Monitor'". Die Liste stammt aus der PVE-8-Zeit. Ersatzlos gestrichen, nicht ersetzt: VM.Monitor gab Zugriff auf den QEMU-Monitor, und den benutzt CluPilot nirgends. Geprüft, nicht vermutet — die einzigen Treffer auf "monitor" im Provisioning betreffen Uptime Kuma. Auf PVE 8 fehlt damit ein Recht, das dort ohnehin niemand gebraucht hat; eine Liste passt weiterhin auf beide Fassungen. Dazu ein Test, der die angeforderten Namen gegen die gültigen hält — abgelesen aus der Administrator-Rolle eines echten PVE 9. Die Liste ist die Verabredung zwischen CluPilot und jedem Host, den es je übernimmt; sie hier zu prüfen ist billiger als der Abbruch auf einer Maschine, die schon halb eingerichtet ist. 2245 Tests grün. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>main v1.3.87
parent
4f04d9d29d
commit
97ac6c04e8
|
|
@ -449,8 +449,22 @@ return [
|
|||
| covers the datacenter firewall if that ever moves off SSH and onto the
|
||||
| API. It is granted on `/` because both endpoints check `/` and nothing
|
||||
| narrower would satisfy them.
|
||||
|
|
||||
| `VM.Monitor` stand hier und ist am 1. August 2026 herausgeflogen: PVE 9
|
||||
| kennt es nicht mehr, und `pveum role modify` lehnt die GANZE Liste ab,
|
||||
| sobald ein Name darin unbekannt ist — „invalid privilege 'VM.Monitor'".
|
||||
| Die Übernahme des ersten PVE-9-Hosts blieb damit in
|
||||
| CreateAutomationToken stehen, fünf Wiederholungen lang.
|
||||
|
|
||||
| Ersatzlos gestrichen, nicht ersetzt: es gab Zugriff auf den
|
||||
| QEMU-Monitor, und den benutzt CluPilot nirgends — geprüft, nicht
|
||||
| vermutet. Auf PVE 8 fehlt damit ein Recht, das dort ohnehin niemand
|
||||
| gebraucht hat, also passt eine Liste weiterhin auf beide Fassungen.
|
||||
|
|
||||
| Wenn hier je wieder etwas dazukommt: die gültigen Namen stehen auf dem
|
||||
| Host selbst, in der Administrator-Rolle aus `pveum role list`.
|
||||
*/
|
||||
'role_privs' => 'VM.Allocate,VM.Clone,VM.Config.Disk,VM.Config.CPU,VM.Config.Memory,VM.Config.Network,VM.Config.Options,VM.Config.Cloudinit,VM.PowerMgmt,VM.Monitor,VM.Audit,VM.Backup,VM.GuestAgent.Audit,VM.GuestAgent.Unrestricted,Datastore.AllocateSpace,Datastore.Audit,Sys.Audit,Sys.Modify',
|
||||
'role_privs' => 'VM.Allocate,VM.Clone,VM.Config.Disk,VM.Config.CPU,VM.Config.Memory,VM.Config.Network,VM.Config.Options,VM.Config.Cloudinit,VM.PowerMgmt,VM.Audit,VM.Backup,VM.GuestAgent.Audit,VM.GuestAgent.Unrestricted,Datastore.AllocateSpace,Datastore.Audit,Sys.Audit,Sys.Modify',
|
||||
'user' => 'automation@pve',
|
||||
'token_name' => 'clupilot',
|
||||
],
|
||||
|
|
|
|||
|
|
@ -1342,3 +1342,32 @@ it('names the reason pveum gave instead of only that it failed', function () {
|
|||
// in einer Ereigniszeile.
|
||||
->and($result->reason)->not->toContain('USAGE');
|
||||
});
|
||||
|
||||
it('asks only for privileges Proxmox 9 still knows', function () {
|
||||
// `pveum role modify` lehnt die GANZE Liste ab, sobald ein Name darin
|
||||
// unbekannt ist. `VM.Monitor` gibt es in PVE 9 nicht mehr, und die
|
||||
// Übernahme des ersten PVE-9-Hosts blieb daran hängen — fünf
|
||||
// Wiederholungen mit einer Meldung, die den Namen nicht nannte.
|
||||
//
|
||||
// Die Liste ist die Verabredung zwischen CluPilot und jedem Host, den es je
|
||||
// übernimmt. Sie gegen die gültigen Namen zu halten, ist billiger als der
|
||||
// Abbruch auf einer Maschine, die schon halb eingerichtet ist.
|
||||
$gueltig = [
|
||||
'Datastore.Allocate', 'Datastore.AllocateSpace', 'Datastore.AllocateTemplate', 'Datastore.Audit',
|
||||
'Group.Allocate', 'Mapping.Audit', 'Mapping.Modify', 'Mapping.Use', 'Permissions.Modify',
|
||||
'Pool.Allocate', 'Pool.Audit', 'Realm.Allocate', 'Realm.AllocateUser',
|
||||
'SDN.Allocate', 'SDN.Audit', 'SDN.Use',
|
||||
'Sys.AccessNetwork', 'Sys.Audit', 'Sys.Console', 'Sys.Incoming', 'Sys.Modify',
|
||||
'Sys.PowerMgmt', 'Sys.Syslog', 'User.Modify',
|
||||
'VM.Allocate', 'VM.Audit', 'VM.Backup', '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.Console', 'VM.GuestAgent.Audit', 'VM.GuestAgent.FileRead',
|
||||
'VM.GuestAgent.FileSystemMgmt', 'VM.GuestAgent.FileWrite', 'VM.GuestAgent.Unrestricted',
|
||||
'VM.Migrate', 'VM.PowerMgmt', 'VM.Replicate', 'VM.Snapshot', 'VM.Snapshot.Rollback',
|
||||
];
|
||||
|
||||
$angefordert = explode(',', (string) config('provisioning.proxmox.role_privs'));
|
||||
|
||||
expect(array_diff($angefordert, $gueltig))->toBe([]);
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue