Multi-Level-Security: Mit DB2 einfacher als mit Oracle 10g

25.10.2006
Von Heinz Axel Pürner

Implementierungsbeispiel

Statt theoretischer Erläuterungen über die Unterschiede zwischen den Implementierungen in DB2 for LUW und Oracle soll ein einfaches Beispiel die Funktionsweise von Kennsatz-gesteuerter Sicherheit sowie die Vor- und Nachteile der jeweiligen Implementierungen deutlich machen. Grundlage des Beispiels sind zwei Tabellen, eine zu schützende Mitabeitertabelle und eine zugehörige Abteilungstabelle.

Die Mitarbeitertabelle hat folgende Struktur:

CREATE TABLE "MITARBEITER"
("PNR" integer NOT NULL primary key,
"NAME" char(24) NOT NULL,
"VORNAME" char(24) NOT NULL,
"TITEL" char(16),
"GEBDAT" DATE NOT NULL,
"BERUFSBEZ" char(24),
"TELEFON" integer NOT NULL,
"ABTEILUNG" smallint,
"EINSTDAT" DATE NOT NULL,
"TARIFGRUPPE" char(4),
"GRUNDGEHALT" dec(10, 2),
"ZULAGE" dec(10, 2) DEFAULT 0,
"L_BONUS" dec(10, 2) DEFAULT 0,
"STRASSE" char(24) NOT NULL,
"PLZ" char(8) NOT NULL,
"WOHNORT" char(24) NOT NULL,
FOREIGN KEY("ABTEILUNG") REFERENCES "ABTEILUNG"("AID"));

Die Abteilungstabelle:

CREATE TABLE "ABTEILUNG"
("AID" smallint NOT NULL primary key,
"ABTBEZ" char(16) NOT NULL,
"MANAGER" integer,
"STANDORT" char(16) );

Die Mitarbeitertabelle enthält neben den Stammdaten wie Adresse oder Geburtsdatum auch die Tarif- und Gehaltsdaten. Sie darf nur von den Mitarbeitern der Personalabteilung HR gepflegt werden. Dabei haben aber normale Sachbearbeiter keinen Zugriff auf die Daten der leitenden Angestellten. Auch die außertariflich bezahlten Angestellten werden nur von ausgewählten Sachbearbeitern bearbeitet. Üblicherweise ist der Zugriff der anderen Sachbearbeiter auch auf die Ihnen zugeordneten Abteilungen beschränkt. Das heißt, der Sachbearbeiter HR_SB3 darf beispielsweise nur die Tarifangestellten der Abteilungen ITD und ITZ bearbeiten. Zusätzlich zu den Mitarbeitern der Personalabteilung dürfen auch die Abteilungs- und Bereichsleiter die Daten ihrer Mitarbeiter inklusive Gehaltsdaten lesen. Die Geschäftsführung hat lesenden Zugriff auf alle Mitarbeiterdaten.

Stellvertretend für die Personalmitarbeiter und Manager des Unternehmens werden folgende Benutzer angenommen:

  • GF1 - Geschäftsführer

  • FE_MAN - Leiter Abteilung Forschung/Entwicklung

  • IT_MAN - Leiter IT-Bereich

  • HR_GL - Gruppenleiter Pesonalabteilung

  • HR_SB2 - Personalsachbearbeiter Tarif

  • HR_SB1- Personalsachbearbeiter AT

Die normalen Berechtigungen im DB2 können zwar den lesenden oder ändernden Zugriff auf Tabellen steuern, nicht aber in Abhängigkeit von Spalteninhalten:

GRANT SELECT ON TABLE HR.ABTEILUNG TO USER GF1;
GRANT SELECT ON TABLE HR.MITARBEITER TO USER GF1;
GRANT SELECT ON TABLE HR.ABTEILUNG TO USER FE_MAN;
GRANT SELECT ON TABLE HR.MITARBEITER TO USER FE_MAN;
GRANT SELECT ON TABLE HR.ABTEILUNG TO USER IT_MAN;
GRANT SELECT ON TABLE HR.MITARBEITER TO USER IT_MAN;
GRANT SELECT,INSERT,UPDATE,DELETE ON TABLE HR.ABTEILUNG TO USER HR_SB2;
GRANT SELECT,INSERT,UPDATE,DELETE ON TABLE HR.MITARBEITER TO USER HR_SB2;
GRANT SELECT,INSERT,UPDATE,DELETE ON TABLE HR.ABTEILUNG TO USER HR_SB1;
GRANT SELECT,INSERT,UPDATE,DELETE ON TABLE HR.MITARBEITER TO USER HR_SB1;
GRANT SELECT,INSERT,UPDATE,DELETE ON TABLE HR.ABTEILUNG TO USER HR_GL;
GRANT SELECT,INSERT,UPDATE,DELETE ON TABLE HR.MITARBEITER TO USER HR_GL;

Mit LBAC oder OLS kann der Zugriff auf Daten auch inhaltlich gesteuert werden, allerdings abhängig von einer speziellen Spalte (Security Label), die mit entsprechenden Werten gefüllt werden muss. Zur Steuerung über Kennsätze muss zunächst eine Sicherheitsrichtlinie definiert werden, die in diesem Beispiel zwei Komponenten besitzt. Eine Komponente bildet die tarifliche Eingruppierung ab, die andere die Aufbauorganisation des Unternehmens für die Abteilungszugehörigkeit.

Für die Sicherheitsstufen nach Tarifzugehörigkeit entscheiden wir uns für eine einfache Hierarchie (in DB2 "array", in Oracle "level"), was den Vorteil hat, dass der Benutzer mit höherem Berechtigungsumfang auch die niedrigeren Stufen sehen kann. Zum Beispiel sieht ein Sachbearbeiter mit Stufe "AT" auch die Tarifangestellten. Zur Abbildung der Aufbau-Organisation unseres Beispielunternehmens reicht die einfache Hierarchie nicht, sondern nur die komplexe Hierarchiebildung einer Baumstruktur (in DB2 "tree", in Oracle "group").