-
TECHNISCHES GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung bezieht sich allgemein auf das Festlegen des
Zugriffs eines Benutzers auf Computersysteme und insbesondere auf
die Möglichkeit,
die Grenzen für
den Zugriff jedes von mehreren Benutzern auf die Merkmale einer
oder mehrerer Anwendungen, die auf einem Computersystem ausgeführt werden
können,
selektiv und flexibel festzulegen.
-
HINTERGRUND DER ERFINDUNG
-
In
einer Umgebung wie zum Beispiel einem Servicebüro mit gemeinsam genutzten
Ressourcen, in der viele Mitarbeiter und/oder Kunden Zugriff auf
ein Computersystem haben, auf dem zahlreiche Anwendungen laufen
können,
ist es oft wünschenswert,
die Möglichkeit
zu haben, den Zugriff durch bestimmte Benutzer oder Klassen von
Benutzern auf eines oder mehrere Merkmale dieser Anwendungen zu
beschränken.
Hierbei umfasst der Begriff „Merkmale" alle der nahezu
unendlichen möglichen
Anwendungsfunktionen wie beispielsweise das Zugreifen auf Daten
in Datenbanktabellen, das Erzeugen, Ansehen und Drucken von Berichten
und das Senden und/oder Empfangen von E-Mail-Nachrichten.
-
Derzeit
ist diese Flexibilität
bei der Beschränkung
des Benutzerzugriffs nicht gegeben. Im Hinblick auf die Beschränkung des
Zugriffs auf Daten besteht ein derzeit von der Oracle® Corporation
in ihren Datenbankprogrammen verwendetes Verfahren darin, die Möglichkeit
eines Benutzers, auf bestimmte Datentabellen zuzugreifen, auf der
Datenbankebene zu begrenzen. Die Oracle® Corporation
erreicht dies durch Ermöglichung des
Zuweisens von „Aufgaben" zu Benutzern, die
den Zugriff nicht speziell auf die Daten selbst einschränken, sondern
auf die Tabellen, die die Daten enthalten.
-
Die
Notwendigkeit für
mehr Flexibilität
bei der Beschränkung
des Zugriffs auf Anwendungsmerkmale, einschließlich des durch die Oracle®-Aufgaben
eingeschränkten
Merkmals des Datenzugriffs, kann mit einem einfachen Beispiel gezeigt
werden. Nachstehend ist eine hypothetische Datentabelle mit vertraulichen
Finanztransaktionen der Kunden A, B und C am Morgen des 15. Juni
1998 gezeigt, wobei WDRWL eine Abhebung angibt, DPST eine Einzahlung
und PYMNT eine Zahlung.
-
-
Um
einen Bericht über
die vertraulichen Transaktionen nur des Kunden A für den Monat
Juni zu schreiben, ist ein Zugriff auf die Daten in den Zeilen 1,
4 und 6 nötig,
nicht aber auf die Zeilen 2, 3, 5 und 7. Weil diese Daten hoch sensibel
sind, ist eine Beschränkung
des Zugriffs nur auf die für
den jeweiligen Auftrag relevanten Daten (das heißt den Bericht über die
Transaktionen des Kunden A) in hohem Maße wünschenswert.
-
Zusätzlich kann
die zum Erstellen eines Berichts über die vergangenen Transaktionen
des Kunden A verwendete Anwendung die Möglichkeit aufweisen, mehrere
verschiedene Arten von Berichten zu erzeugen, einschließlich Berichte
zur Vorhersage des künftigen
Verhaltens zusätzlich
zum Aufzeigen des vergangenen Verhaltens. Je nachdem, wer mit dieser
Aufgabe beauftragt wird, kann es nicht wünschenswert sein, den Zugriff
auf beide Arten von Berichtsfunktionen zu gestatten. Auch kann es
unerwünscht
sein, das Ausdrucken der erzeugten Berichte zu gestatten.
-
WO
95/22792 beschreibt ein Verfahren und eine Vorrichtung zur Steuerung
des Zugriffs auf eine Datenbank. Nach WO 95/22792 wird der Zugriff
auf Daten in einer Datenbank gesteuert, indem ein Teil der Datenbank
so konfiguriert wird, dass nur einige der Daten in der Datenbank
mit einem Sicherheits-Tag versehen sind. Eine Speicherstruktur mit
Benutzerkennungen und zugehörigen
Benutzer-Tags ist vorgesehen, die eine Zuordnung zwischen Benutzernamen
und Benutzer-Tags darstellt. Der Zugriff auf die gespeicherten Daten wird
dabei erreicht, indem bestimmt wird, ob die zu den Daten gehörenden Sicherheits-Tags über die
Speicherstruktur und die Zuordnung zu dem Be nutzernamen des Benutzers
verbunden sind, der versucht, auf die Daten zuzugreifen. Durch Vorsehen
dieser indirekten Zuordnung von Benutzernamen zu Sicherheits-Tags
ist es möglich,
die Sicherheitspolitik durch Modifizieren der Zwischendaten in der
Speicherstruktur zu ändern,
ohne die Daten in der Datenbank selbst zu ändern.
-
Nach
einem Aspekt der vorliegenden Erfindung wird nach Anspruch 1 ein
Verfahren zum Festlegen des Zugriffs eines Benutzers auf mindestens
ein Merkmal in einem Computersystem, das mindestens eine Anwendung
ausführen
und eine Datenbank unterhalten kann, bereitgestellt, wobei eine
Anwendung jeweils mindestens ein Merkmal aufweist.
-
Nach
einem weiteren Aspekt der vorliegenden Erfindung wird ein Computersystem
nach Anspruch 10 bereitgestellt.
-
Ausführungsformen
der vorliegenden Erfindung bieten die Möglichkeit, den Zugriff auf
Anwendungsmerkmale, die einem bestimmten Benutzer oder einer Gruppe
von Benutzern eines Computersystems zur Verfügung stehen, gezielt festzulegen.
-
Ausführungsformen
der vorliegenden Erfindung bieten mehr Flexibilität, als sie
derzeit gegeben ist, hinsichtlich der Möglichkeit, den Zugriff eines
Benutzers auf Daten in tabellenorientierten Datenbanken zu beschränken.
-
Für ein besseres
Verständnis
der vorliegenden Erfindung, zusammen mit anderen und weiteren Zielen,
wird auf die nachstehende Beschreibung in Verbindung mit den anliegenden
Zeichnungen verwiesen, und ihr Umfang ist in den anliegenden Ansprüchen festgelegt.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 zeigt
ein Blockdiagramm eines beispielhaften Systems nach der vorliegenden
Erfindung.
-
2 zeigt
ein Blockdiagramm des Benutzerattributesystem-Gruppierungsverfahrens
nach der vorliegenden Erfindung.
-
3 zeigt
ein Ablaufdiagramm für
eine Ausführungsform
des Verfahrens nach der vorliegenden Erfindung.
-
AUSFÜHRLICHE
BESCHREIBUNG DER ERFINDUNG
-
Benutzerattribute
-
1 zeigt
ein Blockdiagramm eines beispielhaften Systems nach der vorliegenden
Erfindung. Auf einem Computer 5 läuft Datenbank-Software 8,
die Datentabellen unterhält,
die durch die Tabellen 11, 13 und 15 repräsentiert
sind. Zahlreiche Anwendungen, repräsentiert durch die Anwendungen
ABC, DEF und GHI, laufen ebenfalls auf dem Computer 5 und
stellen zum Teil Einrichtungen zum Abrufen und Bearbeiten der Daten
in den Tabellen 11, 13 und 15 bereit.
Jeder der Benutzer X, Y und Z des Systems hat über Terminals, repräsentiert
durch die Computer 18, 21 bzw. 24, Zugriff
auf den Computer 5. Nach der vorliegenden Erfindung sind
den Benutzern X, Y und Z ein oder mehrere „Attribute" zugeordnet. Die Attribute weisen jeweils
einen Namen, der ein Anwendungsmerkmal bezeichnet, auf das der Zugriff
festgelegt wird (zum Beispiel die Fähigkeit, auf Daten in der Datenbank
zuzugreifen), und einen Wert auf, der die Zugriffsbeschränkungen
festlegt, wie weiter unten ausführlich
beschrieben. Sofern im Kontext nicht anders angegeben, wird der
Begriff „Attribute" hier so verwendet,
dass er sich auf ein Namen-Werte-Paar bezieht.
-
Attribute
werden in einer Tabelle von der Datenbank-Software 8 verwalltet
und definieren die jeweiligen Fähigkeiten
der Benutzer, die Anwendungen ABC, DEF und GHI auszuführen. Zwei
nützliche
Attribute sind zum Beispiel DATA_SCOPE und USER_LEVEL. DATA_SCOPE
definiert die Daten, auf die der Benutzer zugreifen darf, und hat,
bei Verwendung der vorstehenden Tabelle 1 als Beispiel, die möglichen
Werte A, B, C oder ALL, was den mit den Kunden A, B, C bzw. allen
drei Kunden verbundenen Daten entspricht. USER_LEVEL ist ein weit
gefasstes Attribut, das allgemein die Zugriffsstufe auf die betreffenden
Merkmale einer bestimmten Anwendung definiert, die von einem Benutzer
zur Ausführung
gewählt
wird. USER_LEVEL hat vorzugsweise die Werte ADMIN, REGULAR und RESTRICTED,
wobei ADMIN die geringste Beschränkung
darstellt und den Zugriff auf alle verfügbaren Merkmale einer bestimmten
Anwendung ermöglicht,
zum Beispiel das Abrufen von Berichten, E-Mail und Drucken. RESTRICTED
beschränkt
die Benutzer auf die einfachsten Anwendungsmerkmale, zum Beispiel
das Erzeugen von Berichten. Benutzer mit der Berechtigung REGULAR
dürfen
auf weniger Merkmale zugreifen als Benutzer mit der Berechtigung
ADMIN, jedoch auf mehr als Benutzer mit der Berechtigung RESTTRICTED.
Jede Anwendung kann das Attribut USER_LEVEL auf der Grundlage der
von ihr be reitgestellten unterschiedlichen Merkmale interpretieren.
Es ist zu erkennen, dass mehrere eng gefasste Attribute, zum Beispiel
im Hinblick auf das Erzeugen oder Drucken von Berichten, anstelle
des Attributs USER_LEVEL verwendet werden können.
-
Die
beiden Attribute DATA_SCOPE und USER_LEVEL und deren jeweilige Werte
sind natürlich
nur Beispiele. Der Fachmann wird das unbegrenzte Potenzial zur Festlegung
von Attributen erkennen, die den Zugriff auf Anwendungsmerkmale
einschränken.
-
Gruppierung
-
Attribute
können
einzelnen Benutzern zugeordnet werden oder es kann, in einer bevorzugten
Ausführungsform,
ein Gruppierungsschema implementiert werden, das als Beispiel in 2 gezeigt
ist. Attribute wie zum Beispiel DATA_SCOPE und USER_LEVEL sind durch
Quadrate angegeben, „Attributgruppen" sind durch Dreiecke
angegeben und „Zuordnungsgruppen" sind durch Kreise
angegeben. Attributgruppen bestehen nur aus Attributen und ihren
Werten, während
Zuordnungsgruppen aus Attributgruppen und/oder anderen Zuordnungsgruppen
bestehen, aber nicht aus einzelnen Attributen. Bei einer bevorzugten
Ausführungsform
des Gruppierungsschemas ist eine Attributgruppe jeweils auf Attribute
für eine
einzelne Anwendung beschränkt, wodurch
die Möglichkeit
gegeben ist, unterschiedliche Attribute und Werte für unterschiedliche
Anwendungen zuzuordnen. Bei einer alternativen Ausführungsform
können
Attributgruppen unabhängig
von bestimmten Anwendungen eingerichtet werden, so dass eine Gruppe
Attribute für
alle Anwendungen enthalten kann. Auch wenn dies weniger Flexibilität bei der
Festlegung des Zugriffs auf Merkmale einzelner Anwendungen bietet, wäre ein solches
System einfacher zu implementieren.
-
Bei
der bevorzugten Ausführungsform
definiert eine Tabelle APPS, die mindestens eine Spalte APP_CODE
enthält,
die Liste der gültigen
Anwendungen, die damit verbundene Attribute aufweisen können. In 1 lauten
die gültigen
APP_CODE-Werte in
diesem Beispiel ABC, DEF und GHI. Andere Spalten in der Tabelle
APPS würden
die jeweiligen Informationen enthalten, die von jeder der Anwendungen
benötigt
werden. In einem Menüsystem,
das Symbole bereitstellt, aus denen der Benutzer eine Anwendung
zur Ausführung auswählen kann,
würde zum
Beispiel eine Spalte APP_NAME die Zeichenfolge enthalten, die als
sichtbares Label des Symbols verwendet wird, das mit der Anwendung
in der Spalte APP_CODE verbunden ist.
-
Eine
Attributgruppe definiert jeweils eine Gruppe von null oder mehr
Attributen für
eine bestimmte Anwendung, die durch einen APP_CODE identifiziert
ist. Eine Attributgruppe von null Attributen könnte verwendet werden, um anzugeben,
dass für
die betreffende Anwendung Standardwerte für die Attribute zugeordnet
werden sollten. Typischerweise sind die Standardwerte die mit den
stärksten
Beschränkungen.
Alternativ könnte eine
Attributgruppe von null Attributen verwendet werden, um anzugeben,
dass es keine Merkmale für
die durch APP_CODE identifizierte Anwendung gibt, auf die der Zugriff
festgelegt werden soll, mit Ausnahme der Möglichkeit, die Anwendung auszuführen.
-
Das
Gruppierungsbeispiel in 2 zeigt eine komplexere Benutzerstruktur
als das zuvor in Zusammenhang mit 1 und Tabelle
1 beschriebene Beispiel. Die Attributgruppen 106, 115, 130, 145 und 148 in 2 weisen
die folgenden zugeordneten Attribute auf:
-
-
Bei
dieser bevorzugten Ausführungsform
wird die Anwendung, auf die sich die jeweilige Attributgruppe bezieht,
zu dem Zeitpunkt festgelegt, an dem die Gruppe eingerichtet wird,
und in dem diskutierten Beispiel ist sie in der vorstehenden Tabelle
2 in der zweiten Spalte angegeben.
-
In 2 weist
eine einem Benutzer zugeordnete Attributgruppe 106 die
Attribute DATA_SCOPE 107 und USER_LEVEL 108 mit
den Werten ALL bzw. ADMIN auf, wie in Tabelle 2 gezeigt. Entsprechend
den Attributen sollte der Benutzer ADMIN-Zugriff auf die Anwendung GHI erhalten
und erhält
bei der Ausführung
der betreffenden Anwendung Zugriff auf die jeweiligen Daten der
Kunden A, B und C. Eine einem Benutzer zugeordnete Attributgruppe 130 weist
drei Attribute DATA_SCOPE 133, DATA_SCOPE 136 und
USER_LEVEL 139 mit den Werten A, B bzw. REGULAR auf. Entsprechend
den Attributen kann dieser Benutzer auf Daten zugreifen, die die
Kunden A oder B betreffen, und kann auf die Merkmale der Anwendung
ABC zugreifen, die für
einen Benutzer mit dem Status REGULAR festgelegt sind. Eine einem
Benutzer zugeordnete Attributgruppe 145 hat eingeschränkten Zugriff – RESTRICTED – auf die
Anwendung ABC und erhält
Zugriff auf die Daten, die die Kunden A und B betreffen. Eine einem
Benutzer zugeordnete Attributgruppe 148 hat eingeschränkten Zugriff – RESTRICTED – auf die
Anwendung DEF und erhält
Zugriff auf die Daten, die die Kunden B und C betreffen.
-
Eine
oder mehrere Attributgruppen können
Zuordnungsgruppen zugewiesen werden. In 2 kann die
Zuordnungsgruppe 142 zum Beispiel aus den Attributgruppen 145 und 148 bestehen
und alle Paare aus Attributname und Attributwert enthalten, die
in den letzten beiden Spalten der nachstehenden Tabelle 3 aufgeführt sind:
-
-
Zuordnungsgruppen
können
auch anderen Zuordnungsgruppen zugeordnet werden. Dies ist in 2 durch
die Zuordnungsgruppe 103 gezeigt, die alle Attribute in
der Zuordnungsgruppe 142 sowie alle Attribute in den Attributgruppen 130 und 115 enthält. Die
Zuordnungsgruppe 100 ganz oben in der Abbildung besteht aus
der Zuordnungs gruppe 103 und der Attributgruppe 106.
Die Zuordnungsgruppe 100 enthält daher alle Attribute in
jeder der fünf
Attributgruppen 130, 145, 148, 115 und 106.
-
Das
Attributgruppierungssystem ist besonders geeignet, um Mitarbeitern
Attribute für
unterschiedliche Verantwortungsbereiche zuzuordnen. Die Attributgruppen 115, 130, 145 und 148 können zum
Beispiel Mitarbeitern auf unterer oder mittlerer Ebene zugeordnet
werden, während
die Zuordnungsgruppen 100, 103 und 142 und
die Attributgruppe 106 Führungskräften zugeordnet werden können, deren
Aufgabe es ist, die Arbeit von Mitarbeitern auf unterer Ebene zu
beaufsichtigen und, im Hinblick auf die Attributgruppe 106,
ihre eigenen Anwendungen auszuführen.
-
Bei
diesem bevorzugten Gruppierungssystem werden die Zuordnungen von
Attributen zu Attributgruppen, Zuordnungsgruppen und Benutzern in
einer Tabelle ATTRIBUTES verwaltet. Die Tabelle ATTRIBUTES hat drei
Spalten: ASSIGNEE (Zuordnungsempfänger), ATTRIBUTE_NAME (Attributname)
und ATTRIBUTE_VALUE (Attributwert). ASSIGNEE kann der Name einer
Attributgruppe, der Name einer Zuordnungsgruppe oder ein Benutzer
sein. ATTRIBUTE_NAME ist der Name des Attributs (zum Beispiel DATA_SCOPE).
ATTRIBUTE_VALUE ist ein bestimmter Wert für das angegebene Attribut (zum
Beispiel ALL [Alle]).
-
Die
Tabelle ATTRIBUTES wird mit sieben einfachen Befehlen verwaltet.
Diese beispielhaften Befehle sind nachstehend als die Oracle®-Prozeduren
zur Verwendung in einer Oracle®-Datenbankumgebung angegeben.
Für den
Fachmann ist ersichtlich, dass analoge Befehle für andere Umgebungen abgeleitet
werden können.
In den nachstehenden Beschreibungen sind die Parameter in einfachen
Anführungszeichen
und Literalzeichenfolgen in doppelten Anführungszeichen angegeben.
-
Befehl Nr. 1
-
- attr_utils.create_group ('group_name', 'group_type', 'app_code')
- 'group_name': Name der Gruppe
- 'group_type': „ATTRIBUTE" oder „ASSIGNEE"
- 'app_code': Lautet der 'group_type' „ATTRIBUTE", ist dieses Feld erforder lich; anderenfalls
wird es ignoriert.
-
Diese
Prozedur legt eine Gruppe des angegebenen Typs an. Sie wird mit
einem Fehler beendet, wenn der Parameter 'group_name' bereits als eine Gruppe oder ein Oracle®-Benutzer
existiert.
-
Entsprechend
der Prozedur werden die Werte für 'group_name' und 'group_type' in Großbuchstaben umgesetzt.
Danach wird ein Datensatz mit den folgenden Spaltenwerten in die
Tabelle ATTRIBUTES eingefügt:
Set
ASSIGNEE = 'group_name'
Set ATTRIBUTE_NAME
= „ASSIGNEE_TYPE"
Set ATTRIBUTE_VALUE
_ „ATTRIBUTE_GROUP" oder
„ASSIGNEE_GROUP" basierend auf dem
Wert von 'group_type'.
-
Außerdem wird,
wenn der Parameter 'group_type' „ATTRIBUTE" lautet, ein weiterer Datensatz mit
den folgenden Spaltenwerten in die Tabelle ATTRIBUTES eingefügt:
Set
ASSIGNEE = 'group_name'
Set ATTRIBUTE_NAME
= „APP_CODE"
Set ATTRIBUTE_VALUE
= 'app_code'.
-
Befehl Nr. 2
-
- attr_utils.assign_group ('assignee', 'group_name')
- 'assignee': Benutzer oder Zuordnungsgruppe,
dem bzw. der 'group_name' zugeordnet wird.
- 'group_name': Gruppe, die dem
Zuordnungsempfänger
zugeordnet wird.
-
Diese
Prozedur weist eine Gruppe einer anderen Gruppe oder einem Benutzer
zu. Ein Fehler wird angezeigt, wenn der 'assignee' nicht als eine Zuordnungsgruppe oder
ein Benutzer vorhanden ist. Ein Fehler wird auch angezeigt, wenn
der 'group_name' nicht existiert.
-
Diese
Prozedur setzt zuerst die Werte für 'assignee' und 'group_name' in Großbuchstaben um. Danach wird
ein Datensatz mit den folgenden Spaltenwerten in die Tabelle ATTRIBUTES
eingefügt:
Set
ASSIGNEE = 'assignee'
Set ATTRIBUTE_NAME
= „ASSIGNED_GROUP"
Set ATTRIBUTE_VALUE
= 'group_name'.
-
Befehl Nr. 3
-
- attr_utils.assign_attribute ('assignee', 'attribute_name', 'attribute_value')
- 'assignee': Name der Attributgruppe.
Dies muss eine Attributgruppe sein.
- 'attribute_name': Der Name des Attributs.
- 'attribute value': Der Wert des angegebenen
Attributs.
-
Diese
Prozedur weist dem 'assignee' ein Attribut mit
dem angegebenen Wert zu. Ein Fehler wird angezeigt, wenn der Zuordnungsempfänger nicht
als eine Attributgruppe existiert oder wenn der Parameter 'attribute_name' reserviert ist.
-
Diese
Prozedur setzt zuerst die Werte für 'assignee' und 'attribute_name' in Großbuchstaben um. Danach wird
ein Datensatz mit den folgenden Spaltenwerten in die Tabelle ATTRIBUTES
eingefügt:
Set
ASSIGNEE = 'assignee'
Set ATTRIBUTE_NAME
= 'attribute_name'
Set ATTRIBUTE_VALUE
= 'attribute_value'.
-
Befehl Nr. 4
-
- attr_utils.drop_group ('group_name')
- 'group_name': Der Name der Gruppe
oder des Benutzers, der zusammen mit allen Verweisen auf diese Gruppe
oder diesen Benutzer gelöscht
wird.
-
Diese
Prozedur entfernt eine Gruppe oder einen Benutzer zusammen mit allen
Verweisen auf die Gruppe oder den Benutzer. Ein Fehler wird angezeigt,
wenn der Parameter 'group_name' nicht existiert.
-
Diese
Prozedur setzt zuerst den Wert für 'group_name' in Großbuchstaben
um und löscht
dann alle Datensätze
in der Tabelle ATTRIBUTES, in denen der Wert in der Spalte ASSIGNEE
mit dem 'group_name' übereinstimmt. Darüber hinaus
werden alle Datensätze
in der Tabelle ATTRIBUTES gelöscht,
die die folgenden beiden Kriterien erfüllen:
- a.
Der Wert in der Spalte ATTRIBUTE_NAME lautet „ASSIGNED_GROUP".
- b. Der Wert in der Spalte ATTRIBUTE_VALUE stimmt mit dem 'group_name' überein.
-
Befehl Nr. 5
-
- attr_utils.rescind_group ('assignee', 'group_name')
- 'assignee': Der Benutzer oder
die Zuordnungsgruppe, deren 'group_name' widerrufen wird.
- 'group_name': Die Gruppe, die
von dem Zuordnungsempfänger
widerrufen wird.
-
Diese
Prozedur widerruft den angegebenen 'group_name' von dem 'assignee'. Ein Fehler wird angezeigt, wenn der 'group_name' oder der 'assignee' nicht existieren.
-
Diese
Prozedur setzt zuerst 'assignee' und 'group_name' in Großbuchstaben
um und löscht
dann alle Datensätze
in der Tabelle ATTRIBUTES, die die folgenden drei Kriterien erfüllen:
- a. Der Wert in der Spalte ATTRIBUTE_NAME lautet „ASSIGNED_GROUP".
- b. Der Wert in der Spalte ATTRIBUTE_VALUE stimmt mit dem 'group_name' überein.
- c. Der Wert in der Spalte ASSIGNEE stimmt mit dem 'assignee' überein.
-
Befehl Nr. 6
-
- attr_utils.rescind_attribute ('assignee', 'attribute_name')
- 'assignee': Name der Attributgruppe.
Dies muss eine Attributgruppe sein.
- 'attribute_name': Der Name des Attributs.
-
Diese
Prozedur widerruft den angegebenen 'attribute_name' von dem 'assignee'. Ein Fehler wird angezeigt, wenn der
Attributname oder der Zuordnungsempfänger nicht existieren oder
wenn der Parameter 'attribute
name' reserviert
ist.
-
Diese
Prozedur setzt zuerst 'assignee' und 'attribute_name' in Großbuchstaben
um und löscht
dann alle Datensätze
in der Tabelle ATTRIBUTES, die die folgenden beiden Kriterien erfüllen:
- a. Der Wert in der Spalte ASSIGNEE stimmt mit
dem 'assignee' überein.
- b. Der Wert in der Spalte ATTRIBUTE_NAME stimmt mit dem 'attribute_name' überein.
-
Befehl Nr. 7
-
- attr_utils.update_attribute ('assignee', 'attribute_name', 'attribute_value')
- 'assignee': Name der Attributgruppe.
Dies muss eine Attributgruppe sein.
- 'attribute_name': Der Name des Attributs.
- 'attribute_value': Der neue Wert des
angegebenen Attributs.
-
Diese
Prozedur aktualisiert den angegebenen 'attribute_value' für
den angegebenen 'assignee' und 'attribute_name'. Ein Fehler wird
angezeigt, wenn der Attributname oder der Zuordnungsempfänger nicht
existieren oder wenn der Parameter 'attribute_name' reserviert ist.
-
Diese
Prozedur setzt zuerst 'assignee' und 'attribute_name' in Großbuchstaben
um und aktualisiert dann die Tabelle ATTRIBUTES, indem sie die Spalte
ATTRIBUTE_VALUE für
alle Datensätze,
die die folgenden Kriterien erfüllen,
auf den 'attribute_value' setzt:
- a. Der Wert in der Spalte ASSIGNEE stimmt mit dem 'assignee' überein.
- b. Der Wert in der Spalte ATTRIBUTE_NAME stimmt mit dem 'attribute_name' überein.
-
Mit
den vorstehenden Befehlen wird eine Tabelle ATTRIBUTES verwaltet.
Wie in den Befehlen 1 und 2 gezeigt, werden bei der bevorzugten
Ausführungsform
mehrere reservierte Attributnamen in der Tabelle ATTRIBUTES verwendet,
um bestimmte Informationen zu bezeichnen, die in dem System verwendet
werden. Ein Attributname „APP_CODE" wird automatisch
einer Attributgruppe zugewiesen, um die Anwendung zu identifizieren,
die mit der betreffenden Gruppe verbunden ist. Ein Attributname „ASSIGNED_GROUP" wird verwendet,
um Attribute zu Attributgruppen zuzuweisen, um Attributgruppen und
Zuordnungsgruppen zu Zuordnungsgruppen zuzuweisen und um Attributgruppen
und Zuordnungsgruppen zu Benutzern zuzuweisen. Ein Attributname „ASSIGNEE_TYPE" wird verwendet,
um anzugeben, ob eine Gruppe eine Attributgruppe oder eine Zuordnungsgruppe
ist. Die Prozeduren validieren alle Parameter 'ATTRIBUTE_NAME', um zu prüfen, dass sie nicht reserviert
sind, und liefern eine Fehleranzeige, wenn versucht wird, einen
reservierten Attributnamen zu verwenden.
-
Als
Beispiel ist der zu der Zuordnungsgruppe 142 in 2 gehörende Teil
der Tabelle ATTRIBUTES in der nachstehenden Tabelle 4 gezeigt:
-
-
-
Bei
der vorstehend diskutierten alternativen Ausführungsform der Erfindung, bei
der die Attributgruppen nicht auf bestimmte Anwendungen beschränkt sind,
erfordert die Prozedur create_group keine Eingabe eines Parameters 'app_code', und in der Tabelle
ATTRIBUTES werden keine APP_CODE-Attribute verwaltet. Der generelle
Zugriff auf Anwendungen könnte
jedoch mit einer zusätzlichen
Tabelle zum direkten Zuordnen der APP_CODES zu den Benutzern trotzdem
kontrolliert werden. Ist einem Benutzer ein bestimmter APP_CODE
nicht zugeordnet, stünde
die entsprechende Anwendung dem Benutzer nicht zur Verfügung
-
Stamm-Abkömmling-Hierarchie
-
Die
Möglichkeit,
einer einzelnen Zuordnungsgruppe mehrere Attributgruppen und/oder
Zuordnungsgruppen zuzuordnen, führt
oft dazu, dass einer Gruppe oder einem Benutzer überlappende, sich wiederholende
und auch widersprüchliche
Werte für
dasselbe Attribut zugeordnet werden. So enthält zum Beispiel die Zuordnungsgruppe 100,
die oben in 2 gezeigt ist, alle Attribute
in der Abbildung und umfasst daher, wie in der vorstehenden Tabelle
4 gezeigt, für
dieselbe Anwendung DEF unterschiedliche Werte B, C und ALL für das Attribut
DATA_SCOPE sowie unterschiedliche Werte REGULAR und RESTRICTED für das Attribut USER_LEVEL.
Aus diesem Grund werden bei einer bevorzugten Ausführungsform
Attributhierarchieregeln festgelegt, in denen für jeden Attributwert ein „Stammwert" zugeordnet ist,
so dass zum Beispiel der Wert B für das Attribut DATA_SCOPE dem
Stammwert ALL zugeordnet ist. In der Praxis wird, wenn die zugeordneten Attribute
eines Benutzers aufgerufen werden und sowohl ein Stammwert als auch
ein Abkömmlingwert
für dasselbe
Attribut und dieselbe Anwendung vorhanden sind, der Stamm übernommen
und der Abkömmling
verworfen. Außerdem
werden sich wiederholende Werte verworfen.
-
Die
Stamm-Abkömmling-Zuordnungen
werden in einer Tabelle ATTRIBUTE LEVELS verwaltet, die drei Spalten
aufweist: ATTRIBUTE_NAME (Attributname), CHILD_VALUE (Abkömmlingwert)
und PARENT_VALUE (Stammwert). ATTRIBUTE_NAME ist der Name eines
Attributs (zum Beispiel DATA_SCOPE). CHILD_VALUE ist ein tatsächlicher
Wert des Attributs (zum Beispiel C). PARENT_VALUE ist der Wert,
von dem der tatsächliche
Wert eine Untermenge darstellt (zum Beispiel ALL). Für den Fall,
dass der tatsächliche
Attributwert der höchste
in der Hierarchie ist, zum Beispiel ALL, ist der zugeordnete Stammwert NULL.
-
Die
Tabelle ATTRIBUTE_LEVELS wird mit vier einfachen Befehlen verwaltet.
Diese beispielhaften Befehle sind nachstehend als die Oracle®-Prozeduren
zur Verwendung in einer Oracle®-Datenbankumgebung angegeben.
Für den
Fachmann ist ersichtlich, dass analoge Befehle für andere Datenbankumgebungen
abgeleitet werden können.
In den nachstehenden Beschreibungen sind die Parameter in einfachen
Anführungszeichen
und Literalzeichenfolgen in doppelten Anführungszeichen angegeben.
-
Befehl Nr. 1
-
- attr_utils.add_attr_level ('attribute_name', 'child_value', 'parent_value')
- 'attribute_name': Der Name des Attributs.
- 'child_value': Der Abkömmlingwert
für den
angegebenen 'attribute_name'.
- parent_value':
Der Stammwert des angegebenen 'child_value' für den angegebenen 'attribute_name'.
-
Diese
Prozedur fügt
eine neue Attributebene für
die angegebenen Parameter hinzu. Der 'parent_value' kann „NULL" sein, wenn der 'child_value' die höchste Berechtigungsstufe für den angegebenen 'attribute_name' aufweist. Ein Fehler
wird angezeigt, wenn der Stammwert nicht null ist oder nicht existiert.
-
Diese
Prozedur setzt zuerst den 'attribute_name' in Großbuchstaben
um und fügt
dann einen Datensatz mit den folgenden Spaltenwerten in die Tabelle
ATTRIBUTE LEVELS ein:
Set ATTRIBUTE_NAME = 'attribute_name'
Set CHILD_VALUE = 'child_value'
Set PARENT_VALUE
= 'parent_value'.
-
Befehl Nr. 2
-
- attr_utils.update_attr_level ('attribute_name', 'child_value', 'parent_value')
- 'attribute_name': Der Name des Attributs.
- 'child_value': Der Abkömmlingwert
für den
angegebenen 'attribute_name'.
- 'parent_value': Der Stammwert des
angegebenen Abkömmlingwerts
für den
angegebenen Attributnamen.
-
Diese
Prozedur aktualisiert den Stammwert für die angegebenen Parameter.
Der 'parent_value' kann „NULL" sein, wenn der 'child_value' die höchste Berechtigungsstufe
für den
angegebenen 'attribute_name' aufweist. Ein Fehler
wird angezeigt, wenn der Stammwert nicht null ist oder nicht existiert
und wenn die Kombination aus Attributname und Abkömmlingwert
nicht existiert.
-
Diese
Prozedur setzt zuerst den 'attribute_name' in Großbuchstaben
um und aktualisiert dann die Tabelle ATTRIBUTE_LEVELS, indem sie
den Wert in der Spalte PARENT_VALUE für alle Datensätze, die
die folgenden beiden Kriterien erfüllen, auf den 'parent_value' setzt:
- a. Der Wert in der Spalte ATTRIBUTE_NAME stimmt mit dem 'attribute_name' überein.
- b. Der Wert in der Spalte CHILD_VALUE stimmt mit dem 'child_value' überein.
-
Befehl Nr. 3
-
- attr_utils.delete_attr_levels ('attribute_name', 'child_value')
- 'attribute_name': Der Name des Attributs.
- 'child_value': Der Abkömmlingwert
für den
angegebenen 'attribute_name'.
-
Diese
Prozedur löscht
die Attributebene und alle Abkömmlung-Attributebenen
für die
angegebenen Parameter. Ein Fehler wird angezeigt, wenn die Kombination
nicht existiert.
-
Diese
Prozedur setzt zuerst den 'attribute_name' in Großbuchstaben
um und löscht
dann alle Datensätze
in der Tabelle ATTRIBUTE_LEVELS, die „Abkömmlinge" des angegebenen Paars aus 'attribute_name' und 'child_value' sind. Die folgende
SQL-Anweisung könnte
zum Beispiel verwendet werden, um diese beiden ersten Schritte auszuführen:
DELETE
ATTRIBUTE LEVELS
WHERE (ATTRIBUTE_NAME, CHILD_VALUE) IN
(SELECT
ATTRIBUTE_NAME, CHILD_VALUE
FROM ATTRIBUTE_LEVELS
START
WITH PARENT_VALUE=P CHILD_VALUE
AND ATTRIBUTE_NAME=UPPER(P
ATTRIBUTE_NAME)
CONNECT BY PARENT_VALUE=PRIOR CHILD VALUE
AND
ATTRIBUTE_NAME=PRIOR ATTRIBUTE_NAME).
-
Diese
Prozedur löscht
alle Datensätze
in der Tabelle ATTRIBUTE_LEVELS, die die folgenden beiden Kriterien
erfüllen:
- a. Der Wert in der Spalte ATTRIBUTE_NAME stimmt
mit dem 'attribute_name' überein.
- b. Der Wert in der Spalte CHILD_VALUE stimmt mit dem 'child_value' überein.
-
Befehl Nr. 4
-
- attr_utils.delete_all_levels ('attribute_name')
- 'attribute_name': Der Name des Attributs.
-
Diese
Prozedur löscht
alle Attributebenen für
den angegebenen 'attribute_name'. Ein Fehler wird
angezeigt, wenn der' attribute_name' nicht existiert.
-
Diese
Prozedur setzt zuerst den attribute_name' in Großbuchstaben um und löscht dann
alle Datensätze
in der Tabelle ATTRIBUTE_LEVELS, bei denen der Wert in der Spalte
ATTRIBUTE_NAME mit dem 'attribute_name' übereinstimmt.
-
Mit
den vorstehenden Befehlen wird eine Tabelle ATTRIBUTE_LEVELS verwaltet.
Als Beispiel ist eine Tabelle ATTRIBUTE_LEVELS für die vorstehend diskutierten
Beispielattribute in der nachstehenden Tabelle 5 gezeigt:
-
-
Nach
Tabelle 5 werden alle Zuordnungen des DATA_SCOPE-Attributs mit den
Werten A, B oder C verworfen, wenn ein DATA_SCOPE von ALL demselben
Benutzer für
dieselbe Anwendung zugeordnet ist. In gleicher Weise werden Zuordnungen
niedrigerer USER_LEVEL-Werte zugunsten des höchsten zugeordneten Wertes
verworfen.
-
Wenn
ein Attributwert in der Tabelle ATTRIBUTES zugewiesen, in der Tabelle
ATTRIBUTE_LEVELS aber nicht definiert ist, wird er vorzugsweise
so behandelt, als sei er in der Tabelle ATTRIBUTE_LEVELS mit einem
Stammwert von NULL definiert und als weise kein anderer Wert den
zugeordneten Wert als seinen Stammwert auf.
-
Eine
weitere Minimierung kann erreicht werden, indem berücksichtigt
wird, dass ein kompletter Satz von zugeordneten Werten auf niedrigerer
Ebene durch den Wert der höheren
Ebene ersetzt werden kann. Wenn zum Beispiel die DATA_SCOPE-Werte
A, B und C zugeordnet sind, könnte
das System mit dem Wert ALL antworten. Diese Minimierung sollte
nur vorgenommen werden, wenn der komplette Satz von Werten auf niedrigerer
Ebene tatsächlich
dasselbe repräsentiert
wie der Wert der höheren
Ebene, denn es ist möglich, dass
der Wert der höheren
Ebene mehr repräsentiert
als die Summe der Werte auf niedrigerer Ebene.
-
Funktionsweise des Benutzerattributesystems
-
In
Zusammenhang mit der nachstehenden Beschreibung der beispielhaften
Benutzung des Benutzerattributesystems nach der vorliegenden Erfindung
wird auf 3 verwiesen. Nach einer bevorzugten
Ausführungsform
der Erfindung wird der Zugriff auf die Anwendungen, die in einer
Datenbankumgebung ausgeführt werden,
durch eine grafische Benutzeroberfläche (IGUI – initial graphical user interface)
gesteuert. Beispiele für
IGUIs sind etwa Internet-Homepages und Startseiten von lokalen Netzwerken.
-
Bevor
er Zugriff auf die Anwendungen erhält, meldet sich ein Benutzer
jedoch im Allgemeinen in einem Computersystem an, was in Kasten 201 gezeigt
ist, wobei das Computersystem den Benutzer erkennt, wenn die Anmeldung
richtig durchgeführt
wird. In Kasten 204 ruft die IGUI die Anwendungen auf,
die dem Benutzer verfügbar
sind. Bei der bevorzugten Ausführungsform
tut die IGUI dies, indem sie auf die Tabelle ATTRIBUTES zugreift
(siehe Pfeil 205), die die Gruppenzuordnungen für den Benutzer
enthält.
Wie vorstehend beschrieben, enthalten bei der bevorzugten Ausführungsform
die Gruppenzuordnungen Attributgruppenzuordnungen, die wiederum
die Spezifikation der verfügbaren
Anwendungen enthalten. Anstatt die gesamte Tabelle ATTRIBUTES zu durchsuchen,
die recht umfangreich sein kann, können in einem Oracle®-Datenbanksystem „Ansichten" mit den Ergebnissen
von häufig
verwendeten Suchen (zum Beispiel die Attribute für einen bestimmten Benutzer),
die vermutlich immer wieder verwendet werden, erstellt werden. Bei
der alternativen Ausführungsform, bei
der die Attribute nicht auf bestimmte Anwendungen beschränkt sind,
können
die Anwendungen, die einem bestimmten Benutzer zur Verfügung stehen,
in einer getrennten Tabelle gespeichert und daraus abgerufen werden.
-
Bei
Pfeil 205 greift die IGUI auch auf die Tabelle APPS der
gültigen
Anwendungen zu, die eine Spalte APP_CODE enthält, um der IGUI mitzuteilen,
welche Zeichenfolge dem Benutzer in Kasten 207 angezeigt
werden soll, wenn die IGUI dem Benutzer die verfügbaren Anwendungen anzeigt.
In Kasten 210 wählt
der Benutzer eine der verfügbaren
Anwendungen aus. In Kasten 213 greift die IGUI auf die
Tabelle ATTRIBUTES zu (siehe Pfeil 214) und ruft die Benutzerattribute
für die
gewählte
Anwendung ab. In einem Oracle®-Datenbanksystem kann
wiederum eine Oracle®-Ansicht verwendet werden,
um die Attribute abzurufen. Darüber
hinaus kann die IGUI auf die Tabelle ATTRIBUTE_LEVELS zugreifen,
um die Anzahl der Attribute zu verringern.
-
Bei
Pfeil 215 übergibt
die IGUI die relevanten Attribute an die Anwendung, und in Kasten 216 wird
die Anwendung mit der die Attribute durchsetzenden Anwendung ausgeführt. Wenn
der Benutzer versucht, die durch die Attribute definierten Zugriffsgrenzen
zu überschreiten,
kann eine Fehler- oder Warnmeldung angezeigt werden.
-
Für den Fachmann
ist ersichtlich, dass bei einer alternativen Ausführungsform
eine Anwendung die Attribute direkt abrufen kann, ohne Unterstützung durch
eine IGUI, und die Attribute durchsetzen kann.
-
Ansichten
-
Wie
bereits erwähnt,
können
bei der vorliegenden Erfindung Oracle®-Ansichten
verwendet werden, um Datensätze
aus Tabellen abzurufen und zu organisieren. Nachstehend folgt eine
Liste von zwölf
Ansichten, die sich bei der Implementierung der Erfindung als nützlich erwiesen
haben. Dabei werden jeweils eine Erläuterung der Ansicht und ein
SQL-Beispiel angegeben.
-
Ansicht Nr. 1
-
V_ATTRIBUTE_APP_CODES
-
Diese
Ansicht liefert als Ergebnis eine Liste aller einzelnen Anwendungscodes,
die im Benutzerattributesystem eingerichtet sind. Diese Ansicht
führt eine
Funktion SELECT mit der Klausel DISTINCT für Datensätze durch, wobei der ATTRIBUTE_NAME
der reservierte ATTRIBUTE_NAME des 'APP_CODE' ist.
-
SQL-Beispiel:
-
- CREATE OR REPLACE VIEW V_ATTRIBUTE_APP_CODES AS
- SELECT DISTINCT ASSIGNEE,
- ATTRIBUTE_VALUE APP_CODE
- FROM ATTRIBUTES
- WHERE ATTRIBUTE_NAME = 'APP
CODE';
-
Ansicht Nr. 2
-
V_ATTRIBUTE_GROUPS_ATTR
-
Diese
Ansicht liefert als Ergebnis eine Liste aller einzelnen Attributgruppen.
Diese Ansicht führt
eine Funktion SELECT mit der Klausel DISTINCT für Datensätze durch, wobei der ATTRIBUTE_NAME
der reservierte ATTRIBUTE_NAME des 'AS-SIGNEE_TYPE' und der ATTRIBUTE_VALUE
die 'ATTRIBUTE_GROUP' ist.
-
SQL-Beispiel:
-
- CREATE OR REPLACE VIEW V_ATTRIBUTE_GROUPS_ATTR
- AS SELECT DISTINCT ASSIGNEE GROUP NAME
- FROM ATTRIBUTES
- WHERE ATTRIBUTE_NAME = 'ASSIGNEE_TYPE'
- AND ATTRIBUTE_VALUE = 'ATTRIBUTE_GROUP';
-
Ansicht Nr. 3
-
V_ATTRIBUTE_GROUPS_ASSIGN
-
Diese
Ansicht liefert als Ergebnis eine Liste aller einzelnen Zuordnungsgruppen.
Diese Ansicht führt eine
Funktion SELECT mit der Klausel DISTINCT für Datensätze durch, wobei der ATTRIBUTE_NAME
der reservierte ATTRIBUTE_NAME des 'ASSIGNEE_TYPE' und der ATTRIBUTE_VALUE die 'ASSIGNEE_GROUP' ist.
-
SQL-Beispiel:
-
- CREATE OR REPLACE VIEW
- V_ATTRIBUTE_GROUPS_ASSIGN AS
- SELECT DISTINCT ASSIGNEE GROUP_NAME
- FROM ATTRIBUTES
- WHERE ATTRIBUTE_NAME = 'ASSIGNEE_TYPE'
- AND ATTRIBUTE_VALUE = 'ASSIGNEE_GROUP;
-
Ansicht Nr.
4
-
V_ATTRIBUTE_USERS
-
Diese
Ansicht liefert als Ergebnis eine Liste aller einzelnen Attributbenutzer.
Diese Ansicht führt
eine Funktion SELECT mit der Klausel DISTINCT für Datensätze durch, wobei der ASSIGNEE
gleich dem in der Oracle Data Dictionary-Tabelle ALL USERS gefundenen
USERNAME ist.
-
SQL-Beispiel:
-
- CREATE OR REPLACE VIEW V_ATTRIBUTE_USERS AS
- SELECT DISTINCT ASSIGNEE USERID
- FROM ATTRIBUTES,
- ALL_USERS
- WHERE ASSIGNEE = USERNAME;
-
Ansicht Nr. 5
-
V_ATTRIBUTE_GROUPS_ALL
-
Diese
Ansicht liefert als Ergebnis eine Liste aller einzelnen Gruppen
im System. Dies umfasst sowohl Attribut- als auch Zuordnungsgruppen.
Diese Ansicht führt
eine Funktion SELECT mit der Klausel DISTINCT für Datensätze durch, wobei der ASSIGNEE
kein Attributbenutzer ist.
-
SQL-Beispiel:
-
- CREATE OR REPLACE VIEW V_ATTRIBUTE_GROUPS_ALL AS
- SELECT DISTINCT ASSIGNEE GROUP_NAME
- FROM ATTRIBUTES,
- V_ATTRIBUTE_USERS
- WHERE ASSIGNEE = USERID(+)
- AND USERID IS NULL;
-
Ansicht Nr. 6
-
V_USER_GROUPS
-
Diese
Ansicht liefert als Ergebnis eine Liste aller Gruppen, die dem momentan
mit Oracle verbundenen Benutzer zugeordnet sind. Die Ergebnisse
umfassen Gruppen, die dem Benutzer direkt zugeordnet sind, sowie
Gruppen, die dem Benutzer indirekt zugeordnet sind, das heißt Gruppen,
die ZUORDNUNGSGRUPPEN zugeordnet sind, die dem Benutzer zugeordnet
sind. Diese Ansicht führt
eine stammbaumartige Anfrage unter Verwendung der Klausel CONNECT
BY durch.
-
SQL-Beispiel:
-
- CREATE OR REPLACE VIEW V_USER_GROUPS AS
- SELECT ATTRIBUTE_NAME,
- ATTRIBUTE_VALUE
- FROM ATTRIBUTES
- WHERE ATTRIBUTE_NAME! = 'ASSIGNEE_TYPE'
- START WITH ASSIGNEE = USER
- CONNECT BY ASSIGNEE = PRIOR ATTRIBUTE_VALUE
- AND ATTRIBUTE_NAME = 'ASSIGNED_GROUP';
-
Ansicht Nr. 7
-
V_USER_ATTR_APPS
-
Diese
Ansicht liefert als Ergebnis eine Liste aller Attribute, die dem
momentan mit Oracle verbundenen Benutzer zugeordnet sind, zusammen
mit dem entsprechenden APP_CODE. Diese Ansicht kombiniert die Liste
der dem Benutzer zugeordneten Gruppen (V_USER_GROUPS), die Tabelle
ATTRIBUTES und die Liste der ATTRIBUTE_GROUPS mit den entsprechenden
APP_CODE-Werten (V_ATTRIBUTE_APP_CODES).
-
SQL-Beispiel:
-
- CREATE OR REPLACE VIEW V_USER_ATTR_APPS AS
- SELECT ATTR.ATTRIBUTE_NAME,
- ATTR.ATTRIBUTE_VALUE,
- APPS.APP_CODE
- FROM V_USER_GROUPS GROUPS,
- ATTRIBUTES ATTR,
- V_ATTRIBUTE_APP_CODES APPS
- WHERE GROUPS.ATTRIBUTE_VALUE = ATTR.ASSIGNEE
- AND ATTR.ASSIGNEE = APPS.ASSIGNEE
- AND ATTR.ATTRIBUTE_NAME NOT IN
- ('ASSIGNED_GROUP', 'APP_CODE', 'ASSIGNEE_TYPE');
-
Ansicht Nr. 8
-
V_USER_ATTR_HIGHEST_VALUES
-
Diese
Ansicht liefert als Ergebnis eine Liste der ATTRIBUTE_VALUES auf
höchster
Ebene für
die entsprechenden ATTRIBUTE_NAMES. Diese Ansicht kann doppelte
Einträge
enthalten, so dass die weiter unten beschriebene Ansicht V_USER
ATTRIBUTES eine Liste dieser einzelnen Werte abruft. Diese Ansicht übergibt den
APP_CODE, ATTRIBUTE_NAME und ATTRIBUTE_VALUE für jedes Attribut, das dem aktuellen
Benutzer zugeordnet ist, an die Funktion ATTR_UTILS.HIGHEST_VALUE.
Eine Funktion ist dasselbe wie eine Prozedur, außer dass sie als Teil einer
Anfrage ausgeführt
werden kann und als Ergebnis einen Wert liefert.
-
Hier
liefert die Funktion als Ergebnis den höchsten Stammwert, der dem Benutzer
aktuell zugeordnet ist. Eine Beschreibung dieser Funktion ist nach
dem SQL-Beispiel für
diese Ansicht gegeben.
-
SQL-Beispiel:
-
- CREATE OR REPLACE VIEW
- V_USER_ATTR_HIGHEST_VALUES_AS
- SELECT APP_CODE,
- ATTRIBUTE_NAME,
- SUBSTR(ATTR_UTILS.HIGHEST_VALUE(APP_CODE,
- ATTRIBUTE_NAME, ATTRIBUTE_VALUE), 1, 30)
- ATTRIBUTE_VALUE
- FROM V_USER_ATTR_APPS;
-
Die
Funktion ATTR_UTILS.HIGHEST_VALUE erfordert drei Eingaben: den APP_CODE,
den ATTRIBUTE_NAME und den ATTRIBUTE_VALUE. Zuerst lädt die Funktion
eine interne Attributwerttabelle mit allen Attributwerten, die dem
angegebenen Benutzer, APP_CODE und ATTRIBUTE_NAME zugeordnet sind. Hierzu
kann die Funktion eine der bestehenden Ansichten verwenden (das
heißt V_USER_ATTR_ VALUE_LEVELS).
Sodann verwendet die Funktion den aktuellen Attributwert und findet
alle Stammdatensätze
für diesen
Wert. Die Funktion benutzt eine SQL-Anfrage, die wie folgt aussieht:
SELECT
PARENT_VALUE
FROM ATTRIBUTE_LEVELS
WHERE ATTRIBUTE_NAME
= P_ATTRIBUTE_NAME
START WITH CHILD_VALUE = P_ATTRIBUTE_VALUE
CONNECT
BY CHILD_VALUE = PRIOR PARENT_VALUE
-
ORDER
BY LEVEL;
-
Danach
vergleicht die Funktion jeden einzelnen Stammwert mit den Datensätzen in
der Attributwerttabelle, um festzustellen, ob einer der anderen
zugeordneten Attributwerte ein Stammdatensatz ist, das heißt ein Vater,
Großvater
usw. des aktuellen Attributwerts. Wenn ja, wird als Ergebnis der
Attributwert auf höherer Ebene
geliefert. Anderenfalls wird der aktuelle Attributwert als Ergebnis
geliefert.
-
Ansicht Nr. 9
-
V_ATTR_VALUE_LEVELS
-
Diese
Ansicht liefert als Ergebnis eine Liste der ATTRIBUTE_NAMES, der
zugehörigen ATTRIBUTE_VALUES
und der entsprechenden Ebene des Wertes. Die höchste Ebene eines ATTRIBUTE_VALUE
hat zum Beispiel einen ATTRIBUTE_LEVEL von 1, während der Abkömmling des
betreffenden Wertes den Wert 2 hat. Diese Ansicht führt eine
stammbaumartige Anfrage unter Verwendung der Klausel CONNECT BY
durch.
-
SQL-Beispiel:
-
- CREATE OR REPLACE VIEW V_ATTR_VALUE_LEVELS AS
- SELECT ATTRIBUTE_NAME,
- CHILD_VALUE ATTRIBUTE_VALUE,
- LEVEL VALUE_LEVEL
- FROM ATTRIBUTE_LEVELS
- START WITH PARENT_VALUE IS NULL
- CONNECT BY PARENT_VALUE = PRIOR CHILD_VALUE
- AND ATTRIBUTE_NAME = PRIOR ATTRIBUTE_NAME;
-
Ansicht Nr. 10
-
V_USER_ATTR_VALUE
LEVELS
-
Diese
Ansicht liefert als Ergebnis eine Liste aller dem Benutzer zugeordneten
Attribute und deren entsprechende Ebene. Diese Ansicht kombiniert
die Liste der Attribute, die dem momentan mit Oracle verbundenen
Benutzer zugeordnet sind (V_USER_ATTR_APPS) und die Liste der Attribute
und deren entsprechende Ebenen (V_ATTR_VALUE LEVELS).
-
SQL-Beispiel:
-
- CREATE OR REPLACE VIEW V_USER_ATTR_VALUE_LEVELS
- AS SELECT APP_CODE,
- ATTR.ATTRIBUTE_NAME,
- ATTR.ATTRIBUTE_VALUE,
- NVL(VALUE LEVEL,1) VALUE_LEVEL
- FROM V_USER_ATTR APPS ATTR,
- V_ATTR_VALUE_LEVELS LVL
- WHERE
- ATTR.ATTRIBUTE_NAME = LVL.ATTRIBUTE_NAME(+)
- AND
- ATTR.ATTRIBUTE_VALUE = LVL.ATTRIBUTE_VALUE(+);
-
Ansicht Nr. 11
-
V_USER_APP_CODES
-
Diese
Ansicht liefert als Ergebnis eine Liste aller einzelnen APP_CODES,
die dem aktuellen Benutzer zugeordnet sind. Diese Ansicht führt eine
stammbaumartige Anfrage unter Verwendung der Klausel CONNECT BY
durch.
-
SQL-Beispiel:
-
- CREATE OR REPLACE VIEW V_USER_APP_CODES AS
- SELECT DISTINCT ATTR.ATTRIBUTE_VALUE APP_CODE
- FROM (SELECT ATTRIBUTE_NAME,
- ATTRIBUTE_VALUE
- FROM ATTRIBUTES
- START WITH ASSIGNEE = USER
- CONNECT BY ASSIGNEE = PRIOR ATTRIBUTE_VALUE
- AND ATTRIBUTE_NAME = 'ASSIGNED
GROUP') GROUPS,
- ATTRIBUTES ATTR
- WHERE GROUPS.ATTRIBUTE_VALUE = ATTR.ASSIGNEE
- AND ATTR.ATTRIBUTE_NAME = 'APP_CODE';
-
Ansicht Nr. 12
-
V_USER_ATTRIBUTES
-
Diese
Ansicht liefert als Ergebnis eine Liste aller Attribute, die dem
Benutzer zugeordnet sind, zusammen mit nur den ATTRIBUTE_VALUES
der höchsten
Ebene für
die entsprechenden ATTRIBUTE_NAMES. Diese Ansicht führt eine
Funktion SELECT DISTINCT an den V_USER_ATTR_HIGHEST_VALUES durch. (V_USER_ATTR_VALUE_LEVELS).
-
SQL-Beispiel:
-
- CREATE OR REPLACE VIEW V_USER_ATTRIBUTES AS
- SELECT DISTINCT
- APP_CODE,
- ATTRIBUTE_NAME,
- ATTRIBUTE_VALUE
- FROM V_USER_ATTR_HIGHEST_VALUES;
-
Um
in einer Oracle®-Umgebung
sicherzustellen, dass die Daten in den Tabellen ATTRIBUTES und ATTRIBUTE_LEVELS
korrekt verwaltet werden, werden vorzugsweise nur Oracle®-Prozeduren
verwendet, um die Verwaltung von Benutzerattributen durchzuführen. Dies
kann garantiert werden, indem der Zugriff auf die verschiedenen
Objekte, zum Beispiel Tabellen, Ansichten, Prozeduren und Funktionen,
im Benutzerattributesystem eingeschränkt wird. Den Tabellen ATTRIBUTES
und ATTRIBUTE_LEVELS sowie allen Ansichten sollte eine Nur-Lesen-Berechtigung
zugewiesen werden. Die Ausführungsberechtigung
für die
zur Verwaltung dieser Tabellen verwendeten Oracle®-Prozeduren
sollte nur den Benutzerattributen für Administrator(en) zugewiesen
werden. Dadurch ist sichergestellt, dass nicht autorisierte Benutzer
die Attribute oder Attributebenen nicht manipulieren können.