Durchsuchen von Zugriffssteuerungslisten

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 8 Minuten Lesedauer
  • Erkunden Sie Zugriffssteuerungslisten (ACLs).

    Komponenten von ACLs

    Alle Regeln der Zugriffskontrollliste geben Folgendes an:
    • Das Objekt und der Vorgang, die gesichert werden
    • Die für den Zugriff auf das Objekt erforderlichen Berechtigungen

    Das Objekt ist das Ziel, für das der Zugriff gesteuert werden muss. Jedes Objekt besteht aus einem Typ und einem Namen, der eine bestimmte Tabelle, ein bestimmtes Feld oder einen bestimmten Datensatz eindeutig identifiziert.

    Alle diese Einträge geben beispielsweise ein Objekt an:

    Typ Name Objekt gesichert
    record [incident].[--Keine--] Die Incident-Tabelle.
    record [incident].[aktiv] Das Feld Aktiv in der Incident-Tabelle.
    REST_Endpunkt user_role_inheritance Der Datensatz für die Scripted REST API user_role_inheritance.

    Jeder Vorgang beschreibt eine gültige Aktion, die das System für das angegebene Objekt ausführen kann. Einige Objekte, z. B. Datensätze, unterstützen mehrere Vorgänge, während andere Objekte, z. B. ein REST_Endpoint, nur einen Vorgang unterstützen.

    Alle diese Einträge geben beispielsweise einen Vorgang an:

    Typ Name Vorgang Vorgang gesichert
    record [incident].[--Keine--] Erstellen Erstellen von Datensätzen in der Incident-Tabelle.
    record [incident].[aktiv] write Das Feld Aktiv in der Incident-Tabelle wird aktualisiert.
    REST_Endpunkt user_role_inheritance ausführen Ausführen der geskripteten REST-API user_role_inheritance.
    Die Berechtigungen geben an, wann jemand auf das benannte Objekt und den Vorgang zugreifen kann. Sicherheitsadministratoren können Berechtigungsanforderungen angeben, indem sie Folgendes hinzufügen:
    • Eine oder mehrere Benutzerrollen für die Liste „Erfordert Rollen“
    • Eine oder mehrere Bedingungen.
    • Ein Skript, das als „true“ oder „false“ ausgewertet wird oder die Antwortvariable auf „true“ oder „false“ setzt.

    Um Zugriff auf ein Objekt und einen Vorgang zu erhalten, muss ein Benutzer alle in einer Zugriffssteuerung aufgeführten Berechtigungen übergeben. Diese Zugriffssteuerung schränkt beispielsweise den Zugriff zum Anzeigen von Vorgängen in der Incident-Tabelle ein.

    ACL für einen Incident-Datensatz.

    Um einen Datensatz in der Incident-Tabelle zu aktualisieren, muss ein Benutzer über die aufgelisteten Rollen verfügen und der Datensatz muss die Bedingung erfüllen.

    Berechtigungstyp Anforderung Beschreibung
    Erfordert Rolle Erfordert Rolle:itil Lassen Sie nur Benutzer mit der Rolle itil zu, Incidents zu aktualisieren.
    Bedingung [Incident-Status] [ist nicht] [Geschlossen] Lassen Sie nur Aktualisierungen für aktive Incident-Datensätze zu.

    ACL-Auswertungsprozess

    Eine ACL-Regel gewährt einem Benutzer nur dann Zugriff auf ein Objekt, wenn der Benutzer alle für die entsprechende ACL-Regel erforderlichen Berechtigungen erfüllt.

    • Die Bedingung muss als „ true“ ausgewertet werden.
    • Das Skript muss als „ true “ ausgewertet werden oder eine Antwortvariable mit dem Wert „ true“ zurückgeben.
    • Der Benutzer muss eine der Rollen in der Liste der erforderlichen Rollen haben. Wenn die Liste leer ist, wird diese Bedingung als „ true“ ausgewertet.
    • [Nur Datensatz-ACL-Regeln] Die übereinstimmenden ACL-Regeln auf Tabellenebene und Feldebene müssen beide als „ true“ ausgewertet werden.
    Abbildung : 1. ACL-Bewertungsberechtigungen
    ACL-Bewertungsberechtigungen

    Immer wenn eine Sitzung Daten anfordert, sucht das System nach Zugriffskontrollregeln, die dem angeforderten Objekt und Vorgang entsprechen. Wenn eine übereinstimmende Zugriffskontrollregel vorhanden ist, wertet das System aus, ob der Benutzer über die erforderlichen Berechtigungen für den Zugriff auf das Objekt und den Vorgang verfügt. Wenn eine Zugriffskontrollregel mehr als eine Berechtigung angibt, muss der Benutzer alle Berechtigungen erfüllen, um Zugriff auf das Objekt und den Vorgang zu erhalten. Wenn eine Berechtigungsprüfung fehlschlägt, kann der Benutzer nicht auf das übereinstimmende Objekt und den übereinstimmenden Vorgang zugreifen.

    Wenn ein Benutzer die Berechtigungen der ersten Übereinstimmungsregel nicht erfüllt, wertet das System die Berechtigungen der nächsten übereinstimmenden Zugriffskontrollregel aus, wie in der Verarbeitungsreihenfolge der Zugriffskontrolle angegeben. Wenn der Benutzer die Berechtigungen einer übereinstimmenden Zugriffskontrollregel nicht erfüllt, verweigert das System den Zugriff auf das angeforderte Objekt und den angeforderten Vorgang.
    Hinweis:
    Wenn für das angeforderte Objekt und den angeforderten Vorgang keine übereinstimmenden Zugriffskontrollregeln vorhanden sind, gewährt das System dem Benutzer Zugriff darauf. In der Praxis kommt es selten vor, dass das System keine übereinstimmenden Regeln findet, da das System über eine Reihe von Standardzugriffskontrollregeln verfügt, die alle Datensatzvorgänge schützen.

    Die Auswirkungen der Verweigerung des Zugriffs auf ein Objekt hängen von der ACL-Regel ab, die der Benutzer nicht bestanden hat. Beispiel: Wenn die ACL-Regel eines Lesevorgangs fehlschlägt, kann der Benutzer das Objekt nicht sehen. Abhängig vom gesicherten Objekt blendet die ACL-Regel ein Feld in einem Formular aus, blendet Zeilen in einer Liste aus oder verhindert, dass ein Benutzer auf eine UI-Seite zugreift. Die folgende Tabelle enthält eine vollständige Liste der Ergebnisse einer fehlgeschlagenen ACL-Regel für einen bestimmten Vorgang und Objekttyp.

    ACL-Prüfungen vor und nach der Abfrage

    Ihre Instanz überprüft ACL-Regeln sowohl vor als auch nach einer Abfrage durch einen Benutzer. Da vor und nach einer Abfrage unterschiedliche Informationen verfügbar sind, können die Ergebnisse unterschiedlich sein.
    ACL-Prüfung vor der Abfrage

    Bevor Ihre Instanz eine Datenbankabfrage ausführt, überprüft sie die ACL-Regeln für jedes Feld in der abgefragten Tabelle, um zu bestimmen, auf welche Felder ein Benutzer zugreifen darf. Diese Prüfung betrachtet nur die Rollen des Benutzers und prüft, ob diese Rollen den Zugriff auf Felder ermöglichen. Da diese Prüfung vor der Abfrage ausgeführt wird, hat die ACL keinen Zugriff auf die Datensätze in der Tabelle und kann diese Daten daher nicht berücksichtigen. Skripts und Bedingungen, die von der Kenntnis des Inhalts eines Datensatzes abhängig sind, werden nicht ausgewertet.

    Wenn der Benutzer zu diesem Zeitpunkt keinen Lesezugriff hat, wird dem Benutzer der Wert für das Feld nicht angezeigt.

    ACL-Prüfung nach der Abfrage

    Nach der Abfrage überprüft Ihre Instanz jeden von der Abfrage zurückgegebenen Datensatz. Während dieser Prüfung gibt es einen Kontext für die ACL, sodass die Rollen-, Bedingungs- und Skriptteile der ACL ausgewertet werden. Wenn der Benutzer zu diesem Zeitpunkt keinen Lesezugriff hat, wird dem Benutzer der Wert für das Feld nicht angezeigt. Dem Benutzer wird jedoch die Feldbezeichnung angezeigt, wenn seine Rollen den Zugriff auf das Feld zulassen.

    Vorgang Ergebnisse des Fehlschlagens einer ACL-Regel für das Objekt
    ausführen Benutzer können keine Skripts für einen Datensatz oder eine UI-Seite ausführen.
    Erstellen Benutzer können die neue UI-Aktion in Formularen nicht sehen. Der Benutzer kann auch keine Datensätze mithilfe von API-Protokollen wie Webservices in eine Tabelle einfügen.

    Eine Erstellungs -ACL mit einer Bedingung, die erfordert, dass ein Feld einen bestimmten Wert enthält, wird immer als „falsch“ ausgewertet. Felder in neuen Datensätzen werden als leer betrachtet, bis der Datensatz gespeichert wird.

    gelesen Anwender kann das Objekt in Formularen oder Listen nicht sehen. Der Benutzer kann Datensätze auch nicht über API-Protokolle wie Webservices abrufen.
    write Benutzer sehen in Formularen und Listen ein schreibgeschütztes Feld und können Datensätze nicht mit API-Protokollen wie Webservices aktualisieren.
    löschen Benutzer können die UI-Aktion „Löschen “ in Formularen nicht sehen. Der Benutzer kann auch keine Datensätze aus einer Tabelle entfernen, indem er API-Protokolle wie Webservices verwendet.
    edit_task_relations Anwender kann keine Beziehungen zwischen Aufgabentabellen definieren.
    edit_ci_relations Benutzer kann keine Beziehungen zwischen Konfigurationselementtabellen [cmdb_ci] definieren.
    save_as_template Wird verwendet, um die Felder zu steuern, die beim Erstellen einer Vorlage gespeichert werden sollen.
    add_to_list Benutzer können bestimmte Spalten in der Listenmechanik nicht anzeigen oder personalisieren.
    list_edit Anwender kann keine Datensätze (Zeilen) aus einer Liste aktualisieren.
    report_on Anwender kann keinen Bericht in der ACL-Tabelle erstellen. Weitere Informationen finden Sie unter Berichterstellung mit einer ACL-Regel einschränken.
    report_view Benutzer können den Inhalt eines Berichts in der ACL-Tabelle oder im ACL-Feld nicht anzeigen. Weitere Informationen finden Sie unter Reporting.
    personalize_choices Benutzer kann nicht mit der rechten Maustaste auf ein Listenfeld klicken und Auswahlmöglichkeiten konfigurierenauswählen.

    ACL-Übereinstimmungsanforderungen für -Objekte

    Objekttyp Übereinstimmende ACL-Regeln für Zugriff auf Objekt erforderlich Vorhandene Platzhalter-ACL-Regeln
    Vom Client aufrufbare Skripteinbindungen Benutzer müssen die Berechtigungen von zwei ACL-Regeln erfüllen:
    1. Alle Platzhalter-ACL-Regeln für das Objekt (falls eine ACL-Regel für den Vorgang vorhanden ist).
    2. Die erste ACL-Regel, die dem Namen des Objekts entspricht (falls eine ACL-Regel für den Vorgang vorhanden ist).
    Standardmäßig gibt es keine Platzhalterregeln (*) für diese Objekttypen. Wenn Sie eine Platzhalter-ACL-Regel für eines dieser Objekte erstellen, gilt die ACL-Regel für alle Objekte dieses Typs.
    Prozessoren
    UI-Seiten Benutzer müssen die Berechtigungen von zwei ACL-Regeln erfüllen:
    1. Die erste ACL-Regel, die dem Feld des Datensatzes entspricht (falls eine ACL-Regel für den Vorgang vorhanden ist).
    2. Die erste ACL-Regel, die der Tabelle des Datensatzes entspricht (falls eine ACL-Regel für den Vorgang vorhanden ist).
    Standardmäßig gibt es Platzhalter-Tabellenregeln (*) für die Vorgänge Erstellen, Lesen, Schreiben und Löschen und Platzhalter-Feldregeln (*.*) für die Vorgänge „personalize_choices“, „create“ und „save_as_template“. Wenn Sie eine Tabelle erstellen, erstellen Sie ACL-Regeln für die Tabelle, es sei denn, Sie möchten die bereitgestellten Platzhalter-ACL-Regeln verwenden.
    Datensatz
    Hinweis:
    Die Eigenschaft Security Manager Standardverhalten (glide.sm.default_mode) bestimmt, ob Benutzer auf Objekte zugreifen können, die nur mit ACL-Regeln der Platzhaltertabelle übereinstimmen. Wenn diese Eigenschaft auf Zugriff verweigernfestgelegt ist, können nur Administratoren auf Objekte zugreifen, die den ACL-Regeln der Platzhaltertabelle entsprechen.
    Hinweis:
    Die ACL-Regel für Platzhalterfelder (*.*) für den Erstellungsvorgang verwendet dieselben Berechtigungen wie der Schreibvorgang. Dies bedeutet, dass die Erstellungsberechtigungen mit den Schreibberechtigungen identisch sind, es sei denn, Sie definieren eine explizite ACL-Regel für den Erstellungsvorgang.

    Mehrere ACL-Regeln am selben Punkt in der Verarbeitungsreihenfolge

    Wenn zwei oder mehr Regeln an derselben Stelle in der Verarbeitungsreihenfolge übereinstimmen, muss der Benutzer eine der ACL-Regelberechtigungen übergeben, um auf das Objekt zugreifen zu können. Wenn Sie beispielsweise zwei Feld-ACL-Regeln für incident.numbererstellen, hat ein Benutzer, der eine Regel übergibt, Zugriff auf das Nummernfeld, unabhängig davon, ob der Benutzer eine andere Feld-ACL-Regel an derselben Stelle in der Verarbeitungsreihenfolge durchlaufen hat.

    Erforderliche Rolle

    Normale Administratorbenutzer können Zugriffskontrollregeln anzeigen und debuggen. Um jedoch Zugriffskontrollregeln zu erstellen oder vorhandene zu aktualisieren, müssen Administratoren die Berechtigungen für die Rolle security_admin erhöhen. Siehe Führen Sie eine Erhöhung auf eine privilegierte Rolle durch für Anweisungen.

    ACL-Regeln in bereichsbezogenen Anwendungen

    Sie können ACL-Regeln für Objekte im selben Bereich wie die ACL-Regel erstellen. Sie können ACL-Regeln auch für Tabellen mit mindestens einem Feld erstellen, das sich im selben Bereich wie die ACL-Regel befindet.

    Für Tabellen, die sich in einem anderen Bereich als der ACL-Regeldatensatz befinden, sind die Regeltypen beschränkt.
    • Sie können eine ACL-Regel für jede Tabelle, UI-Seite oder ein anderes Objekt erstellen, das sich im selben Bereich wie die ACL-Regel befindet.
    • Sie können eine ACL für ein Feld erstellen, das sich im selben Bereich wie die ACL-Regel befindet.
      • Wenn sich die Tabelle im selben Bereich befindet, können Sie ein Skript zum Auswerten von Berechtigungen verwenden.
      • Wenn sich die Tabelle in einem anderen Bereich befindet, können Sie kein Skript zum Auswerten von Berechtigungen verwenden.
    • Sie können keine ACL-Regeln für Objekte erstellen oder ändern, die sich in einem anderen Bereich befinden als die Anwendung, die Sie in der Anwendungsauswahl ausgewählt haben. Dies schließt das Hinzufügen einer Rolle zu einer ACL in einem anderen Bereich ein.
    • Sie können Platzhalter-Tabellenregeln (*) nur im globalen Bereich erstellen.
    • Sie können Platzhalter-Feldregeln (*) nur für Tabellen erstellen, die sich im selben Bereich wie die ACL-Regel befinden.