Zugriffssteuerungslisten Erkunden
Untersuchen Sie Zugriffssteuerungslisten (ACLs).
- Die Entscheidungstyp , Regeltyp Und Vorgang Welche die ACL definiert
- Die Objekt Wird gesichert
- Die Bedingungen Erforderlich für den Zugriff auf das Objekt
Komponenten der ACL
Der Entscheidungstyp definiert, ob Anwender auf das Objekt zugreifen dürfen, wenn Bedingungen erfüllt sind, oder verweigert den Zugriff auf das Objekt, es sei denn, die Bedingungen sind erfüllt.
| Entscheidungstyp | Beschreibung |
|---|---|
| Verweigern – Es Sei Denn | Beschränken Sie den Zugriff auf die Ressource, indem Sie den Zugriff explizit verweigern, es sei denn, Bedingungen werden übergeben. Weitere Informationen finden Sie unter acl-denial-behavior.html#acl-denial-behavior__section_qnd_snl_zbc. |
| Zulassen, Wenn | Zugriff auf Ressource zulassen, wenn Bedingungen übergeben werden. |
Die Objekt Ist das Ziel, auf das der Zugriff gesteuert werden muss. Jedes Objekt besteht aus einem Typ und einem Namen, die eine bestimmte Tabelle, ein bestimmtes Feld oder einen bestimmten Datensatz eindeutig identifizieren. Mit Gilt für Feldanwender haben eine granulare Kontrolle darüber, für welche spezifischen Datensätze diese ACL gilt.
Beispielsweise geben alle diese Einträge ein Objekt an:
| Typ | Name | Objekt gesichert |
|---|---|---|
| record | [Incident].[--keine--] | Die Incident-Tabelle. |
| record | [Incident].[aktiv] | Das Feld aktiv in der Incident-Tabelle. |
| record | [incident] Gilt für: Priorität = P1 |
Nur Incidents mit Priorität 1 in der Incident-Tabelle. |
| REST_Endpoint | User_role_inheritance | Der Datensatz für die geskriptete REST API user_role_inheritance. |
Jeweils Vorgang Beschreibt einen gültigen Aktion Das System kann das angegebene Objekt übernehmen. 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.
Beispiel: Alle diese Einträge geben einen Vorgang an:
| Typ | Name | Vorgang | Vorgang gesichert |
|---|---|---|---|
| record | [Incident].[--keine--] | Erstellen | Erstellen von Datensätzen in der Incident-Tabelle. |
| record | [Incident].[aktiv] | Schreiben | Das Feld aktiv in der Incident-Tabelle wird aktualisiert. |
| REST_Endpoint | User_role_inheritance | ausführen | Ausführung der geskripteten REST API user_role_inheritance. |
- Eine oder mehrere Anwenderrollen für den Erfordert Rolle Liste.
- Mindestens ein Sicherheitsattribut muss als „wahr“ ausgewertet werden.
- Mindestens eine Datenbedingung.
- Ein Skript, das als „wahr“ oder „falsch“ ausgewertet oder festgelegt wird
AntwortVariable auf „wahr“ oder „falsch“.
Um Zugriff auf ein Objekt und einen Vorgang zu erhalten, muss ein Anwender alle in einer Zugriffssteuerung aufgeführten Bedingungen erfüllen. Diese Zugriffssteuerung schränkt beispielsweise den Zugriff auf die Anzeige von Vorgängen in der Incident-Tabelle ein.
Um einen Datensatz in der Incident-Tabelle zu aktualisieren, muss ein Anwender über die aufgelisteten Rollen verfügen, und der Datensatz muss die Bedingung erfüllen.
| Bedingungstyp | Anforderung | Beschreibung |
|---|---|---|
| Erfordert Rolle | Erfordert Rolle : itil | Erlauben Sie nur Anwendern mit der Rolle itil, Incidents zu aktualisieren. |
| Sicherheitsattribute | UserIsAuthenticated | Nur authentifizierte Anwender zum Aktualisieren von Incidents. |
| Datenbedingung | [Incident-Status] [ist nicht] [Geschlossen] | Nur Aktualisierungen aktiver Incident-Datensätze zulassen. |
Gilt für Verhalten
Die Gilt für Das Feld bestimmt, ob eine ACL für Datensätze gilt, während die Datenbedingung eine bereits angewendete ACL auswertet. Gilt für Gibt an, ob sich die ACL auf einen bestimmten Datensatz auswirkt. Wenn sie leer ist, gilt die ACL für alle Datensätze. Gilt für Kann für die granulare ACL-Durchsetzung verwendet werden, während „Datenbedingung“ ein Bewertungskriterium ist.
Standardmäßiges Verhalten ablehnen
- Definierte Rolle
- Sicherheitsattribut
- Datenbedingung
- Skript
- ACLs mit Rollen, die nicht vorhanden sind (z. B. keine Zeile in der Datenbank)
- ACLs mit nicht vorhandenen Sicherheitsattributen (z. B. keine Zeile in der Datenbank)
- ACLs mit einem Skript, das „answer=true“ oder „wahr“ enthält
Wenn das System erkennt, dass der Anwender eine ACL erstellt, fordert es den Anwender auf, eine Rolle oder ein vorhandenes Sicherheitsattribut auszuwählen.
ACL-Bewertungsprozess
Eine ACL-Regel gewährt einem Anwender nur Zugriff auf ein Objekt, wenn der Anwender alle Bedingungen erfüllt, die für die übereinstimmende ACL-Regel erforderlich sind.
- Die Bedingung muss bis ausgewertet werden Wahr .
- Das Skript muss bis ausgewertet werden Wahr Oder geben Sie eine Antwortvariable mit dem Wert zurück Wahr .
- Der Anwender muss über eine der Rollen in der Liste der erforderlichen Rollen verfügen. Wenn die Liste leer ist, wird diese Bedingung als ausgewertet Wahr .
- [Nur Datensatz-ACL-Regeln] die übereinstimmenden ACL-Regeln auf Tabellenebene und Feldebene müssen beide als ausgewertet werden Wahr .
Wenn eine Sitzung Daten anfordert, sucht das System nach Zugriffssteuerungsregeln, die dem angeforderten Objekt und Vorgang entsprechen. Wenn eine übereinstimmende Zugriffssteuerungsregel vorhanden ist, bewertet das System, ob der Anwender über die Bedingungen verfügt, die für den Zugriff auf das Objekt und den Vorgang erforderlich sind. Wenn eine Zugriffssteuerungsregel mehr als eine Bedingung angibt, muss der Anwender alle Bedingungen erfüllen, um Zugriff auf das Objekt und den Vorgang zu erhalten. Wenn eine Bedingungsprüfung fehlschlägt, kann der Anwender nicht auf das übereinstimmende Objekt und den entsprechenden Vorgang zugreifen.
Die Auswirkungen, die der Zugriff auf ein Objekt verweigert wird, hängen von der ACL-Regel ab, die der Anwender fehlgeschlagen ist. Wenn beispielsweise eine ACL-Regel für Lesevorgänge fehlschlägt, kann der Anwender das Objekt nicht sehen. Je nach gesichertem Objekt blendet die ACL-Regel ein Feld in einem Formular aus, blendet Zeilen in einer Liste aus oder verhindert, dass ein Anwender auf eine UI-Seite zugreift. Die folgende Tabelle enthält eine vollständige Liste der Ergebnisse des Fehlschlags einer ACL-Regel für einen bestimmten Vorgang und Objekttyp.
ACL-Prüfungen vor und nach der Abfrage
- ACL-Prüfung vorab abfragen
-
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 Anwender zugreifen kann. Diese Prüfung untersucht nur die Rollen des Anwenders und überprüft, ob diese Rollen Zugriff auf Felder zulassen. Da diese Prüfung vor der Abfrage ausgeführt wird, hat die ACL keinen Zugriff auf die Datensätze in der Tabelle, daher kann sie diese Daten nicht berücksichtigen. Skripts und Bedingungen, die davon abhängen, den Inhalt eines Datensatzes zu kennen, werden nicht ausgewertet.
Wenn der Anwender zu diesem Zeitpunkt keinen Lesezugriff hat, wird dem Anwender der Wert für das Feld nicht angezeigt.
- ACL-Prüfung nach Abfrage
-
Nach der Abfrage überprüft Ihre Instanz jeden von der Abfrage zurückgegebenen Datensatz. Während dieser Prüfung gibt es Kontext für die ACL, sodass die Rollen-, Bedingungs- und Skriptabschnitte der ACL ausgewertet werden. Wenn der Anwender zu diesem Zeitpunkt keinen Lesezugriff hat, wird dem Anwender der Wert für das Feld nicht angezeigt. Der Anwender sieht jedoch die Feldbezeichnung, wenn seine Rollen den Zugriff auf das Feld zulassen.
| Vorgang | Ergebnisse des Fehlschlags einer ACL-Regel für ein Objekt |
|---|---|
| ausführen | Anwender kann keine Skripts auf einem Datensatz oder einer UI-Seite ausführen. |
| Erstellen | Anwender kann nicht sehen Neu UI-Aktion aus Formularen. Der Anwender kann auch keine Datensätze mithilfe von API-Protokollen wie Webservices in eine Tabelle einfügen. A Erstellen ACL mit einer Bedingung, die erfordert, dass ein Feld einen bestimmten Wert enthält, kann als falsch ausgewertet werden. Felder in neuen Datensätzen werden als leer betrachtet, bis der Datensatz gespeichert wurde. |
| gelesen | Der Anwender kann das Objekt in Formularen oder Listen nicht sehen. Der Anwender kann auch keine Datensätze mit API-Protokollen wie Webservices abrufen. |
| Schreiben | Der Anwender sieht ein schreibgeschütztes Feld in Formularen und Listen, und der Anwender kann Datensätze nicht mithilfe von API-Protokollen wie Webservices aktualisieren. |
| löschen | Anwender kann nicht sehen Löschen UI-Aktion aus Formularen. Der Anwender kann auch keine Datensätze aus einer Tabelle mithilfe von API-Protokollen wie Webservices entfernen. |
| Edit_Task_Relations | Anwender kann keine Beziehungen zwischen Aufgabentabellen definieren. |
| Edit_ci_Relations | Anwender kann keine Beziehungen zwischen Konfigurationselement-Tabellen [cmdb_ci] definieren. |
| Save_as_template | Wird verwendet, um die Felder zu steuern, die beim Erstellen einer Vorlage gespeichert werden sollen. |
| Add_to_list | Anwender kann bestimmte Spalten in der Listenmechanik nicht anzeigen oder personalisieren. |
| List_Edit | Anwender kann Datensätze (Zeilen) aus einer Liste nicht aktualisieren. |
| report_on | Anwender kann keinen Bericht in der ACL-Tabelle erstellen. Weitere Informationen finden Sie unter Beschränken Sie die Berichterstellung mit einer ACL-Regel . |
| report_view | Der Anwender kann den Inhalt eines Berichts nicht in der ACL-Tabelle oder im ACL-Feld anzeigen. Weitere Informationen finden Sie unter Reporting. |
| Personalize_choices | Anwender kann nicht mit der rechten Maustaste auf ein Listenfeld klicken und auswählen Konfigurieren Sie Auswahlmöglichkeiten . |
ACL-übereinstimmende Anforderungen für Objekte
| Objekttyp | Übereinstimmende ACL-Regeln, die für den Zugriff auf das Objekt erforderlich sind | Vorhandene Platzhalter-ACL-Regeln |
|---|---|---|
| Vom Client aufrufbare Skripteinbindungen | Anwender müssen die Bedingungen von zwei ACL-Regeln erfüllen:
|
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 | Anwender müssen die Bedingungen von zwei ACL-Regeln erfüllen:
|
Standardmäßig gibt es Platzhaltertabellenregeln (*) für die Vorgänge „Erstellen“, „Lesen“, „Schreiben“ und „Löschen“ sowie Platzhalterfeldregeln (*.*) 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 ACL-Regeln mit Platzhaltern verwenden. |
| Datensatz |
Mehrere ACL-Regeln am selben Punkt in der Verarbeitungsreihenfolge
Wenn zwei oder mehr Regeln an demselben Punkt in der Verarbeitungsreihenfolge übereinstimmen, muss der Anwender eine der ACL-Regelbedingungen übergeben, um auf das Objekt zuzugreifen. Wenn Sie beispielsweise ACL-Regeln für zwei Felder erstellen incident.number, Dann hat ein Anwender, der eine Regel übergibt, Zugriff auf das Nummernfeld, unabhängig davon, ob der Anwender eine andere Feld-ACL-Regel am selben Punkt in der Verarbeitungsreihenfolge fehlgeschlagen ist.
Erforderliche Rolle
Normale Administratorbenutzer können Zugriffssteuerungsregeln anzeigen und debuggen. Um jedoch vorhandene Zugriffssteuerungsregeln zu erstellen oder zu aktualisieren, müssen Administratoren Berechtigungen auf die Rolle „Security_admin“ erhöhen. Siehe Auf eine privilegierte Rolle hochstufen für Anweisungen.
ACL-Regeln in bereichsbezogenen Anwendungen
Sie können ACL-Regeln für Objekte im selben Umfang wie die ACL-Regel erstellen. Sie können auch ACL-Regeln für Tabellen mit mindestens einem Feld erstellen, das sich im gleichen Umfang wie die ACL-Regel befindet.
- Sie können eine ACL-Regel für jede Tabelle, UI-Seite oder ein anderes Objekt erstellen, das sich im selben Umfang wie die ACL-Regel befindet.
- Sie können eine ACL für ein Feld erstellen, das sich im selben Umfang wie die ACL-Regel befindet.
- Wenn sich die Tabelle im selben Umfang befindet, können Sie ein Skript zum Auswerten von Bedingungen verwenden.
- Wenn sich die Tabelle in einem anderen Bereich befindet, können Sie kein Skript zum Auswerten von Bedingungen verwenden.
- Sie können keine ACL-Regeln für Objekte erstellen oder ändern, die sich in einem anderen Bereich als der Anwendung befinden, die Sie in der Anwendungsauswahl ausgewählt haben, einschließlich dem Hinzufügen einer Rolle zu einer ACL in einem anderen Bereich.
- Sie können Platzhaltertabellenregeln (*) nur im globalen Bereich erstellen.
- Sie können Platzhalterfeldregeln (*) nur für Tabellen im selben Umfang wie die ACL-Regel erstellen.