Die HANA-Datenbank ist die eigene In-Memory Datenbanklösung der SAP. In bestimmten Anwendungsfällen muss es Anwender/innen ermöglicht werden, direkt auf Datenbankobjekte wie Views oder Tabellen zuzugreifen. Um für diese Szenarien sicherzustellen, dass die Anwender/innen nur auf die für sie vorgesehenen Daten zugreifen können, bietet die SAP verschiedene Privileg-Arten auf der HANA Datenbank. Neben System-, Paket-, Objekt-, Applikations-Privilegien sowie Privilegien auf Benutzer, bietet die SAP analytische Privilegien, welche es ermöglichen Filterbedingungen für die Datenselektion zu erstellen. Letztere werden in diesem Blog-Eintrag behandelt.
Analytische Privilegien ermöglichen es, die Sicht auf Daten in bestimmten Views benutzerspezifisch einzuschränken, indem sie die Filterbedingungen für die Aufarbeitung der Daten definieren. Dadurch können unterschiedliche Benutzer, welche mit verschiedenen analytischen Privilegien berechtigt sind, eine andere Teilmenge der Daten eins HANA-Views angezeigt bekommen. Analytische Privilegien lassen sich hierbei in statische und dynamische Privilegien unterscheiden. Über die klassischen statischen analytischen SQL-Privilegien lassen sich bestimmte Attribute eines Views einschränken, beispielsweise auf einen festen definierten Namen eines Standortes. Alle Inhaber des Privilegs können auf der Datenbank dann nur diejenigen Daten über den View sehen, welche im Zusammenhang mit dem definierten Standort stehen. Durch die statische Definition der Filterbedingung sind die statischen analytischen Privilegien nicht sehr flexibel in ihrer Anwendung. Für jeden unterschiedlichen Filterwert muss ein gesondertes Privileg angelegt und zugewiesen werden.
Zusätzlich gibt es jedoch die Möglichkeit die Filterbedingungen der analytischen Privilegien dynamisch zu ermitteln. Hierzu kann eine SQL-Skript Prozedur geschrieben werden, welche im laufenden Betrieb die Filterbedingung für das analytische Privileg zusammenbaut. SQL-Skript bietet verschiedenste Werkzeuge, um die Filterbedingungen für die Datenselektion zusammenzubauen. So kann beispielsweise der Benutzername des angemeldeten Users ausgelesen werden, um benutzerspezifische Informationen zu sammeln. In Kombination mit der Möglichkeit, mittels SQL verschiedenste SAP-Standardtabellen des S/4-Systems auszulesen, ergibt sich ein großes Potenzial zur Gestaltung der dynamischen Filterbedingung. Es können zum Beispiel die S/4-Berechtigungswerte des Users ausgelesen werden, um diese in der Datenselektion auf bestimmte organisatorische Felder in der HANA-Datenbank heranzuziehen.
Die Vorteile der dynamischen Privilegien liegen vor allem darin, dass sie auf verschiedene Filterwerte mit nur einer Prozedur einschränken können. Um das obige Beispiel mit einer Einschränkung auf den Standort aufzugreifen, ermöglichen es die dynamischen Privilegien je nach Benutzer auf unterschiedliche Standorte zu filtern, ohne dass pro Standort ein eigenes statisches analytisches Privileg erstellt und zugewiesen werden muss. Die dynamischen Privilegien ermöglichen eine Reduktion der Anzahl von benötigten Privilegien und vereinfachen das benötigte Berechtigungskonzept, da bei der Berechtigungsvergabe an die Benutzer nicht zwischen verschiedenen Filterinhalten unterschieden werden muss. Die Nachteile der dynamischen Privilegien liegen in der Komplexität, es ist nicht auf den ersten Blick ersichtlich, wie die Filterwerte ausgestaltet sind. Gerade bei der Suche nach Berechtigungsfehlern müssen die SQL-Statements für die jeweiligen Benutzer nachgestellt werden, um die Filterbedingung nachvollziehen zu können.
Zusammenfassend sind die dynamischen analytischen Privilegien ein mächtiges Werkzeug, um die Filterkriterien für HANA Datenbank-Views während der Laufzeit zusammen zu bauen. Sie ermöglichen es in Echtzeit mit der gleichen Prozedur die Filter für verschiedene Benutzer in unterschiedlicher Ausprägung zu erstellen.