Durchsuchen von Zugriffssteuerungslisten
Erkunden Sie Zugriffssteuerungslisten (ACLs).
Komponenten von ACLs
- 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. |
- 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
Antwortvariableauf „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.
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.
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.
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
- 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:
|
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:
|
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 |
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.
- 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.