Trinitys RBAC
Role Based Access Control
Role Based Access Control
Übersicht
1. Wofür ist es gedacht?
2. Wo finde ich es? Emulationsabhängig?
3. Wichtige Tabellen
4. Auslesen der Rollen, Gruppen und Rechte (Ingame)
5. RBAC - Welche Gruppen sind wichtig?
6. SQL - File
6.1. Das Gleiche nur InGame
7. Zusammenhang mit `TC_world.commands`
8. Schlusswort
1. Wofür ist es gedacht?
Role Based Access Control, im Folgendem RBAC genannt, ist dafür gedacht, für jeden Account spezifische Rechte zuzuweisen. Somit können viele Gruppen mit verschiedenen Rechte (= Permissions) erstellt werden. Sei es die Kommunikation mit allen Fraktionen oder auch teilweise GM - Commands an Spieler zu vergeben.
2. Wo finde ich es? Emulationsabhängig?
Für alle, die bisher den Threadtitel nicht gelesen haben: Es wird bisher nur von TrinityCore so ausführlich eingesetzt, wie hier beschrieben.
3. Die wichtigsten Tabellen
rbac_account_permissions -- Beinhaltet die Accounts mit deren Gruppen
rbac_default_permissions -- Beinhaltet die Grundrechte
rbac_linked_permissions -- Beinhaltet Gruppen inkl. deren Rechte
rbac_permissons -- Rechteübersicht
3.1. Welche Tabellen sind für einen neuen Account wichtig?
Dafür benötigt Ihr nur folgende Tabelle:
rbac_account_permissons
4. RBAC Befehle (Ingame)
Im folgenden werde ich alle Befehle kurz erläutern:
Code:
.rbac account [$account] .rbac account permission [$account] .rbac account grant [$account] #id [#realmID] .rbac account deny [$account] #id [#realmID] .rbac account revoke [$account] #id .rbac list
.rbac account [$account]
Mit diesem Befehl könnt Ihr sämtliche vergebene Rechte an dem Spieler bzw. seinem Account einsehen. Dies wird jedoch nur für den aktuellen angezeigt. Die realen Berechtigungen werden erst angezeigt, wenn die Gruppe bzw. Rolle vorher gecheckt wird.
.rbac account permission [$account]
Siehe dem obrigen Befehl. Nun jedoch mit der Ausnahme, dass direkte gegebene bzw. entzogene Berechtigungen angezeigt werden. Die Grundrechte von den Rollen werden nicht angezeigt.
.rbac account grant [$account] #id [#realmID]
Hier könnt Ihr einem Account InGame rbac-Rechte vergeben. Solltet Ihr bei dem Realm "-1" eintragen, wird es Realmübergreifend für den Account aktiv.
.rbac account deny [$account] #id [#realmID]
Mit diesem Kommando könnt Ihr vergebene Rechte dem Account entziehen. Mit "-1" geschieht dies, wie bei grant, Realmübergreifend.
.rbac account revoke [$account] #id
Entfernt die Berechtigung von erteilten oder verweigerten Berechtigungen.
.rbac list
Listet alle verfügbaren Rechte auf.
5. RBAC - Welche Gruppen sind wichtig?
Als erstes müssen wir wissen, welche Gruppen es gibt. Im Normalfalle gibt es nur 4 Gruppen, wenn es eine neue Datenbank ist oder gar nichts verändert wurde.
Beachte: Bei Änderung der Gruppen immer an den Server wenden. Hier kann keine Hilfe angeboten werden.
Hier folgende IDs und die dazugehörigen Gruppen:
permissionID | secID | Beschreibung |
---|---|---|
195 | 0 | Player |
194 | 1 | Moderator |
193 | 2 | GameMaster |
192 | 3 | Administrator |
6. SQL - File
Erklärung:
Ihr teilt einem Account folgendes zu: Moderatorrechte
Code:
SET [MENTION=2692920]accountid[/MENTION] := 'xxxxx'; INSERT INTO `rbac_account_permissions` (`accountId`, `permissionId`, `realmId`) VALUES [MENTION=2692920]accountid[/MENTION], '194', '-1');
Erklärung:
Ihr teilt einem Account folgendes zu: GameMasterrechte.
Code:
SET [MENTION=2692920]accountid[/MENTION] := 'xxxxx'; INSERT INTO `rbac_account_permissions` (`accountId`, `permissionId`, `realmId`) VALUES [MENTION=2692920]accountid[/MENTION], '193', '-1');
Erklärung:
Ihr teilt einem Account folgendes zu: Administrationsrechte.
Code:
SET [MENTION=2692920]accountid[/MENTION] := 'xxxxx'; INSERT INTO `rbac_account_permissions` (`accountId`, `permissionId`, `realmId`) VALUES [MENTION=2692920]accountid[/MENTION], '192', '-1');
6.1. Das Gleiche nur InGame
Moderatorrechte:
.rbac account grant ACCOUNT 194 -1
GameMasterrechte:
.rbac account grant ACCOUNT 193 -1
Administrationsrechte:
.rbac account grant ACCOUNT 192 -1
7. Zusammenhang mit `TC_world.commands`
Die world.command table würde grundlegend geändert. Sie beinhaltet nicht mehr, wie es früher üblich war, die SecurityID, sondern die PermissionID des Befehls. Die Commandtable kann daher getrost beiseite gelegt werden, da wir alles nurnoch mit auth.rbac_linked_permisson arbeiten.
8. Schlusswort
Dieses ist nur eine knappe Einführung in das RBAC - System. Es ist derzeit eine umgeschriebe ausführlichste im öffentlichen Web. Ich werde, je nach einem Projektangebot, das Tut weiter vervollständigen und näher auf die einzelnen Systeme eingehen.
#####################
#Letzte Änderung: 04.03.2014
#####################
NUR MIT SCHRIFTLICHER GENEHMINUNG DARF DAS TUT IN DER DEUTSCHEN SZENE GETEILT WERDEN! FRAGT EINFACH NACH, ICH BEIßE NICHT!