Mit dem SAP Identity Provisioning Service (IPS) bietet SAP eine Abstraktionsschicht für die Anbindung von Cloud-Systemen mit einer einheitlichen, standardisierten SCIM-API-Schnittstelle. So lassen sich Identity-Mangement-Systeme wie SAP IdM, One Identity oder Okta bequem und ohne Customizing an die SAP Analytics Cloud (SAC) anbinden, um das User-Management zu automatisieren.
Obwohl die initiale Anbindung einfach funktioniert, gibt es einige SAC-spezifische Herausforderungen, die in diesem Zusammenhang zu klären sind. Wir fassen die wichtigsten Aspekte zusammen und erläutern passende Lösungsansätze.
Die SAC hat verschiedene Entitäten, die für das User-Management von Bedeutung sind:
User
Rollen
Teams
Über Rollen können technische Zugriffsberechtigungen definiert werden, über Teams lässt sich die Sichtbarkeit von Stories und noch mehr verwalten. Die SCIM-Schnittstelle bietet aber nur zwei Endpunkte an:
/User -> User
/Groups -> Teams
Eine Verwaltung von Rollenzuweisungen ist über die API nicht möglich.
Als Best-Practice-Ansatz empfiehlt SAP, direkte Rollenzuweisungen zu vermeiden und diese über Teams an die User zu vererben.
Somit reicht es aus, die Rollenvergabe über Teams abzubilden und den Usern per SCIM-API zuzuweisen.
Bei der SCIM-API der SAP Analytics Cloud gibt es einen bekannten Bug, der zu einem 404-Fehler führt, wenn eine Teamzuweisung vorgenommen wird. Den Bug beschreibt die SAP Note 2857395.
Der Bug tritt bei der ID-Generierung der Teams über die Web-UI auf dem System auf. Dadurch sind die Teams nicht per SCIM ansprechbar. Ob der Bug auch auf Ihrem System vorhanden ist, lässt sich leicht überprüfen.
Die /Groups-API aufrufen und die Liste aller Teams laden
Ein zufälliges Team auswählen und einzeln einlesen
Tritt nun ein 404-Fehler auf, ist der Bug auf Ihrem System vorhanden.
SAP empfiehlt verschiedene Lösungsansätze, um dieses Problem zu beheben. Wir raten zur „saubersten“ Möglichkeit: Löschung und Neuanlage aller Teams, die über die UI angelegt wurden. Dabei müssen alle Zuweisungen (Storys, User, Rollen usw.) neu vergeben werden. Auch wenn die Migration der aufwendigere Lösungsansatz ist, haben wir damit die besten Erfahrungen gemacht und empfehlen diese Variante.
Neuanlage über Postman
Nun ist das Team auch über die SCIM-API ansprechbar.
Da neue Teams jetzt nicht mehr über die UI, sondern über die SCIM-API erstellt werden, benötigt die Fachabteilung entweder ein Skript zur Anlage von Teams oder eine Schulung für Postman. Eine weitere Option ist es, einen Workflow zur Anlage der Teams über das Identity-Management-Tool zu entwerfen.
Bei der Vergabe und beim Entzug eines Teams muss auch die Liste der zugeordneten Rollen mitgegeben werden. Falls dieses Feld in der SCIM-Anfrage leer ist, werden alle Rollenzuweisungen im Team gelöscht.
Hier ist ein Team mit einer Admin-Rolle (PROFILE:sap.epm.Admin) zu sehen.
Nun fügen wir diesem Team einen User (D425) hinzu, ohne alle Rollenzuweisungen explizit mitzugeben.
Alle Rollenzuweisungen im Team sind verschwunden.
Die Empfehlung lautet, die Liste der zugewiesenen Rollen bei der SCIM-Anfrage immer mitzusenden.
Das impliziert jedoch, dass das IdM diese Informationen (Welche Rolle ist in welchem Team?) kennen muss. Die Rollenzuweisungen bei Teams werden im IdM verwaltet und von dort aus über SCIM beschrieben.
Da für das Erstellen von Teams womöglich schon ein Workflow existiert, lässt sich dieser Prozess auch mit dem Management der Rollenzuweisungen der Teams im IdM erweitern.
In der SAP Analytics Cloud gibt es die Möglichkeit, Owner von Stories zu sein oder im Personal Space Stories zu bauen. Beim Löschen müssen diese Elemente wahlweise an einen anderen User übertragen werden, ansonsten sind sie weg.
Beim Löschen über die UI wird explizit nachgefragt, was mit diesen Daten geschehen soll.
Beim Löschen über die API gibt es diese Möglichkeit nicht.
Leider gibt es zu dieser Herausforderung keine technische Lösung. Es gibt jedoch zwei verschiedene Möglichkeiten für einen Workaround:
Deaktivieren statt Löschen
Löschen der User manuell nur über den Systemverantwortlichen. Dabei wird beim Löschen eines Users im IdM statt einer Deprovisionierung eine Genehmigung oder eine E-Mail an den Systemverantwortlichen geschickt. Dieser löscht den User und entscheidet, was mit den Daten passiert.
In der SAP Analytics Cloud ist es nicht möglich, einen User über die UI zu aktivieren oder zu deaktivieren. Ebenso wenig ist es möglich zu sehen, welchen Status ein User hat.
Die SCIM-API bietet das Attribut „active“ an, das den Userstatus widerspiegelt.
Über dieses Attribut lassen sich User aktivieren und deaktivieren. Ein deaktivierter User kann sich zwar noch anmelden, bekommt daraufhin aber eine Fehlermeldung und kann keine Daten mehr abrufen. Der Status des Users kann nun wenigstens über das IdM nachverfolgt und/oder gesteuert werden.
Ist beim Single Sign-On (SSO) ein eigener Identity-Provider und als Mapping-Attribut „email“ ausgewählt, greift ein besonderer Mechanismus der SAP Analytics Cloud bei der Useranlage. Intern werden alle userNames mit E-Mail überschrieben, in der Liste der User wird aber die Domain zur Anzeige abgeschnitten. Bei der Anlage von neuen Usern mit userID != email erscheint nun eine Fehlermeldung.
Vorhandene User lassen sich noch aktivieren, deaktivieren und löschen, aber eine Stammdatenänderung wie Vor- oder Nachname verursacht den gleichen Fehler.
Für diesen Fall gibt es zwei Lösungsmöglichkeiten:
Die userID ist gleichzeitig auch das Präfix der E-Mail-Adresse (userID=MAXMUSTERMANN, Email=maxmustermann@ibsolution.de). Dafür ist es erforderlich, sowohl in userName als auch in email die vollständige E-Mail-Adresse zu schreiben. Die SAP Analytics Cloud wiederum extrahiert automatisch die userID aus der E-Mail.
Die userID soll nicht identisch mit dem Präfix der E-Mail-Adresse sein (userID: MAXMUST, Email=maxmustermann@ibsolution.de).
Im ersten Schritt wird ein User mit userName=MAXMUST@ibsolution.de und email=MAXMUST@ibsolution.de erstellt. Er erhält die userID MAXMUST.
Im zweiten Schritt ändern wir den User mit der userID MAXMUST auf userName=MAXMUSTERMANN@ibsolution.de und email=maxmustermann@ibsolution.de.
Im Ergebnis hat der User jetzt die userID MAXMUST und die E-Mail-Adresse maxmustermann@ibsolution.de.
Trotz erfolgreichem Setup des SSO können einige User sich nicht an der SAP Analytics Cloud anmelden. Stattdessen erscheinen kryptische Fehlermeldungen. Das Problem ist bei manchen Usern reproduzierbar, während die Anmeldung bei anderen Usern problemlos klappt.
Im Gegensatz zu vielen anderen Implementierungen ist die SAML-Implementierung der SAC für das SSO case sensitive. Das heißt, dass ein User mit der E-Mail-Adresse MaxMustermann@ibsolution.de im Identity Provider nicht dem User maxmustermann@ibsolution.de zugewiesen werden kann.
Die Lösung des Problems ist einfach: In der SAC sollten E-Mail-Adressen immer kleingeschrieben sein. Im Identity Provider muss eine Transformation für die NameID ausgewählt werden.
ToLowerCase() bei Azure/ADFS
Auf SAP Cloud Identity Authentication gibt es unter Applications -> App auswählen -> Apply Function to Subject Name Identifier die Auswahl der Transformation
Die Anbindung der SAP Analytics Cloud an den SAP Identity Provisioning Service ist noch mit einigen Schwierigkeiten verbunden. Viele der genannten Herausforderungen hat das Entwicklungsteam bereits aufgegriffen. Sie werden in kommenden Releases nachgebessert. So wird im Sommer 2022 eine neue Version (2.0) der SCIM-API erscheinen. Einige andere Probleme sind tiefer verankert und müssen auch weiterhin mit Workarounds gelöst werden. Sobald es Neuigkeiten zur Anbindung der SAC an den SAP IPS gibt, werden wir den Blogbeitrag entsprechend aktualisieren.