docs: document admin and control role API scripts

- document admin role permissions and usage
  - clarify control role protobuf limitations

Signed-off-by: 21pages <sunboeasy@gmail.com>
This commit is contained in:
21pages committed 2026-09-02 18:27:31 +08:00
1 parent 694bb328c5
commit 91990cbf84
12 files changed
+1251 -14

No files matched your search

@@ -114,7 +114,7 @@ Um eine Strategie einem Gerät zuzuweisen, bewege die Maus auf die rechte Seite
## API-Token
Zuerst musst du zu **Settings → Tokens → Create** gehen und ein Token mit den erforderlichen Berechtigungen erstellen:
**Device, Audit Log, User, Group, Strategy, Address Book**.
**Device, Audit Log, User, Group, Strategy, Address Book, Admin Role, Control Role**.
Nach der Erstellung kannst du diese Tokens über die **Befehlszeile (Command Line)** oder das **Python CLI** verwenden, um Aktionen mit den entsprechenden Berechtigungen auszuführen.
@@ -284,6 +284,107 @@ oder
---
#### Verwaltung von Admin-Rollen (`admin-roles.py`)
Das Token muss zu einem vollständigen Administrator gehören und für **Admin Role** Lese- oder Lese-/Schreibberechtigung besitzen. Befehle zum Auflösen von Benutzernamen oder Auflisten von Rollenmitgliedern benötigen außerdem Leseberechtigung für **User**.
**Rollen anzeigen:**
```bash
./admin-roles.py --url <url> --token <token> view [--name <rollenname>] [--type global|individual|group]
./admin-roles.py --url <url> --token <token> view --guid <rollen-guid>
```
**Rolle erstellen:**
```bash
./admin-roles.py --url <url> --token <token> add \
--name "Support Admin" --type global \
--permissions "users.view,devices.view,audits.view" --note "Nur-Lese-Support"
./admin-roles.py --url <url> --token <token> add \
--name "Support Scope" --type group \
--permissions "users.view,devices.view,devices.enable_disable" \
--user-groups "Support" --device-groups "Servers" --unassigned
```
Der Rollentyp kann nach der Erstellung nicht geändert werden. `--permissions` akzeptiert kommagetrennte Berechtigungsnamen, Dezimal-IDs oder IDs mit dem Präfix `0x`; die Formate können gemischt werden. Beispielsweise entspricht `users.view,513,0x0203` dem Wert `257,513,515`. Der Server lehnt Berechtigungen ab, die für den gewählten Rollentyp ungültig sind.
Der Befehl `view` wandelt bekannte Berechtigungs-IDs zurück in die Namen der folgenden Tabelle. Eine dem Skript unbekannte ID bleibt als Zahl erhalten, damit von einem neueren Server hinzugefügte Berechtigungen nicht verborgen werden.
| Bereich | Berechtigungen | Gültige Rollentypen |
| --- | --- | --- |
| Benutzer | `users.view` (`257`); `users.create` (`259`); `users.invite` (`260`); `users.delete` (`261`); `users.enable_disable` (`262`); `users.edit_email` (`263`); `users.edit_password` (`264`); `users.edit_note` (`265`); `users.manage_2fa` (`266`); `users.force_logout` (`267`); `users.change_strategy` (`269`); `users.change_control_role` (`270`); `users.edit_display_name` (`271`) | `global`, `group` |
| Benutzer | `users.change_group` (`268`) | `global` |
| Geräte | `devices.view` (`513`) | `global`, `group` |
| Geräte | `devices.enable_disable` (`515`); `devices.delete` (`516`); `devices.edit_info` (`517`); `devices.change_strategy` (`520`) | `global`, `individual`, `group` |
| Geräte | `devices.assign_to_user` (`518`); `devices.change_group` (`519`) | `global` |
| Benutzergruppen | `user_groups.view` (`769`); `user_groups.edit` (`770`) | `global` |
| Gerätegruppen | `device_groups.view` (`1025`); `device_groups.edit` (`1026`); `device_groups.change_strategy` (`1027`) | `global` |
| Prüfprotokolle | `audits.view` (`1281`); `audits.edit` (`1282`) | `global`, `individual` |
| Strategien | `strategies.view` (`1537`); `strategies.edit` (`1538`) | `global` |
| Benutzerdefinierte Clients | `custom_clients.view` (`1793`); `custom_clients.edit` (`1794`) | `global` |
| Steuerungsrollen | `control_roles.view` (`2049`); `control_roles.edit` (`2050`) | `global` |
**Rolle aktualisieren oder löschen:**
```bash
./admin-roles.py --url <url> --token <token> update --name "Support Admin" \
[--new-name "Helpdesk Admin"] [--note "neue Notiz"] [--permissions "users.view,devices.view"] \
[--user-groups "Support"] [--device-groups "Servers"] [--unassigned|--no-unassigned]
./admin-roles.py --url <url> --token <token> delete --name "Support Admin"
```
Mit einem leeren Wert für `--note`, `--permissions`, `--user-groups` oder `--device-groups` wird das jeweilige Feld geleert, zum Beispiel mit `--permissions ""`.
**Rollenmitglieder verwalten:**
```bash
./admin-roles.py --url <url> --token <token> view-users --name "Support Admin"
./admin-roles.py --url <url> --token <token> add-users --name "Support Admin" --users "user1,user2"
./admin-roles.py --url <url> --token <token> remove-users --name "Support Admin" --users "user1,user2"
```
Rollen und Benutzer können auch per GUID angegeben werden. In `--users` dürfen Benutzernamen und GUIDs gemischt werden.
---
#### Verwaltung von Steuerungsrollen (`control-roles.py`)
Das Token benötigt für **Control Role** Lese- oder Lese-/Schreibberechtigung. Befehle zum Auflösen von Benutzernamen oder Auflisten von Rollenmitgliedern benötigen außerdem Leseberechtigung für **User**.
**Rollen anzeigen:**
```bash
./control-roles.py --url <url> --token <token> view [--name <rollenname>] [--status enabled|disabled]
./control-roles.py --url <url> --token <token> view --guid <rollen-guid>
```
**Rolle erstellen, aktualisieren, löschen, aktivieren oder deaktivieren:**
```bash
./control-roles.py --url <url> --token <token> add --name "Contractors" [--note "Eingeschränkter Zugriff"]
./control-roles.py --url <url> --token <token> update --name "Contractors" [--new-name "Vendors"] [--note "neue Notiz"]
./control-roles.py --url <url> --token <token> delete --name "Contractors"
./control-roles.py --url <url> --token <token> enable --name "Contractors"
./control-roles.py --url <url> --token <token> disable --name "Contractors"
```
Neue Rollen, die mit diesem Skript erstellt werden, enthalten keine Steuerungsberechtigungen. Konfigurieren Sie diese in der Webkonsole, bevor Sie Benutzer zuweisen. Steuerungsberechtigungen werden von diesem Skript weder verwaltet noch angezeigt.
**Rollenmitglieder verwalten:**
```bash
./control-roles.py --url <url> --token <token> view-users --name "Contractors"
./control-roles.py --url <url> --token <token> assign-users --name "Contractors" --users "user1,user2"
./control-roles.py --url <url> --token <token> remove-users --users "user1,user2"
```
Rollen und Benutzer können auch per GUID angegeben werden. `remove-users` entfernt die aktuelle Steuerungsrolle jedes Benutzers und verwendet daher weder `--name` noch `--guid`. Bei der reservierten Rolle `Default` zeigt `view-users` nur explizite Zuweisungen; Benutzer ohne zugewiesene Steuerungsrolle erben ebenfalls `Default`. Die Rolle `Not Logged` kann Benutzern nicht zugewiesen werden. Reservierte Rollen können nicht umbenannt, mit einer Notiz versehen oder gelöscht werden.
---
#### Gerätegruppenverwaltung (`device_group.py`)
**Hilfe anzeigen:**