Explizite Rollen
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.
Plugin „Explicit Roles“
Wenn das „Explicit Roles“-Plugin aktiviert ist, gilt Folgendes:
- Alle -Benutzer müssen über die Rolle „snc_internal“ verfügen, um auf interne Ressourcen zuzugreifen, oder über die Rolle „snc_external“ für den Zugriff auf externe Ressourcen. Benutzer ohne eine dieser expliziten Rollen können nur auf öffentliche Ressourcen zugreifen.
- 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.
Nach der Aktivierung des Plugins erhält der Benutzer bei jeder Anmeldung die Rolle snc_internal, sofern das Konto diese Rolle noch nicht hatte, oder die Rolle snc_external. Dies schließt per Identitätswechsel angemeldete Benutzer ein.
- Allen vorhandenen ACLs ohne Rollenanforderung wird automatisch die Rolle snc_internal zugewiesen. Da sowohl vorhandenen ACLs als auch Benutzern 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 muss externen Benutzern manuell erteilt werden. Der Zugriff auf Datensätze wird über ACLs gewährt.
Verschieben Sie keine System-Update Sets zwischen Instanzen, unabhängig davon, ob das Plugin „Explicit Roles“ aktiviert oder deaktiviert ist. Weitere Informationen finden Sie unter System-Update Sets.
glide.security.explicit_roles.do_not_fix-Verhalten
glide.security.explicit_roles.do_not_fix “ mit Änderungen an „snc_internal“ angepasst. Die Rolle „snc_internal“ ist jetzt im Arbeitsspeicher und in „sys_user_has_role“ identisch. Das neue Verhalten für glide.security.explicit_roles.do_not_fix lautet:| Wert | Ergebnis |
|---|---|
| falsch | Fügen Sie die Rolle „snc_internal“ sowohl im Speicher als auch „sys_user_has_role“ hinzu |
| wahr | Fügen Sie keine Rolle „snc_internal“ im Speicher oder „sys_user_has_role“ hinzu |
„glide.security.explicit_roles.ignore.snc_internal.exclude_role_list“. „glide.security.explicit_roles.do_not_fix“ wiederherzustellen, verwenden Sie die Eigenschaft „glide.security.explicit_roles.do_not_fix_in_memory“.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 Provide external users access to a table.
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.
Fordern Sie explizite Rollen an
Aktivieren Sie Explizite Rollen, indem Sie das Plugin „Explicit Roles“ (com.glide.explicit_roles) über den Now Support -Servicekatalog anfordern.
Vorbereitungen
Erforderliche Rolle: Administrator