Rollenverwaltung
BOMnipotent verwendet ein rollenbasiertes Zugriffsmodell (RBAC), bei dem Benutzer Rollen und Rollen Berechtigungen zugeordnet werden. Während Berechtigungen in BOMnipotent größtenteils fest kodiert sind, können Rollen (fast) frei verwaltet werden. Dieser Abschnitt erklärt, wie das geht.
Um Rollen und ihre Berechtigungen zu ändern oder anzuzeigen, benötigt Ihr Benutzerkonto die Berechtigung ROLE_MANAGEMENT.
Standardrollen
Beim ersten Start Ihres BOMnipotent Servers werden in der Datenbank mehrere kreativ benannte Standardrollen angelegt:
- “bom_manager” mit der Berechtigung BOM_MANAGEMENT.
- “csaf_manager” mit der Berechtigung CSAF_MANAGEMENT.
- “role_manager” mit der Berechtigung ROLE_MANAGEMENT.
- “user_manager” mit der Berechtigung USER_MANAGEMENT.
- “vuln_manager”, mit der Berechtigung VULN_MANAGEMENT.
Sie können diese Rollen nach Belieben ändern oder löschen; es handelt sich lediglich um Vorschläge.
Wenn Ihnen diese Rollen nicht gefallen, können Sie sie mit den folgenden Aufrufen löschen:
bomnipotent_client role-permission remove bom_manager BOM_MANAGEMENT;
bomnipotent_client role-permission remove csaf_manager CSAF_MANAGEMENT;
bomnipotent_client role-permission remove role_manager ROLE_MANAGEMENT;
bomnipotent_client role-permission remove user_manager USER_MANAGEMENT;
bomnipotent_client role-permission remove vuln_manager VULN_MANAGEMENT;
[INFO] Removed permission BOM_MANAGEMENT from role bom_manager.
[INFO] Removed permission CSAF_MANAGEMENT from role csaf_manager.
[INFO] Removed permission ROLE_MANAGEMENT from role role_manager.
[INFO] Removed permission USER_MANAGEMENT from role user_manager.
[INFO] Removed permission VULN_MANAGEMENT from role vuln_manager.
Admin-Rolle
Es gibt eine spezielle Rolle namens “admin”, die nicht in den anderen Rollen aufgeführt ist. Der Grund dafür ist, dass sie nicht Teil der Datenbank, sondern des BOMnipotent-Codes selbst ist. Daher kann sie nicht geändert werden.
bomnipotent_client role-permission remove admin BOM_MANAGEMENT
[ERROR] Received response:
422 Unprocessable Entity
Cannot modify admin role permissions.
Die Administratorrolle verfügt über alle Berechtigungen, die erteilt werden können, und dann noch einige weitere .
Auflisten
Um alle Rollen und die zugehörigen Berechtigungen aufzulisten, rufen Sie Folgendes auf:
bomnipotent_client role-permission list
[INFO]
╭──────────────┬─────────────────┬─────────────────────────╮
│ Role │ Permission │ Last Updated │
├──────────────┼─────────────────┼─────────────────────────┤
│ bom_manager │ BOM_MANAGEMENT │ 2025-01-01 10:11:12 UTC │
│ csaf_manager │ CSAF_MANAGEMENT │ 2025-01-01 10:11:12 UTC │
│ role_manager │ ROLE_MANAGEMENT │ 2025-01-01 10:11:12 UTC │
│ user_manager │ USER_MANAGEMENT │ 2025-01-01 10:11:12 UTC │
│ vuln_manager │ VULN_MANAGEMENT │ 2025-01-01 10:11:12 UTC │
╰──────────────┴─────────────────┴─────────────────────────╯
Die Ausgabe kann nach Rolle oder Berechtigung gefiltert werden:
bomnipotent_client role-permission list --role=bom_manager --permission=BOM_MANAGEMENT
bomnipotent_client role-permission list -r bom_manager -p BOM_MANAGEMENT
[INFO]
╭─────────────┬────────────────┬─────────────────────────╮
│ Role │ Permission │ Last Updated │
├─────────────┼────────────────┼─────────────────────────┤
│ bom_manager │ BOM_MANAGEMENT │ 2025-01-01 10:11:12 UTC │
╰─────────────┴────────────────┴─────────────────────────╯
Hinzufügen
Da Rollen ohne Berechtigungen bedeutungslos sind, werden sie immer paarweise verwendet. Es gibt keinen speziellen Mechanismus zum Erstellen einer neuen Rolle. Stattdessen existiert eine Rolle dadurch, dass ihr eine Berechtigung hinzugefügt wird.
Die Syntax zum Hinzufügen einer Berechtigung zu einer Rolle lautet:
bomnipotent_client role-permission add rick_role "PRODUCT_ACCESS(BOMnipotent)"
[INFO] Added permission PRODUCT_ACCESS(BOMnipotent) to role rick_role.
Sie könnten beispielsweise mehrere Berechtigungen in den Rollen “doc_manager” und “access_manager” zusammenfassen:
bomnipotent_client role-permission add doc_manager BOM_MANAGEMENT;
bomnipotent_client role-permission add doc_manager CSAF_MANAGEMENT;
bomnipotent_client role-permission add doc_manager VULN_MANAGEMENT;
bomnipotent_client role-permission add access_manager ROLE_MANAGEMENT;
bomnipotent_client role-permission add access_manager USER_MANAGEMENT;
[INFO] Added permission BOM_MANAGEMENT to role doc_manager.
[INFO] Added permission CSAF_MANAGEMENT to role doc_manager.
[INFO] Added permission VULN_MANAGEMENT to role doc_manager.
[INFO] Added permission ROLE_MANAGEMENT to role access_manager.
[INFO] Added permission USER_MANAGEMENT to role access_manager.
Falls Sie die Standardrollen wie oben beschrieben entfernt haben, erhalten Sie damit folgenden Zustand:
bomnipotent_client role-permission list
[INFO]
╭────────────────┬─────────────────┬─────────────────────────╮
│ Role │ Permission │ Last Updated │
├────────────────┼─────────────────┼─────────────────────────┤
│ access_manager │ ROLE_MANAGEMENT │ 2025-01-01 10:11:12 UTC │
│ access_manager │ USER_MANAGEMENT │ 2025-01-01 10:11:12 UTC │
│ doc_manager │ BOM_MANAGEMENT │ 2025-01-01 10:11:12 UTC │
│ doc_manager │ CSAF_MANAGEMENT │ 2025-01-01 10:11:12 UTC │
│ doc_manager │ VULN_MANAGEMENT │ 2025-01-01 10:11:12 UTC │
╰────────────────┴─────────────────┴─────────────────────────╯
Falls die hinzuzufügende Berechtigung nicht existiert oder fehlerhaft ist, erhalten Sie eine Fehlermeldung:
bomnipotent_client role-permission add clam_manager CLAM_MANAGEMENT
[ERROR] Received response:
422 Unprocessable Entity
Failed to parse permission: Invalid UserPermission string: CLAM_MANAGEMENT
Entfernen
Um eine Berechtigung aus einer Rolle zu entfernen, rufen Sie einfach Folgendes auf:
bomnipotent_client role-permission remove rick_role "PRODUCT_ACCESS(BOMnipotent)"
[INFO] Removed permission PRODUCT_ACCESS(BOMnipotent) from role rick_role.
Sobald Sie die letzte Rolle aus einer Berechtigung entfernt haben, existiert diese nicht mehr.
Um Hoppla-Momente zu vermeiden, unterstützt BOMnipotent nicht das Löschen ganzer Stapel von Rollenberechtigungen.
Existenz
Der Sub-Befehl "exist" prüft, wie viele Einträge auf dem Server mit bestimmten Filtern übereinstimmt. Er ist für alle Befehle verfügbar, die den "list" Sub-Befehl akzeptieren, und akzeptiert dieselben Filter.
Basierend auf dem Ausgabeformat gibt der Client Folgendes aus:
- Normaler Modus: Ein Satz, der die Anzahl der gefundenen Objekte enthält.
- code: Den String "200", falls mindestens ein Element gefunden wurde, oder "404", falls keine gefunden wurden.
- raw: Die Anzahl der Einträge, die gefunden wurden.
bomnipotent_client role-permission exist --role=bom_manager
bomnipotent_client role-permission exist -r bom_manager
[INFO] The server contains 1 role permission(s) matching the filters.