Explizite Rollen in CSM
Sie können internen Benutzern und externen Benutzern Zugriff auf Ihre Instanz gewähren. Möglicherweise möchten Sie jedoch nicht, dass beide Benutzertypen dieselben Zugriffsrechte haben. Um die Sicherheit zu erhöhen, muss jeder Benutzer mindestens eine Rolle besitzen, damit die Instanz zwischen internen und externen Benutzern unterscheiden kann.
Ab Release Paris können Benutzer nicht mehr beide expliziten Rollen (snc_internal und snc_external) haben. Auch durch Gruppen- und Rolleneinschluss dürfen nicht beide Rollen enthalten sein, da dies dazu führen würde, dass jedes Gruppenmitglied oder jeder Benutzer, der einer solchen Gruppe oder Rolle zugeordnet ist, automatisch beide Rollen hätte. Now Platform bricht jeden Vorgang ab, der ein solches Szenario hervorrufen würde.
- Scripted REST API-Ressourcen, die nicht als extern markiert sind
- Tabellen ohne die Rolle, die die Rolle snc_external oder public erbt
- Ressourcen ohne Datensatztyp, z. B. Prozessoren und UI-Seiten, ohne dass Zugriffsrechte für die Rolle „snc_external“ oder eine Rolle gewährt werden, die die Rolle „snc_external“ erbt.
- Platform Analytics-Dashboards.
Markieren Sie die Rolle snc_internal nicht als erweitert. Andernfalls können interne Benutzer nicht auf die Instanz zugreifen.
Empfohlene CSM-Rollen für interne und externe Benutzer
Kunden (externe Benutzer), die die Anwendung Customer Service Management verwenden, sollte entweder die Rolle sn_customerservice.customer oder sn_customerservice.consumer zugewiesen sein. Kundenservice-Mitarbeitern (interne Benutzer) sollte entweder die Rolle sn_customerservice_agent oder sn_customerservice_consumer_agent zugewiesen werden. Das System stellt sicher, dass dem gleichen Benutzer nicht die Rolle „Kunde“ (extern) und „Service Desk-Mitarbeiter“ (intern) zugewiesen ist.
Plugin „Explicit Roles“
Das „Customer Service“-Plugin (com.sn_customerservice) aktiviert das „Explicit Roles“-Plugin (com.glide.explicit_roles), das die Rollen „snc_external“ und „snc_internal“ hinzufügt. Wenn das Plugin aktiviert ist:
- Alle Benutzer müssen entweder die Rolle snc_internal (für den Zugriff auf interne Ressourcen) oder die Rolle snc_external (für den Zugriff auf externe Ressourcen) besitzen.
- Allen vorhandenen Benutzern wird automatisch die Rolle snc_internal zugewiesen. Durch diese Rolle werden die vorhandenen Zugriffsebenen und das Systemverhalten nicht geändert. Stattdessen stellt sie eine Kategorie bereit, um interne Benutzer von externen Benutzern zu unterscheiden. Alle internen Benutzer behalten dieselbe Zugriffsebene bei wie vor der Aktivierung des Plugins.Tipp:Um Änderungen an vorhandenen Funktionen für Benutzer zu verhindern, wird durch die Aktivierung des Plugins „Explicit Roles“ die Benutzerrolle snc_internal allen vorhandenen Benutzern in der Instanz zugewiesen. Dies schließt alle externen Benutzer ein, die hinzugefügt wurden, bevor das Plugin „Explicit Roles“ aktiviert wurde. Nachdem das Plugin „Explicit Roles“ aktiviert wurde, gehen Sie für alle externen Benutzer, die vor Aktivierung des Plugins „Explicit Roles“ hinzugefügt wurden, wie folgt vor:
- Entfernen Sie die Rolle snc_internal.
- Fügen Sie die Rolle snc_external hinzu.
- Neu erstellten Benutzern wird automatisch die Rolle snc_internal zugewiesen, wenn sie erstmalig versuchen, sich bei der Instanz anzumelden, es sei denn, ihnen wurde explizit die Rolle snc_external zugewiesen. Sie können die Rolle snc_external einem neuen Benutzer hinzufügen, bevor er sich zum ersten Mal bei der Instanz anmeldet, um externe Benutzerrechte bereitzustellen. Wichtig:Aktivieren Sie dieses Plugin während eines Wartungsfensters oder wenn nur wenige Benutzer angemeldet sind. Benutzern, die derzeit bei der Aktivierung des Plugins angemeldet sind, wird die Rolle snc_internal nicht dynamisch zugewiesen. Stattdessen müssen sich Benutzer abmelden und wieder anmelden, um die Rolle snc_internal zu erhalten. Sobald das Plugin aktiviert ist, können Sie die Rollen snc_internal und snc_external jederzeit hinzufügen oder entfernen, um Benutzerrechte zu ändern.
- Allen vorhandenen ACLs ohne Rollenanforderung wird automatisch die Rolle snc_internal zugewiesen. Da sowohl vorhandenen ACLs als auch Rollen die Rolle snc_internal zugewiesen ist, ändern sich die vorhandenen Zugriffsebenen nicht.
- Neu erstellten ACLs ohne Rollenanforderung wird automatisch die Rolle snc_internal zugewiesen. Diese Rollenzuweisung gilt nicht für neu erstellte ACLs mit zugewiesener Rolle.
- Für alle vorhandenen Prozessor-Datensätze [sys_processor] oder neu erstellte Prozessor-Datensätze [sys_processor] mit Typ = Skript wird die Rolle snc_internal automatisch zum Feld Rollen hinzugefügt, wenn das Feld leer ist.
- Um den Zugriff auf UI-Seiten auf interne Benutzer zu beschränken, weist das Plugin automatisch die Rolle snc_internal der * ACL mit dem Typ ui_page zu.
- Um den Zugriff auf Prozessoren auf interne Benutzer zu beschränken, weist das Plugin automatisch die Rolle snc_internal der * ACL mit dem Typ processor zu.
- Externe Benutzer müssen mindestens die Rolle snc_external erhalten, um auf die Instanz zuzugreifen. Diese Rolle wird automatisch externen Kontakten im Customer Service Portal zugewiesen. Wenn das Customer Service Portal nicht aktiviert ist, muss diese Rolle externen Benutzern manuell gewährt werden. Der Zugriff auf Datensätze wird über ACLs gewährt.Hinweis:Sie können die Funktion
IsPublic()in Skripts für das Customer Service Portal verwenden, um die Datenschutzeinstellung für ein einzelnes, vom Client aufrufbares Script Include zu ändern. Weitere Informationen finden Sie unter Script Includes. - Der Zugriff auf die Content Management System-Site ist ebenfalls betroffen. CMS ist mit Sites (content_site), Seiten (content_page) und anderen Ressourcen eingerichtet. Für einige Sites ist möglicherweise die Anmeldeseite konfiguriert.
- Wenn für CMS-Sites die Anmeldeseite nicht konfiguriert ist, wird die Rolle public automatisch dem Feld Leserollen für Seiten (content_page) hinzugefügt, wenn das Feld leer ist.
- Wenn die Anmeldeseite für CMS-Sites konfiguriert ist, wird die Rolle snc_internal automatisch dem Feld Leserollen für Seiten (content_page) hinzugefügt, wenn das Feld leer ist.
- Der Zugriff auf die Service Portal-Site ist ebenfalls betroffen.
Die Rolle snc_internal wird nicht automatisch zu sp_page-, sp_widget- oder sp_instance-Datensätzen hinzugefügt. Bei Bedarf können Sie neuen Datensätzen die Rolle zuweisen, indem Sie snc_internal im Feld Rollen als Standardwert für diese Datensätze zuweisen. Details zu diesem Prozess finden Sie unter Standardfeldwert angeben.
Verschieben Sie keine System-Update Sets zwischen Instanzen, unabhängig davon, ob das Plugin „Explicit Roles“ aktiviert oder deaktiviert ist.
Eigenschaft „glide.security.explicit_roles.internal_user_blacklist“
Für das Plugin „Explicit Roles“ wird vorausgesetzt, dass alle vorhandenen Benutzer in der Tabelle sys_user zum Zeitpunkt der Installation des Plugins interne Kunden sind. Ein Korrekturskript weist die Rolle snc_internal allen vorhandenen Benutzern und allen ACLs zu, die keine Rolle haben.
Das Korrekturskript schlägt möglicherweise fehl oder wird für einen Benutzer nicht rechtzeitig abgeschlossen, dessen Rolle nicht aktualisiert wurde und der versucht, auf eine Ressource zuzugreifen. Um diese potenzielle Lücke zu schließen, weist Contextual Security Manager (CSM) die Rolle snc_internal automatisch jedem Benutzer zu, der sich anmeldet und keine explizite Rolle hat (intern oder extern).
Darüber hinaus verfügt CSM über einen Geschäftsregelprozess, der die Rolle snc_external einer Klassifizierung ihrer Benutzer zuweist. Beim Importieren großer Mengen von externen CSM-Kunden wird der Workflow jedoch auf „false“ gesetzt, sodass Geschäftsregeln nicht ausgeführt werden. Wenn diese Benutzer versuchen, auf eine Ressource zuzugreifen, haben sie keine expliziten Rollen. Contextual Security Manager weist die Rolle snc_internal über einen regelmäßigen Auftrag mit dem Namen „Bericht zu Rufbereitschafts-Lücken-Konflikten“ zu, der alle 7 Tage ausgeführt wird. Wenn das Plugin „Explicit Roles“ aktiv ist, weist dieser Auftrag dem externen CSM-Benutzer die Rolle snc_internal zu, da der Benutzer nicht über die Rollen snc_internal oder snc_external verfügt.
Um zu verhindern, dass die Rolle snc_internal versehentlich externen Benutzern zugewiesen wird, enthält das Plugin „Explicit Roles“ die Eigenschaft glide.security.explicit_roles.internal_user_blacklist, mit der Benutzertypen ausgeschlossen werden, sodass sie unter keinen Umständen die Rolle snc_internal erhalten. Wenn in der Tabelle „glide.security.explicit_roles.internal_user_blacklist“ keine Benutzertypen vorhanden sind, weist Contextual Security Manager allen Benutzern standardmäßig die Rolle snc_internal zu. Wenn Klassennamen in der Tabelle „Schwarze Liste“ vorhanden sind und sich der Klassentyp sys_user in der Tabelle „Schwarze Liste“ befindet, weist CSM die Rolle snc_external zu. Andernfalls weist CSM wie gewohnt die Standardrolle snc_internal zu.
Für Release Paris ist diese Eigenschaft für zBoot-Instanzen standardmäßig aktiviert und für Upgrades standardmäßig deaktiviert.
Externen Benutzer Zugriff auf Tabellen gewähren
Sie können externen Benutzern Zugriff auf eine Tabelle gewähren, indem Sie der Tabelle eine Rolle hinzufügen, die die Rolle snc_external erbt. Weitere Informationen finden Sie unter Externen Benutzern Zugriff auf eine Tabelle bereitstellen.
Die hasRoles()-Methode
Die Methode hasRoles() ist zwar noch verfügbar, wird aber im Geneva-Release abgeschafft. Verwenden Sie stattdessen die Methode hasRole(role name).
hasRoles() verwenden, beachten Sie die folgenden Änderungen:- Diese Methode schließt die snc_internal-Standardrolle automatisch aus, wenn sie nach Rollen sucht. Dies bedeutet, dass die Methode
hasRoles()immer noch false zurückgibt, wenn ein Benutzer nur über die Rolle snc_internal verfügt. - Wenn der Benutzer die Rolle „snc_external“ hat, gibt die Methode false zurück, da die Instanz externe Benutzer als ohne Rolle betrachtet.
Gegenseitiger Ausschluss: snc_external und snc_internal
- Weisen Sie Benutzer Abel Tuter die Rolle snc_internal zu.
- Weisen Sie Benutzer Abel Tuter die Rolle snc_external zu.
Ergebnis: Das Hinzufügen der Rolle snc_external schlägt fehl, da Abel Tuter die Rolle snc_internal hat.
Beispiel: Einer Gruppe beide expliziten Rollen hinzufügen (direkte Kollision):
- Stellen Sie sich eine Gruppe namens Testgruppe vor, der derzeit keine expliziten Rollen zugewiesen sind.
- Fügen Sie Abel Tuter der Testgruppe hinzu.
- Fügen Sie die Rolle snc_external der Testgruppe hinzu.
Ergebnis: Das Hinzufügen der Rolle snc_external schlägt fehl, da Abel Tuter die Rolle snc_internal hat und nicht beide Rollen haben kann.
- Weisen Sie Benutzer Abel Tuter die Rolle snc_internal zu.
- Stellen Sie sich eine Gruppe namens Testgruppe vor, der derzeit keine expliziten Rollen zugewiesen sind.
- Fügen Sie Abel Tuter der Testgruppe hinzu.
- Fügen Sie die Rolle snc_external der Testgruppe hinzu.
Ergebnis: Das Hinzufügen der Rolle snc_external zur Gruppe schlägt fehl, da Abel Tuter die Rolle snc_external durch seine Zugehörigkeit zur Gruppe erben würde. Beide expliziten Rollen würden demselben Benutzer zugewiesen, was nicht zulässig ist.
Weitere Beispiele finden Sie in der folgenden Tabelle:
| Rolle | Versuchte Aktion | Ergebnis |
|---|---|---|
| Direkte Kollision | ||
| Der Benutzer hat die Rolle snc_internal. | Fügen Sie die Rolle snc_external hinzu. | Die Aktion wird abgebrochen. |
| Der Benutzer hat die Rolle snc_external. | Fügen Sie die Rolle snc_internal hinzu. | Die Aktion wird abgebrochen. |
| Der Benutzer hat keine explizite Rolle. | Fügt die Rolle snc_internal oder snc_external hinzu. | Die Rolle wird hinzugefügt. |
| Der Benutzer hat beide explizite Rollen (vorhandene Kollision). | Fügen Sie den Benutzer einer Gruppe ohne Rollen hinzu. | Die Aktion wird abgebrochen. |
| Eine Rolle, die keinem Benutzer zugeordnet ist, enthält die Rolle snc_internal. | Fügen Sie die Rolle snc_external hinzu. | Die Aktion wird abgebrochen. |
| Eine Rolle, die keinem Benutzer zugeordnet ist, enthält die Rolle snc_external. | Fügen Sie die Rolle snc_internal hinzu. | Die Aktion wird abgebrochen. |
| Der Rolle enthält beide explizite Rollen (vorhandene Kollision). | Fügen Sie die Rolle einem Benutzer, einer Rolle oder einer Gruppe hinzu. | Die Aktion wird abgebrochen. |
| Eine Gruppe ohne Mitglieder hat die Rolle snc_internal. | Fügen Sie die Rolle snc_external hinzu. | Die Aktion wird abgebrochen. |
| Eine Gruppe ohne Mitglieder hat die Rolle snc_external. | Fügen Sie die Rolle snc_internal hinzu. | Die Aktion wird abgebrochen. |
| Eine Gruppe ohne Mitglieder hat keine Rollen. | Fügt die Rolle snc_internal oder snc_external hinzu. | Die Rolle wird hinzugefügt. |
| Indirekte Kollision | ||
| Rolleneinschluss mit Kollision |
|
Die Aktion wird abgebrochen. |
| Rolleneinschluss ohne Kollision |
|
Die Rolle wird sowohl dem Benutzer als auch der Testrolle hinzugefügt. |
| Gruppeneinschluss mit Kollision |
|
Die Aktion wird abgebrochen. |
| Gruppeneinschluss ohne Kollision |
|
Die Rolle wird der übergeordneten Gruppe, der untergeordneten Gruppe und dem Benutzer hinzugefügt. |
| Gruppeneinschluss plus Rolleneinschluss mit Kollision | Fügen Sie contains_external der Testgruppe 1, der übergeordneten Gruppe von Testgruppe 2, hinzu. | Testgruppe 1 und Testgruppe 2 erhalten beide contains_external, aber sie erhalten nicht explizit die Rolle snc_external. |
| Fügen Sie die Rolle snc_internal der Testgruppe 2, der untergeordneten Gruppe von Testgruppe 1, hinzu. | Die Aktion wird abgebrochen. | |
| Änderung der übergeordneten Gruppe plus Gruppeneinschluss |
|
Die Aktion wird abgebrochen. Wiederholen Sie diesen Vorgang für bereits geschachtelte Gruppen, erwarten Sie derselbe Ergebnis. |
Die Ursache einer abgebrochenen Aktion wird in der Fehlermeldung angezeigt und muss behoben werden, bevor ein erneuter Versuch erfolgreich verlaufen kann.
Für direkte Fälle, z. B. Hinzufügen einer expliziten Rolle zu einem einzelnen Benutzer, überprüfen Sie, welche explizite Rolle der Benutzer haben soll. Wenn der Benutzer über die falsche explizite Rolle verfügt, muss diese zuerst entfernt und dann die richtige explizite Rolle hinzugefügt werden.
Für indirekte Fälle, z. B. Hinzufügen einer expliziten Rolle zu einer Gruppe (sodass einem Gruppenmitglied beide expliziten Rollen zugewiesen werden), überlegen Sie, ob dieser Benutzer in der Gruppe sein soll. Bestimmen Sie auch, ob die explizite Rolle der Gruppe zugewiesen werden soll. Dies schließt auch Fälle ein, in denen die Rolle durch die Gruppenhierarchie und durch Rolleneinschluss geerbt wird.
Beachten Sie, dass die Now Platform nur die erste mögliche Kollision meldet. Wenn nach Aufhebung der Kollision erneute Versuche wieder fehlschlagen, wobei eine andere Ursache vorliegt, sollten Sie die relevanten gegenseitigen Abhängigkeiten von Benutzern/Gruppen/Rollen umfassender analysieren. Dabei sollten Sie gegebenenfalls überdenken, wie Gruppen- und Rolleneinschlüsse aufgebaut sind.