SQL-Sever Datenbankberechtigung Rollen Prinzip

Andreas Weichert

Benutzer
Beiträge
6
Hallo,
ich bin relative neu beim SQL-Sever und muß jetzt ein komplexesRechteschema entwerfen. Mir ist vom Prinizip noch nicht klar wie man so etwas übblicherweise macht. Hier ein vereinfachtes Beispiel:
(kommt mir jetzt nicht auf spezielle Rechte (lesen,schreiben.etc.) sondern nur aufs logische Prinzip)

Datenbank hat Tabllen: tA und tB
Rolle1: Rechte auf tA, keine Rechte auf tB
Rolle2: Rechte auf tB, keine Rechte auf tA (also umgekehrt wie Rolle1)

Die Rollen entsprechen Aufgaben von Personen in einer Firma. Nehmen wir jetzt an eine Person hat zwei Aufgaben. Wie wird das am besten gelöst?
Er muß auf tA und tB zugreifen. Die Person 2 Rollen zuzuorden bringt ja nix, da das "Verbieten" !riorität hat.
Muß ich eine neue Rolle z.B. Rolle1und2 definieren oder geht das irgendwie mit den Einzelrollen.
Könnt ihr mir Tips geben ?
 
Werbung:
Die Rollen entsprechen Aufgaben von Personen in einer Firma. Nehmen wir jetzt an eine Person hat zwei Aufgaben. Wie wird das am besten gelöst?

Ich würde dazu verschiedene Gruppe definieren. Diese Gruppen haben gemäß ihrer Aufgaben die passenden Rechte. Einzelne Benutzer ordnest Du dann den Gruppen zu.

Für PostgreSQL könnte ich Dir das an praktischen Beispielen zeigen, M$SQL bin ich nicht fit.
 
Wieso verweigern? Wenn jemand ein Recht nicht haben soll dann gibt man ihm dieses nicht und verweigert nicht das recht.
 
Wieso verweigern? Wenn jemand ein Recht nicht haben soll dann gibt man ihm dieses nicht und verweigert nicht das recht.
Vielleicht benutze ich nicht die richtige Teminologie, da dieses Thema neu für mich ist. Ich meine den Begriff "Verweigern" des Konfigurationsfenster im Microsoft-SQL-Sever der dort verwendet wird. Z.B. Auswählen -> "Verweigen" heißt man darf die Tabelle nicht lesen.
Was meinst Du mit gibt man ihm dieses Recht nicht. Wenn ich gar nichts konfiguriere (außer natürlich DB-Reader was ja sein muß) erhält die Rolle das Recht alle Tabellen zu lesen. Ich muß explizit das Leserecht für einzelne Tabellen entziehen.
Bin ich damit völlig auf dem Holzweg ?
 
Ich würde dazu verschiedene Gruppe definieren. Diese Gruppen haben gemäß ihrer Aufgaben die passenden Rechte. Einzelne Benutzer ordnest Du dann den Gruppen zu.

Für PostgreSQL könnte ich Dir das an praktischen Beispielen zeigen, M$SQL bin ich nicht fit.

Direkte Hilfe für MSQL brauche ich nicht. Ich weiß wie ich Rechte erteile/verweigere. Es geht mir ehr um die grundsätzliche Logik wie man so etwas möglichst einfach und übersichtlich strukturiert.
Nehmen wir an es gibt 5 Aufgabenbereiche in einer Firma. Für jeden Aufgabenbereich braucht man andere Rechte. Ich wollte das durch Rollen abbilden Rolle1 ... Rolle5. Normalerweise hat eine Person nur eine Aufgabe, die man durch die Rollenrechte abbilden werden kann. Einige Personen haben aber 2 oder mehr Aufgaben. Durch Zugehörigkeit zu 2 Gruppen kann ich das aber nicht lösen, da Rechteverweigerung Priorität hat. Rolle1 Recht für eine spezielle Tabel, Rolle2 keine Recht für diese Tabelle -> Rolle1 & Rolle2 kein Recht.
Wie kann ich Aufgabenbereiche irgenwie zusammen-clicken mit Rechten.
Möchte nicht für alle Rechtekombination von 5 Rollen für alle Kombinationen neue Rollen anlegen. Das wären ja mindestens 5!=120 neue Rollen.
 
Du vergibst nicht DB-Reader sondern deine eigene(n) Rollen. Dann hat derjenige nur das Recht auf die Tabellen, die in der Rolle angegeben sind.
 
Alternativ kannst du auch drei Gruppen machen, DB_reader um grundsätzlich auf beide Tabellen zugreifen zu können und dann jeweils eine um die nicht benötigte Tabelle A oder B zu sperren. Sollte funktionieren, aber ausprobieren.
 
Werbung:
Du vergibst nicht DB-Reader sondern deine eigene(n) Rollen. Dann hat derjenige nur das Recht auf die Tabellen, die in der Rolle angegeben sind.
Ok, jetzt verstehe ich was Du meinst. Habe das völlig von der falschen Richtung aufgezogen.
Muß "positive" Rechte vergeben und nicht Einschrängen. Damit lassen sich Rollen "addieren" indem die Rechte "addiert" werden. Danke für die Hilfe.
Im Moment irritiert mich noch, das bei SQL-Server/Sicherungsfähige Elemente für jedes Recht das ich ändere nach den Ok immer 2 Einträge erscheinen. Einmal mit Brechtigender dbo und einmal mit Berechtigernder "Leerstring". Nur der Eintrag mit dbo ist an angekreutz. Was bedeutet das - ist das so ok ?
 
Zurück
Oben