Access Control Lists (ACL)

Die Arbeit mit Tickets kann zu einer verwirrenden Aufgabe werden. Es gibt viele Möglichkeiten, Tickets zu bearbeiten oder zu schließen, auch wenn sie im aktuellen Zustand eines Tickets oder aufgrund der Rolle des aktuellen Agenten nicht benötigt werden. Das Ausblenden nicht benötigter Einträge bereinigt die Menüleiste und erleichtert die Arbeit. Das Ausblenden von Werten aus Dynamischen Feldern oder Queues verringert die Wahrscheinlichkeit von menschlichen Fehlern.

OTRS verwendet Zugriffskontrolllisten (Access Control Lists, ACL), um Agenten und Kundennutzer auf Ticket-Optionen so einzuschränken, das nur korrekte und sinnvolle Aktivitäten mit einem Ticket möglich sind. OTRS-Administratoren können auf einfache Weise ACLs in der grafischen Benutzeroberfläche generieren, um bspw. das Schließen von Tickets zu verhindern, bis bestimmte Anforderungen erfüllt sind oder um zu verhindern, dass Tickets in Queues verschoben werden, bevor definierte Informationen hinzufügen wurden etc.

Verwenden Sie diese Ansicht, um ACLs im System zu verwalten. Eine OTRS-Neuinstallation beinhaltet standardmäßig keine konfigurierten ACLs. Die Ansicht zur Verwaltung der ACLs ist im Modul Access Control Lists (ACL) in der Gruppe Prozesse & Automatisierung verfügbar.

ACL Management Screen

ACL-Verwaltung

Access Control Lists verwalten

Bemerkung

Wenn Sie Access Control Lists erstellen, beachten Sie bitte, dass diese in alphabetischer Reihenfolge ausgeführt, so wie in der Übersicht angezeigt, ausgeführt werden.

Warnung

ACL-Beschränkungen werden für den „Superuser”-Account (UserID1) ignoriert.

So erstellen Sie eine neue ACL:

  1. Klicken Sie in der linken Seitenleiste auf die Schaltfläche Neue ACL erstellen.
  2. Füllen Sie die Pflichtfelder aus.
  3. Klicken Sie auf die Schaltfläche Speichern.
  4. Sie werden zur Ansicht ACL bearbeiten weitergeleitet, um die ACL-Struktur zu bearbeiten.
Create New ACL Screen

Neue ACL erstellen

So bearbeiten Sie eine ACL:

  1. Klicken Sie in der Liste mit den ACLs auf die ACL, die Sie bearbeiten möchten.
  2. Bearbeiten Sie die Felder in der ACL-Struktur.
  3. Klicken Sie auf die Schaltfläche Speichern oder Speichern und abschließen.
  4. Alle ACLs in Betrieb nehmen.
Edit ACL Structure Screen

ACL-Struktur bearbeiten

So löschen Sie eine ACL:

  1. Klicken Sie in der Liste mit den ACLs auf eine ACL.
  2. Setzen Sie die Option Gültigkeit auf ungültig oder temporär ungültig.
  3. Klicken Sie auf die Schaltfläche Speichern. In der Seitenleiste erscheint eine neue Schaltfläche Ungültige ACL löschen.
  4. Klicken Sie auf die Schaltfläche Ungültige ACL löschen.
  5. Klicken Sie auf die Schaltfläche Löschen im Dialog ACL löschen.
  6. Alle ACLs in Betrieb nehmen.

Warnung

ACLs werden in die Datei ZZZZACL.pm im Perl-Format geschrieben. Ohne Inbetriebnahme befinden sich alle ACLs immer noch in dieser Cache-Datei, auch wenn sie gelöscht werden oder die Option Gültigkeit auf ungültig oder ungültig - temporär gesetzt ist. Vergessen Sie nicht, die ACLs nach Änderungen in Betrieb zu nehmen!

So nehmen Sie alle ACLs in Betrieb:

  1. Klicken Sie in der linken Seitenleiste auf die Schaltfläche ACLs in Betrieb nehmen.

Bemerkung

Neue oder geänderte ACLs müssen in Betrieb genommen werden, damit sie einen Einfluss auf das Verhalten des Systems haben. Wenn die Option Gültigkeit auf gültig gesetzt wird, dann wird damit nur angezeigt, welche ACLs in Betrieb genommen werden.

So exportieren Sie alle ACLs:

  1. Klicken Sie in der linken Seitenleiste auf die Schaltfläche ACLs exportieren.
  2. Wählen Sie einen Speicherort auf Ihrem Computer um die „Export_ACL-yml“-Datei zu speichern.

So importieren Sie ACLs:

  1. Klicken Sie in der linken Seitenleiste auf die Schaltfläche Durchsuchen….
  2. Wählen Sie eine zuvor exportierte .yml Datei.
  3. Setzen Sie einen Haken in das Kontrollkästchen Existierende ACLs überschreiben?, wenn Sie die existierenden ACLs überschreiben möchten.
  4. Klicken Sie auf die Schaltfläche ACL-Konfiguration(en) importieren.
  5. Klicken Sie auf die Schaltfläche ACLs in Betrieb nehmen, um die importierten ACLs in Betrieb zu nehmen.

Bemerkung

Wenn dem System mehrere ACLs hinzugefügt wurden, verwenden Sie das Filterfeld, um einen bestimmte ACL zu finden, indem Sie einfach den zu filternden Namen eingeben.

Warnung

Die maximale Anzahl von 80 gültigen ACLs sollte nicht überschritten werden. Das Überschreiten dieser Grenze kann die Systemleistung beeinträchtigen.

Warnung

Die Änderung des Namens dieses Objekts sollte mit Vorsicht vorgenommen werden. Die Überprüfung bietet nur für bestimmte Einstellungen eine Verifizierung und ignoriert Dinge, bei denen der Name nicht verifiziert werden kann. Einige Beispiele sind Dashboard-Filter, Zugriffskontrolllisten (ACLs) und Prozesse (Sequenzfluss-Aktionen), um nur einige zu nennen. Gut dokumentierte Einstellungen verhindern Probleme bei Namensänderungen.

Möglicher Datenverlust

Warnung

Enthält ein Dropdown-Feld einen Wert, der durch die ACL verboten ist, dann wird der gespeicherte Wert in einem Ticket geändert oder entfernt, nachdem das Formular abgeschickt wurde. Dies kann zu einem möglichen Datenverlust führen!

Hier ist ein Beispiel, um die möglichen Probleme zu erklären:

Es wird ein dynamisches Dropdown-Feld mit vier möglichen Werten erstellt: BRONZE, SILBER, GOLD und VIP. Ein leerer Wert ist ebenfalls zulässig. Der Bearbeiter kann nur BRONZE, SILBER und GOLD auswählen. Der Wert VIP kann nur durch den Generic Agent gesetzt werden. Dies wird durch eine ACL eingeschränkt. Das dynamische Feld wird zu einigen Ticket-Ansichten hinzugefügt. In einer Ansicht ist das Feld als Pflichtfeld festgelegt, aber in einer anderen Ansicht ist das Feld kein Pflichtfeld und ein leerer Wert ist zulässig.

  1. Der Agent erstellt ein neues Ticket. Der Agent kann nur die erlaubten Werte auswählen, der Wert VIP wird nicht angezeigt. Der Wert SILBER wird ausgewählt und das Ticket wird erstellt.
  2. Der Generic Agent ändert den Wert in VIP.
  3. Der Agent führt eine Ticket-Aktion aus, bei der das Feld als Pflichtfeld hinzugefügt wurde. Da das Feld ein Pflichtfeld ist, muss der Agent einen anderen Wert anstelle von VIP auswählen, der aufgrund einer ACL-Regel für den Agenten nicht sichtbar ist. Das Formular wird abgeschickt und der Wert des dynamischen Feldes wird geändert. Dies kann eine unbeabsichtigte Änderung sein.
  4. Der Generic Agent ändert den Wert erneut in VIP.
  5. Der Agent führt eine Ticket-Aktion durch, in der das Feld als optional hinzugefügt wurde. Das Feld zeigt einen leeren Wert an, da der aktuelle VIP-Wert für den Bearbeiter nicht sichtbar ist. Da das Feld kein Pflichtfeld ist, ändert der Bearbeiter den Wert nicht und lässt ihn leer. Die Ticket-Aktion wird ausgeführt und der Wert des dynamischen Feldes wird in einen leeren Wert geändert. Dies kann zu einem möglichen Datenverlust führen.

Achten Sie auf unbeabsichtigte Datenänderungen! Das Gleiche kann mit dynamischen Feldern, Prioritäten, Queues, Status, Typen und allen anderen Dropdown-Feldern passieren, die durch ACLs verboten sind.

ACL-Einstellungen

Die folgenden Einstellungen sind verfügbar, wenn Sie diese Ressource hinzufügen oder bearbeiten. Die mit Stern gekennzeichneten Felder sind Pflichtfelder.

Name *
Der Name der Ressource. In dieses Feld können beliebige Zeichen eingegeben werden, einschließlich Großbuchstaben und Leerzeichen. Der Name wird in der Übersichtstabelle angezeigt.
Kommentar
Fügen Sie dieser Ressource zusätzliche Informationen hinzu. Es wird empfohlen, dieses Feld als Beschreibung der Ressource zur besseren Übersichtlichkeit immer mit einem vollständigen Satz zu füllen, da der Kommentar auch in der Übersichtstabelle angezeigt wird.
Beschreibung
Wie Kommentar, aber hier kann längerer Text hinzugefügt werden.
Stoppen nach Übereinstimmung
ACLs werden in alphabetischer Reihenfolge ausgewertet. Diese Einstellung deaktiviert die Auswertung der nachfolgenden ACLs.
Gültigkeit *
Setzt die Gültigkeit dieser Ressource. Jede Ressource kann nur in OTRS verwendet werden, wenn dieses Feld auf gültig gesetzt ist. Wenn Sie dieses Feld auf ungültig oder ungültig-temporär setzen, wird die Nutzung der Ressource deaktiviert.

ACL-Struktur bearbeiten

Die ACL-Definition kann in zwei große Teile unterteilt werden: Übereinstimmungseinstellungen und Änderungseinstellungen.

Übereinstimmungseinstellungen

In den Übereinstimmungseinstellungen enthalten die ACLs Attribute, die erfüllt sein müssen, damit die ACL verwendet werden kann. Wenn eine ACL mehr als ein Attribut enthält, müssen alle Attribute erfüllt sein. Wenn die in der ACL definierten Attribute nicht mit den gesendeten Attributen übereinstimmen, hat die ACL keine Auswirkung, aber jede andere passende ACL schon.

Properties
Dieser Abschnitt enthält passende Optionen, die spontan geändert werden können. Beispielsweise ändern sich während einer Ticket-Erstellungszeit die Daten des Tickets dynamisch, wenn der Agent die Informationen einstellt. Wenn eine ACL so eingestellt ist, dass sie mit einem Ticket-Attribut übereinstimmt, dann ist die ACL nur dann aktiv, wenn das passende Attribut ausgewählt ist, und kann andere Ticket-Attribute reduzieren. Sobald ein anderer Wert ausgewählt wird, hat die ACL keinen Einfluss.
PropertiesDatabase
Dieser Abschnitt ähnelt Properties, nimmt aber keine Änderungen an Ticket-Attributen vor, die nicht in der Datenbank gespeichert sind. Das bedeutet, dass das Ändern eines Attributs ohne Bestätigung keinen Effekt hat. Dieser Abschnitt wird nicht für die Erstellung von Tickets verwendet (da Tickets noch nicht in der Datenbank angelegt sind).

Änderungseinstellungen

Die Änderungseinstellungen enthalten die Regeln zur Reduzierung der möglichen Optionen für ein Ticket.

Possible
Dieser Abschnitt dient dazu, die zu reduzierenden Daten auf die in diesem Abschnitt eingestellten Elemente zurückzusetzen.
PossibleAdd
In diesem Abschnitt werden fehlende Elemente hinzugefügt, die in anderen ACLs reduziert wurden. Dieser Abschnitt wird nur in Verbindung mit anderen ACLs verwendet, die Possibles oder PossiblesNot-Abschnitte haben.
PossibleNot
In diesem Abschnitt werden bestimmte Elemente aus den aktuellen Daten entfernt. Er kann einzeln oder zusammen mit anderen ACLs verwendet werden, die einen Possible oder PossibleAdd`-Abschnitt haben.

Modifikator

Um die Entwicklung von ACLs einfacher und leistungsfähiger zu machen, gibt es eine Reihe von so genannten Modifikatoren für die Attribute der einzelnen Abschnitte. Diese Modifikatoren werden im Folgenden erläutert:

[Not]
Dieser Modifikator wird genutzt, um einen Wert zu negieren, bspw. [Not]2 niedrig. Das bedeutet für Ticket-Prioritäten dasselbe wie: 1 sehr niedrig, 3 normal, 4 hoch, 5 sehr hoch.
[RegExp]
Es wird verwendet, um einen regulären Ausdruck zu definieren, um mehrere Werte abzugleichen, z.B. [RegExp]niedrig. Das bedeutet für Ticket-Prioritäten dasselbe wie 1 sehr niedrig, 2 niedrig.
[regexp]
Ähnlich zu [RegExp] aber unabhängig von Groß- und Kleinschreibung.
[NotRegExp]
Negierter regulärer Ausdruck, bspw. [NotRegExp]niedrig. Das bedeutet für Ticket-Prioritäten dasselbe wie 3 normal, 4 hoch, 5 sehr hoch.
[Notregexp]
Ähnlich zu [NotRegExp] aber unabhängig von Groß- und Kleinschreibung.

ACL-Beispiele

Begrenzung der verfügbaren Queues basierend auf der aktuellen Queue und Priorität

Dieses Beispiel zeigt, wie die verfügbaren Queues auf die Queue Alert beschränkt werden können, wenn sich das Ticket derzeit in der Queue Raw befindet und die Priorität 5 sehr hoch hat.

In diesem Beispiel wird PropertiesDatabase verwendet. Das bedeutet, dass sich das Ticket bereits in der Queue Raw befinden muss und die Priorität 5 sehr hoch haben muss, damit diese ACL angewendet werden kann.

Diese ACL wird nicht angewendet, wenn ein Benutzer nur die Queue Raw und die Priorität 5 sehr hoch in einem Dialog auswählt. Um dies zu erreichen, muss Properties verwendet werden.

Mit dieser ACL können Tickets, die sich in der Queue Raw befinden und die Priorität 5 sehr hoch haben, nur in die Queue Alert verschoben werden.

Limit available queues based on current queue and priority

Begrenzung der verfügbaren Queues basierend auf der aktuellen Queue und Priorität

---
- Comment: Limit available queues based on current queue and priority
  ConfigChange:
    Possible:
      Ticket:
        Queue:
        - Alert
  ConfigMatch:
    PropertiesDatabase:
      Ticket:
        Priority:
        - 5 very high
        Queue:
        - Raw
  Description: Restrict the available queues to the “Alert” queue if the ticket is
    currently in the queue “Raw” and has the priority “5 very high”.
  Name: 010 Example ACL
Einen bestimmten Ticket-Typ nicht auswählbar machen

Dieses Beispiel zeigt, wie man den Ticket-Typ Unklassifiziert für Benutzer nicht auswählbar macht.

In diesem Beispiel sind die Übereinstimmungseinstellungen leer. Das bedeutet, dass die ACL immer angewendet wird, da der Filter leer ist.

Make certain ticket type not selectable

Einen bestimmten Ticket-Typ nicht auswählbar machen

---
- Comment: Make certain ticket type not selectable
  ConfigChange:
    PossibleNot:
      Ticket:
        Type:
        - Unclassified
  ConfigMatch: ''
  Description: Make the ticket type “Unclassified” not selectable.
  Name: 020 Example ACL

Beachten Sie, dass Sie immer noch Tickets mit dem Ticket-Typ Unklassifiziert finden können. Dies ist zum Beispiel der Fall bei eingehenden E-Mails, die in Tickets umgewandelt werden.

Ticket-Schließen bei bestimmten Ticket-Typen nicht möglich

Dieses Beispiel zeigt, wie man verhindern kann, dass Tickets mit dem Ticket-Typ Unklassifiziert geschlossen werden.

Ticket closing not possible for certain ticket type

Ticket-Schließen bei bestimmten Ticket-Typen nicht möglich

---
- Comment: Ticket closing not possible for cerain ticket type
  ConfigChange:
    PossibleNot:
      Endpoint:
      - AgentFrontend::Ticket::Action::Close
      Ticket:
        State:
        - '[RegExp]close'
  ConfigMatch:
    PropertiesDatabase:
      Ticket:
        Type:
        - Unclassified
  Description: Prevent tickets with the ticket type "Unclassified" from being closed.
  Name: 030 Example ACL

Dieses ACL-Beispiel kann in Kombination mit dem zuvor beschriebenen ACL-Beispiel verwendet werden.

Bemerkung

Achten Sie auf die Reihenfolge der ACLs. Die zuvor beschriebene Beispiel-ACL muss vor der hier beschriebenen ACL ausgeführt werden.

Reguläre Ausdrücke verwenden

Dieses Beispiel zeigt, wie reguläre Ausdrücke für den Abgleich von Tickets und zum Filtern der verfügbaren Auswahloptionen verwendet werden können.

Mit dieser ACL werden im Agenten-Interface (und falls konfiguriert auch im externen Interface) nur Services angezeigt, die Hardware in ihrem Namen enthalten und das Ticket in einer Queue gespeichert ist, deren Name mit HW beginnt, oder wenn in einem Benutzerdialog eine Queue ausgewählt ist, deren Name mit HW beginnt.

Using regular expressions

Reguläre Ausdrücke verwenden

---
- Comment: Using regular expressions
  ConfigChange:
    Possible:
      Ticket:
        Service:
        - '[RegExp]Hardware'
  ConfigMatch:
    Properties:
      Ticket:
        Queue:
        - '[RegExp]^HW'
  Description: Use regular expressions for matching tickets and for filtering the
    available selection options.
  Name: 040 Example ACL
Ein dynamisches Feld auf der Grundlage eines anderen dynamischen Feldes einschränken

Dieses Beispiel zeigt, wie man die auswählbaren Werte des dynamischen Feldes CarModel auf Polo, Golf und Passat einschränken kann, wenn ein Benutzer im gleichen Benutzerdialog im dynamischen Feld CarManufacturer den Wert VW ausgewählt hat.

Stellen Sie sicher, dass Sie den Namen des dynamischen Feldes im Format DynamischesFeld_Name verwenden und dass Sie die Datenschlüssel der möglichen Werte und nicht die dem Benutzer angezeigten Datenwerte verwenden. Beides wird in der Definition des dynamischen Feldes angegeben.

Restrict one dynamic field based on another dynamic field

Ein dynamisches Feld auf der Grundlage eines anderen dynamischen Feldes einschränken

---
- Comment: Restrict one dynamic field based on another dynamic field
  ConfigChange:
    Possible:
      Ticket:
        DynamicField_CarModel:
        - Polo
        - Passat
        - Golf
  ConfigMatch:
    Properties:
      DynamicField:
        DynamicField_CarManufacturer:
        - VW
  Description: Restrict the selectable values of the dynamic field “CarModel” to “Polo”,
    “Golf” and “Passat”, if a user has selected the value “VW” in the dynamic field
    “CarManufacturer” in the same user dialog.
  Name: 050 Example ACL

In den Übereinstimmungseinstellungen kann das Ticket-Objekt als Alternative zum DynamicField-Objekt verwendet werden.

Restrict one dynamic field based on another dynamic field

Ein dynamisches Feld auf der Grundlage eines anderen dynamischen Feldes einschränken

---
- Comment: Restrict one dynamic field based on another dynamic field
  ConfigChange:
    Possible:
      Ticket:
        DynamicField_CarModel:
        - Polo
        - Passat
        - Golf
  ConfigMatch:
    Properties:
      Ticket:
        DynamicField_CarManufacturer:
        - VW
  Description: Restrict the selectable values of the dynamic field “CarModel” to “Polo”,
    “Golf” and “Passat”, if a user has selected the value “VW” in the dynamic field
    “CarManufacturer” in the same user dialog.
  Name: 051 Example ACL
Ein dynamisches Feld auf der Grundlage eines anderen dynamischen Feldes in einer Aktion einschränken

Das vorherige Beispiel kann um die Einschränkung erweitert werden, dass es nur für die Ticket-Aktion Freie Felder ändern gelten soll. Dazu muss die Bedingung, dass der Endpunkt FreeText betroffen sein muss, in den Match settings hinzugefügt werden.

Restrict one dynamic field based on another dynamic field in an action

Ein dynamisches Feld auf der Grundlage eines anderen dynamischen Feldes in einer Aktion einschränken

---
- Comment: Restrict one dynamic field based on another dynamic field in an action
  ConfigChange:
    Possible:
      Ticket:
        DynamicField_CarModel:
        - Polo
        - Passat
        - Golf
  ConfigMatch:
    Properties:
      Frontend:
        Endpoint:
        - AgentFrontend::Ticket::Action::FreeText
      Ticket:
        DynamicField_CarManufacturer:
        - VW
  Description: Restrict the selectable values of the dynamic field “CarModel” to “Polo”,
    “Golf” and “Passat”, if a user has selected the value “VW” in the dynamic field
    “CarManufacturer” in the “Free Fields” action.
  Name: 052 Example ACL
Einen Prozess für eine Kunden-ID verbieten

Diese ACL verhindert die Nutzung eines bestimmten Prozesses für alle Kundenbenutzer, die einer bestimmten Kunden-ID (in diesem Beispiel otrs.com) zugeordnet sind.

Da Kundenbenutzer nur das externe Interface benutzen, wird die ACL dort angewendet.

Disallow a process for a customer ID

Einen Prozess für eine Kunden-ID verbieten

---
- Comment: Disallow a process for a customer ID
  ConfigChange:
    PossibleNot:
      Process:
      - Process-81b2ff5db648afa3e765785ff0193320
  ConfigMatch:
    Properties:
      CustomerUser:
        UserCustomerID:
        - otrs.com
  Description: Prevents the use of a certain process for all customer users assigned
    to a certain customer ID.
  Name: 060 Example ACL
Die Ticket-Aktionen Schließen und Verschieben für einen bestimmten Prozess nicht zulassen

Dieses ACL-Beispiel zeigt, wie die Ticket-Aktionen Ticket verschieben und Ticket schließen nicht mehr angezeigt werden, wenn ein bestimmter Prozess ausgewählt ist.

Disallow the ticket actions close and move for a certain process

Die Ticket-Aktionen Schließen und Verschieben für einen bestimmten Prozess nicht zulassen

---
- Comment: Disallow the ticket actions close and move for a certain process
  ConfigChange:
    PossibleNot:
      Endpoint:
      - AgentFrontend::Ticket::Action::Move
      - AgentFrontend::Ticket::Action::Close
  ConfigMatch:
    PropertiesDatabase:
      Process:
        ProcessEntityID:
        - Process-81b2ff5db648afa3e765785ff0193320
  Description: Stop the ticket actions “Move Ticket” and “Close Ticket” from displaying
    when a specific process is selected.
  Name: 070 Example ACL
Benutzeraufgaben-Dialoge in einem Prozess basierend auf der Rolle des Agenten ausblenden

Nehmen wir an, dass in einem OTRS-Prozess eine Benutzeraufgaben-Aktivität enthalten ist, der zwei Benutzeraufgaben-Aktivitätsdialoge zugeordnet sind und dass diese Benutzeraufgaben-Aktivitätsdialoge nur von Agenten ausgeführt werden sollen, die eine bestimmte OTRS-Rolle haben.

Das Ziel ist es, die richtigen Benutzeraufgaben-Aktivitätsdialoge nur den Agenten anzuzeigen, die die richtige OTRS-Rolle haben.

Benutzeraufgaben-Aktivitätsdialog Rolle des Agenten
Genehmigung durch die Verkaufsabteilug Leiter des Vertriebs
Genehmigung vom Marketing Leiter Marketing

Zu diesem Zweck werden drei ACLs benötigt.

Bemerkung

Prozess- und Benutzeraufgaben-Aktivitätsdialoge werden durch ID referenziert.

Die erste ACL verhindert die Anzeige aller Benutzeraufgaben-Aktivitätsdialoge innerhalb dieser Benutzeraufgaben-Aktivität.

Hide user task activity dialogs in a process based on the agent role

Benutzeraufgaben-Dialoge in einem Prozess basierend auf der Rolle des Agenten ausblenden

---
- Comment: Hide user task activity dialogs in a process based on the agent role
  ConfigChange:
    PossibleNot:
      ActivityDialog:
      - '[RegExp]^ActivityDialog-'
  ConfigMatch:
    PropertiesDatabase:
      Process:
        ActivityEntityID:
        - Activity-919fb73ed4b14087d5085f6e7f13d57d
  Description: Prevents the display of all user task activity dialogs within this
    user task activity.
  Name: 080 Example ACL

Mit der nächsten ACL wird erreicht, dass alle Agenten, die die Rolle Verkaufsleiter haben, den Benutzeraufgabe-Aktivitätsdialog Genehmigung vom Verkauf angezeigt bekommen.

Hide user task activity dialogs in a process based on the agent role

Benutzeraufgaben-Dialoge in einem Prozess basierend auf der Rolle des Agenten ausblenden

---
- Comment: Hide user task activity dialogs in a process based on the agent role
  ConfigChange:
    PossibleAdd:
      ActivityDialog:
      - ActivityDialog-8ff3a399b5939d1a11e87ad35f72f576
  ConfigMatch:
    PropertiesDatabase:
      User:
        Role:
        - Head of Sales
  Description: All agents who have the role "Head of Sales" get the user task activity
    dialog "Approval from Sales" displayed.
  Name: 081 Example ACL

Mit Hilfe der letzten ACL wird erreicht, dass alle Bearbeiter, die die Rolle Leiter Marketing haben, den Benutzeraufgaben-Aktivitätsdialog Genehmigung von Marketing angezeigt bekommen.

Hide user task activity dialogs in a process based on the agent role

Benutzeraufgaben-Dialoge in einem Prozess basierend auf der Rolle des Agenten ausblenden

---
- Comment: Hide user task activity dialogs in a process based on the agent role
  ConfigChange:
    PossibleAdd:
      ActivityDialog:
      - ActivityDialog-18d1bce51750be6e3adee3b5d59a94d7
  ConfigMatch:
    PropertiesDatabase:
      User:
        Role:
        - Head of Marketing
  Description: All agents who have the role "Head of Marketing" get the user task
    activity dialog "Approval from Marketing" displayed.
  Name: 082 Example ACL

Bemerkung

Achten Sie auf die Reihenfolge der ACLs. Die in diesem Beispiel zuerst beschriebene ACL muss vor den letzten beiden ACLs ausgeführt werden.

Fallstricke bei der Verwendung von Eigenschaften

Wenn Ticket-Attribute gleichzeitig in Übereinstimmungseinstellungen und Änderungseinstellungen verwendet werden, tritt bei der Verwendung von Properties ein logisches Problem auf, das die ordnungsgemäße Verwendung von Ticket-Aktionen verhindern kann.

In diesem Beispiel sehen Sie in den Übereinstimmungseinstellungen die Queue Raw und die Priorität 5 sehr hoch und in den Änderungseinstellungen ist die Queue Alert möglich.

Pitfalls using properties

Fallstricke bei der Verwendung von Eigenschaften

---
- Comment: Pitfalls Using Properties
  ConfigChange:
    Possible:
      Ticket:
        Queue:
        - Alert
  ConfigMatch:
    Properties:
      Ticket:
        Queue:
        - Raw
  Description: If ticket attributes are used in both Match settings and Change settings
    at the same time, a logical problem occurs.
  Name: 090 Pitfalls

Wenn Sie diese ACL einsetzen und dann die Ticket-Aktion Verschieben in Queue in einem Ticket ausführen, werden Sie feststellen, dass Sie nicht auf die Schaltfläche Senden klicken können, wenn Sie die Queue Raw auswählen, da die Änderungseinstellung sofort übernommen wird (aufgrund von Properties) und dies dazu führt, dass Ihre Auswahl gelöscht wird, da die Queue Raw keine gültige Auswahl mehr ist.

Typischerweise kann dieses logische Problem durch die Verwendung von PropertiesDatabase anstelle von Properties vermieden werden. Bitte vergleichen Sie mit dem ersten Beispiel.

ACL-Referenz

Die Eigenschaften, Schlüssel und Werte, die in den ACL genutzt werden können, hängen stark von der OTRS Installation ab. Bspw. können die Möglichkeiten durch Installation von Erweiterungsmodulen erweitert werden. Ebenso ist es abhängig vom Mapping der Kundenbenutzer in Config.pm. Deswegen ist es nicht möglich, eine vollständige ACL-Referenz zur Verfügung zu stellen, die alle Einstellungen enthält.

Für Eigenschaften, Schlüssel und Werte, die in ACLs genutzt werden können, schauen Sie sich die Beispiel-ACL im YAML-Format an.

---
- ChangeBy: root@localhost
  ChangeTime: 2020-04-15 16:46:23
  Comment: ACL Reference.
  ConfigMatch:
    Properties:
      # Match properties (current values from the form).
      CustomerUser:
        UserLogin:
        - some login
        UserCustomerID:
        - some customer ID
        Group_rw:
        - some group
      DynamicField:
        # Names must be in DynamicField_<field_name> format.
        # Values for dynamic fields must always be the untranslated internal
        #   data keys specified in the dynamic field definition and not the
        #   data values shown to the user.
        # Using the key is also mandatory for dynamic field of type database
        #   and dynamic field of type web service.
        DynamicField_Field1:
        - some value
        DynamicField_OtherField:
        - some value
        DynamicField_TicketFreeText2:
        - some value
        # more dynamic fields
      Frontend:
        Endpoint:
        - AgentFrontend::PersonalPreferences
        - AgentFrontend::ProcessTicketNextStep
        - AgentFrontend::Ticket::Action::Close
        - AgentFrontend::Ticket::Action::Customer
        - AgentFrontend::Ticket::Action::EmailOutbound
        - AgentFrontend::Ticket::Action::FreeText
        - AgentFrontend::Ticket::Action::Link
        - AgentFrontend::Ticket::Action::Lock
        - AgentFrontend::Ticket::Action::Merge
        - AgentFrontend::Ticket::Action::Move
        - AgentFrontend::Ticket::Action::Note
        - AgentFrontend::Ticket::Action::Owner
        - AgentFrontend::Ticket::Action::Pending
        - AgentFrontend::Ticket::Action::PhoneCallInbound
        - AgentFrontend::Ticket::Action::PhoneCallOutbound
        - AgentFrontend::Ticket::Action::Print
        - AgentFrontend::Ticket::Action::Priority
        - AgentFrontend::Ticket::Action::Process
        - AgentFrontend::Ticket::Action::Redirect
        - AgentFrontend::Ticket::Action::Responsible
        - AgentFrontend::Ticket::Action::SmsOutbound
        - AgentFrontend::Ticket::Action::TicketHistory
        - AgentFrontend::Ticket::Action::Unlock
        - AgentFrontend::Ticket::Action::Unwatch
        - AgentFrontend::Ticket::Action::Watch
        - AgentFrontend::Ticket::InlineEditing::Property::CustomerUserID
        - AgentFrontend::Ticket::InlineEditing::Property::Lock
        - AgentFrontend::Ticket::InlineEditing::Property::Owner
        - AgentFrontend::Ticket::InlineEditing::Property::Priority
        - AgentFrontend::Ticket::InlineEditing::Property::Queue
        - AgentFrontend::Ticket::InlineEditing::Property::Responsible
        - AgentFrontend::Ticket::InlineEditing::Property::Service
        - AgentFrontend::Ticket::InlineEditing::Property::State
        - AgentFrontend::Ticket::InlineEditing::Property::Type
        - AgentFrontend::Ticket::InlineEditing::Property::Watch
        - AgentFrontend::TicketArticle::Action::CopyLink
        - AgentFrontend::TicketArticle::Action::Forward
        - AgentFrontend::TicketArticle::Action::MarkAsImportant
        - AgentFrontend::TicketArticle::Action::MessageLog
        - AgentFrontend::TicketArticle::Action::Plain
        - AgentFrontend::TicketArticle::Action::Print
        - AgentFrontend::TicketArticle::Action::Redirect
        - AgentFrontend::TicketArticle::Action::Reply
        - AgentFrontend::TicketArticle::Action::ReplyAll
        - AgentFrontend::TicketArticle::Action::ReplyToNote
        - AgentFrontend::TicketArticle::Action::ReplyViaSms
        - AgentFrontend::TicketArticle::Action::Split
        - AgentFrontend::TicketArticle::Action::UnmarkAsImportant
        - AgentFrontend::TicketCreate::Email
        - AgentFrontend::TicketCreate::Phone
        - AgentFrontend::TicketCreate::Process
        - AgentFrontend::TicketCreate::SMS
        - AgentFrontend::TicketDetailView
        - AgentFrontend::TicketDetailView::Property
        - AgentFrontend::TicketList::Bulk
        - AgentFrontend::TicketList::Filters
        - ...
        - ExternalFrontend::PersonalPreferences
        - ExternalFrontend::ProcessTicketCreate
        - ExternalFrontend::ProcessTicketNextStep
        - ExternalFrontend::Ticket::ExportList
        - ExternalFrontend::Ticket::List
        - ExternalFrontend::Ticket::Print
        - ExternalFrontend::TicketCreate
        - ExternalFrontend::TicketDetailView
        - ...
      Owner:
        UserLogin:
        - some login
        Group_rw:
        - some group
        Role:
        - admin
        # more owner attributes
      Priority:
        ID:
        - some ID
        Name:
        - some name
        # more priority attributes
      Process:
        ProcessEntityID:
        # the process that the current ticket is part of
        - Process-9c378d7cc59f0fce4cee7bb9995ee3eb
        ActivityEntityID:
        # the current activity of the ticket
        - Activity-f8b2fdebe54eeb7b147a5f8e1da5e35c
        ActivityDialogEntityID:
        # the current activity dialog that the agent/customer is using
        - ActivityDialog-aff0ae05fe6803f38de8fff6cf33b7ce
      Queue:
        Name:
        - Raw
        QueueID:
        - some ID
        GroupID:
        - some ID
        Email:
        - some email
        RealName:
        - OTRS System
        # more queue attributes
      Responsible:
        UserLogin:
        - some login
        Group_rw:
        - some group
        Role:
        - admin
        # more responsible attributes
      Service:
        ServiceID:
        - some ID
        Name:
        - some name
        ParentID:
        - some ID
        # more service attributes
      SLA:
        SLAID:
        - some ID
        Name:
        - some name
        Calendar:
        - some calendar
        # more SLA attributes
      State:
        ID:
        - some ID
        Name:
        - some name
        TypeName:
        - some state type name
        TypeID:
        - some state type ID
        # more state attributes
      Ticket:
        Queue:
        - Raw
        State:
        - new
        - open
        Priority:
        - some priority
        Lock:
        - lock
        CustomerID:
        - some ID
        CustomerUserID:
        - some ID
        Owner:
        - some owner
        DynamicField_Field1:
        - some value
        DynamicField_MyField:
        - some value
        # more ticket attributes
      Type:
        ID:
        - some ID
        Name:
        - some name
        # more type attributes
      User:
        UserLogin:
        - some_login
        Group_rw:
        - some group
        Role:
        - admin
    PropertiesDatabase:
      # Match properties (existing values from the database).
      # Please note that Frontend is not in the database, but in the framework.
      # See section "Properties", the same configuration can be used here.
  ConfigChange:
    Possible:
      # Reset possible options (white list).
      Action:
      # Possible action options (white list).
      - ...
      ActivityDialog:
      # Limit the number of possible activity dialogs the agent/customer can use in a process ticket.
      - ActivityDialog-aff0ae05fe6803f38de8fff6cf33b7ce
      - ActivityDialog-429d61180a593414789a8087cc4b3c6f
      - ...
      Endpoint:
      # Limit the functions on agent interface.
      - AgentFrontend::PersonalPreferences
      - AgentFrontend::ProcessTicketNextStep
      - AgentFrontend::Ticket::Action::Close
      - AgentFrontend::Ticket::Action::Customer
      - AgentFrontend::Ticket::Action::EmailOutbound
      - AgentFrontend::Ticket::Action::FreeText
      - AgentFrontend::Ticket::Action::Link
      - AgentFrontend::Ticket::Action::Lock
      - AgentFrontend::Ticket::Action::Merge
      - AgentFrontend::Ticket::Action::Move
      - AgentFrontend::Ticket::Action::Note
      - AgentFrontend::Ticket::Action::Owner
      - AgentFrontend::Ticket::Action::Pending
      - AgentFrontend::Ticket::Action::PhoneCallInbound
      - AgentFrontend::Ticket::Action::PhoneCallOutbound
      - AgentFrontend::Ticket::Action::Print
      - AgentFrontend::Ticket::Action::Priority
      - AgentFrontend::Ticket::Action::Process
      - AgentFrontend::Ticket::Action::Redirect
      - AgentFrontend::Ticket::Action::Responsible
      - AgentFrontend::Ticket::Action::SmsOutbound
      - AgentFrontend::Ticket::Action::TicketHistory
      - AgentFrontend::Ticket::Action::Unlock
      - AgentFrontend::Ticket::Action::Unwatch
      - AgentFrontend::Ticket::Action::Watch
      - AgentFrontend::Ticket::InlineEditing::Property::CustomerUserID
      - AgentFrontend::Ticket::InlineEditing::Property::Lock
      - AgentFrontend::Ticket::InlineEditing::Property::Owner
      - AgentFrontend::Ticket::InlineEditing::Property::Priority
      - AgentFrontend::Ticket::InlineEditing::Property::Queue
      - AgentFrontend::Ticket::InlineEditing::Property::Responsible
      - AgentFrontend::Ticket::InlineEditing::Property::Service
      - AgentFrontend::Ticket::InlineEditing::Property::State
      - AgentFrontend::Ticket::InlineEditing::Property::Type
      - AgentFrontend::Ticket::InlineEditing::Property::Watch
      - AgentFrontend::TicketArticle::Action::CopyLink
      - AgentFrontend::TicketArticle::Action::Forward
      - AgentFrontend::TicketArticle::Action::MarkAsImportant
      - AgentFrontend::TicketArticle::Action::MessageLog
      - AgentFrontend::TicketArticle::Action::Plain
      - AgentFrontend::TicketArticle::Action::Print
      - AgentFrontend::TicketArticle::Action::Redirect
      - AgentFrontend::TicketArticle::Action::Reply
      - AgentFrontend::TicketArticle::Action::ReplyAll
      - AgentFrontend::TicketArticle::Action::ReplyToNote
      - AgentFrontend::TicketArticle::Action::ReplyViaSms
      - AgentFrontend::TicketArticle::Action::Split
      - AgentFrontend::TicketArticle::Action::UnmarkAsImportant
      - AgentFrontend::TicketCreate::Email
      - AgentFrontend::TicketCreate::Phone
      - AgentFrontend::TicketCreate::Process
      - AgentFrontend::TicketCreate::SMS
      - AgentFrontend::TicketDetailView
      - AgentFrontend::TicketDetailView::Property
      - AgentFrontend::TicketList::Bulk
      - AgentFrontend::TicketList::Filters
      - ...
      # Limit the functions on external interface.
      - ExternalFrontend::PersonalPreferences
      - ExternalFrontend::ProcessTicketCreate
      - ExternalFrontend::ProcessTicketNextStep
      - ExternalFrontend::Ticket::ExportList
      - ExternalFrontend::Ticket::List
      - ExternalFrontend::Ticket::Print
      - ExternalFrontend::TicketCreate
      - ExternalFrontend::TicketDetailView
      - ...
      Process:
      # Limit the number of possible processes that can be started.
      - Process-9c378d7cc59f0fce4cee7bb9995ee3eb
      - Process-12345678901234567890123456789012
      - ...
      Ticket:
      # Possible ticket options (white list).
        DynamicField_Field1:
        - some value
        DynamicField_MyField:
        - some value
        # more dynamic fields
        NewOwner:
        # For ticket action screens, where the Owner is already set.
        - some owner
        OldOwner:
        # For ticket action screens, where the Owner is already set.
        - some owner
        Owner:
        # For ticket create screens, because Owner is not set yet.
        - some owner
        Priority:
        - 5 very high
        Queue:
        - Raw
        - some other queue
        Service:
        - some service
        ServiceID:
        - some service ID
        SLA:
        - some SLA
        SLAID:
        - some SLA ID
        State:
        - some state
        StateID:
        - some state ID
        # more ticket attributes
    PossibleAdd:
       # Add options (white list).
       # See section "Possible", the same configuration can be used here.
    PossibleNot:
       # Remove options (black list).
       # See section "Possible", the same configuration can be used here.
  CreateBy: root@localhost
  CreateTime: 2020-04-15 16:46:23
  Description: This is the long description of the ACL to explain its usage.
  ID: 1
  Name: 200-ACL-Reference
  StopAfterMatch: 0
  ValidID: 3