ACL-Steuerung von Funktionsfeldern

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 2 Minuten Lesedauer
  • 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:
    • Der Benutzer hat Lesezugriff auf das Funktionsfeld.
    • Der Benutzer hat Lesezugriff auf alle beitragenden Felder, die in der Funktion verwendet werden.
    report_view-Vorgang Ein Benutzer hat nur dann report_view-Zugriff auf ein Funktionsfeld, wenn alle der folgenden Bedingungen erfüllt sind:
    • Der Benutzer hat Zugriff vom Typ report_view auf das Funktionsfeld.
    • Der Anwender hat Zugriff vom Typ „report_view“ auf alle beitragenden Felder.
    • Es gibt eine Lese-ACL nur für Rollen ohne Bedingungen und ohne Skript, und der Benutzer hat diese Rolle.
    • Der Benutzer hat nur über die Rolle Lesezugriff auf die beitragenden Felder, sodass dies nur ACLs ohne Bedingung oder Skript zulassen.

    Beispiele

    Gegeben:
    • 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
    Tabelle : 1. Beispiel 1: Alle Felder erlauben Zugriff
    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.
    Tabelle : 2. Beispiel 2: Beitragendes Feld verweigert Lesezugriff
    ACLs Ergebnis
    • „total“, „base: read“ und „report_view“ für die Rolle „gehalt_admin“ ohne Bedingungen oder Skripts
    • „bonus“: „report_view“ für die Rolle „salary_admin“ , ohne Bedingungen oder Skripts
    • Bonus: gelesen für Rolle „bonus_admin“, ohne Bedingungen oder Skripts
    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.
    Tabelle : 3. Beispiel 3: Beitragende Feld-ACL hat Skript
    ACLs Ergebnis
    • „total“, „base: read“ und „report_view“ für die Rolle „gehalt_admin“ ohne Bedingungen oder Skripts
    • Bonus: report_view für die Rolle „bonus_admin“ ohne Bedingungen oder Skripts
    • Bonus: gelesen für Rolle Gehalt_Administrator, mit einem Skript (beachten Sie, dass es keine Rolle spielt, was im Skript enthalten ist, nur, dass es vorhanden ist)
    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.