ACL-Steuerung von Funktionsfeldern
Bei der Auswertung des Zugriffs auf ein Funktionsfeld prüft das System nicht nur den Zugriff auf das Funktionsfeld selbst, sondern auch auf die beitragenden Felder der Funktion. Beitragende Felder sind diejenigen, die als Argumente in einer bestimmten Funktionsdefinition verwendet werden.
Weitere Informationen zu Funktionsfeldern finden Sie unter Funktionsfeld.
In Rome und früheren Versionen prüft das System einfach den Zugriff auf das Funktionsfeld selbst (wie bei jedem anderen Feld auch). Wenn die ACLs für dieses Feld den Zugriff zulassen, erhält der Benutzer den resultierenden Wert, unabhängig davon, ob er Zugriff auf die beitragenden Felder hat.
In Yokohama und höher benötigt das System außerdem Zugriff auf alle beitragenden Felder, um den Zugriff auf das Funktionsfeld zu ermöglichen. Wenn eine oder mehrere der beitragenden Feld-ACLs den Zugriff verweigern, verweigert auch das Funktionsfeld den Zugriff.
Die einzigen von der neuen Anforderung betroffenen Vorgänge sind „read“ und „report_view“. „report_view“ hat eigene zusätzliche Anforderungen.
| Vorgang | Beschreibung |
|---|---|
| Lesevorgang | Ein Benutzer hat nur dann Lesezugriff auf ein Funktionsfeld, wenn beide der folgenden Bedingungen erfüllt sind:
|
| report_view-Vorgang | Ein Benutzer hat nur dann report_view-Zugriff auf ein Funktionsfeld, wenn alle der folgenden Bedingungen erfüllt sind:
|
Beispiele
- Tabelle: Gehalt
- Spalten: Base, Bonus, Total (in diesem Beispiel sind alle Ganzzahlen)
- Funktionsfeld: Die Gesamtsummenspalte ist als Funktionsfeld markiert, mit der Funktionsdefinition
„glidefunction:add(base, Bonus)“. - Beitragende Felder: Basis und Bonus, da sie in der Funktionsdefinition verwendet werden
- Rollen: Gehalt_Administrator, Bonus_Administrator
| ACLs | Ergebnis |
|---|---|
| „total“, „base“, „bonus: read“ und „report_view“ für die Rolle „gehalt_admin“ ohne Bedingungen oder Skripts | Einem Benutzer mit der Rolle „gehalt_admin“ wird der Lese- und Bericht_Ansichtszugriff auf „total“ gewährt, da er über die erforderliche Rolle verfügt. |
| ACLs | Ergebnis |
|---|---|
|
Einem Anwender mit der Rolle „salary_admin“ wird der Lese- und report_view-Zugriff auf „total“ verweigert, da der Bonus den Lesezugriff für seine Rolle verweigert. |
| ACLs | Ergebnis |
|---|---|
|
Einem Benutzer mit der Rolle „gehalt_admin“ wird Lesezugriff auf „total“ gewährt, da er über die erforderliche Rolle für alle Felder verfügt. Dem gleichen Anwender mit „gehalt_admin“ wird jedoch der Zugriff auf „report_view“ verweigert, da die Lese-ACL mit dem Skript den Zugriff für diesen Fall standardmäßig verweigert, obwohl er über die erforderliche Rolle verfügt. |