SAP HANA Berechtigungen

IMG_1517
Berechtigungskonzept Status Quo

Als Ausgang eines sinnvollen Berechtigungskonzept in SAP HANA basierte das How To von Richard Bremer „How to Define Standard Roles for SAP HANA Systems“ zu finden unter folgendem Link. Das Dokument basiert auf SPS7 und ist im Anbetracht des aktuellen SPS-Standes etwas älter und dennoch für die grundlegenden Berechtigungen aktuell. Zwar fehlen noch Berechtigungen in Richtung (native) Development, aber je nach Gestaltung der Anwendung braucht diese unter Umständen ein komplett eigenes Berechtigungskonzept.

Zudem gibt es aus meiner Sicht viele Berechtigungen, die teilweise bzw. zunächst nicht benötigt werden oder zusammengefasst werden. Und generell fehlt die HANA_ALL Rolle 🙂

Das Schöne an der Vorlage dieses Dokumentes ist die überaus gute Dokumentation. So kann man diese Dokument nicht nur als Orientierung bei der Implementierung verwenden, sondern gleich als Referenz für eine Dokumentation.

Die Form der Berechtigungsrolle und deren Anlage ist (korrekterweise) als .hdbrole Datei angegeben. Nichtsdestotrotz fand ich eine SQL-Variante schöner, bzw. eleganter aus meiner Sicht. Zwar benötigt man den SYSTEM Benutzer zur Anlage der Rollen, aber man kann diese ad-hoc anlegen und ausführen. Ein Teil der Berechtigungn habe ich bereits umgeschrieben, weitere werden Folgen, und mein (persönlicher) Wunsch ist die Implementierung von einige Procedures, die z.b. einen automatisierten Abgleich, oder Template-Anlage für neue Benutzer bieten.

Da dieser Artikel zukünftig erweitert werden soll, sowohl um Textbausteine zur Erläuterung, als auch um Skripte zur Anwendung des Berechtigungskonzeptes werde ich versuchen den Beitrag bei Aktualisierung oben zu halten.

Es gibt in SAP HANA Privileges, welche in Rollen zusammengefasst werden können, wobei eine Rolle auch mehrere weitere Rollen enthalten kann (Sammelrolle).

Die SAP HANA Privileges sind im Wesentlichen unterteilt in vier wichtige Gruppen, welche man im nachfolgenden Skript wieder findet

  • SYSTEM Privileges Berechtigungen auf Basisfunktionalitäten der SAP HANA (User- und Transportmanagement, etc.)
  • OBJECT Privileges: Berechtigungen auf CATALOG Inhalte (Schemata, Procedures, …)
  • PACKAGE Privileges: Berechtigungen auf PACKAGE Inhalte (Modellierung)
  • ANALYTICAL Privileges: Berechtigungen auf Dateninhalte, vgl. Analyseberechtigungen in SAP BW

Generell kann man die User gruppieren in Entwickler (eingeschränkt mit DATA_MODELING oder erweitert um REPO Berechtigungen für den Transport und Management der Packages) und (Basis/User) Administratoren. Wie bereits eingangs erwähnt, die Anwendungsentwicklung auf SAP HANA ist ein komplett eigener Teil und wird momentan hier nicht weiter behandelt (DEVELOPMENT). Ebenso hatte ich zunächst AUDIT Berechtigungen, etc. weg gelassen.

UPDATE 04.11.2016

Inzwischen ist einige Zeit vergangen. Neue Berechtigungen sind dazu gekommen und generell hat sich meine Methodik bei der Implementierung geändert. Generell funktioniert das unten angehängte SQL noch tadellos, auch in der aktuellen Version SPS12, aber inzwischen empfehlen ich nicht mehr die Run-Time Variante, sondern die Design-Time Variante.

Als Design-Time Variante legt man entsprechende transportierbare Rollen an und hält diese System-übergreifend konsistent. Hierzu habe ich abermals am SAP Template gehalten und habe die Rollen Projekt für den regulären Import auf einer SAP HANA XS zur Verfügung gestellt. Die entsprechende Datei und die Anleitung für den Import findet ihr auf meinem Github Account unter https://github.com/scherbinek/SAP-HANA-Authorization 

Zusätzlich habe ich das Thema SAP HANA Berechtigung mit den wichtigsten Fragen und Antworten als Podcast Episode aufgezeichnet. Erreichbar unter hanafm.de oder direkt unter diesem Link. Aufgrund der hohen Nachfrage gehe ich zusätzlich noch einmal näher auf das Thema SAP HANA Berechtigung im Kontext unter diesem Link ein.

UPDATE 19.06.2017 – Weitere Literatur

amazon.de: Berechtigungen in SAP BW, HANA und BW/4HANA

Die Nachfrage ist ungebrochen hoch nach Themen der SAP HANA Berechtigung. Das freut mich sehr und ich werde auch weiterhin versuchen diesen Artikel so aktuell wie möglich zu halten. Gerne verweise ich auch das folgende, sehr neue Buch „Berechtigungen in SAP BW, HANA und BW4/HANA“ (Link) von Kretner und Kanngießer. Das Buch ist erschien April 2017 im Verlag Espresso Tutorials. Es ist also sehr aktuell und günstiger als die SAP Press Bücher.

 

-- SAP HANA Modeling Guide - Requiered Permission for SAP System User
-- Assign Role rfc_hdb to SAP DB User
-- Impotant! Execute SQL Statement in DB02
---- GRANT SELECT ON SCHEMA "hdbuser" TO _SYS_REPO
CREATE ROLE RFC_HDB;
GRANT SELECT ON SCHEMA _SYS_BI TO RFC_HDB;
GRANT SELECT ON SCHEMA _SYS_BIC TO RFC_HDB;
CALL _SYS_REPO.GRANT_ACTIVATED_ANALYTICAL_PRIVILEGE('_SYS_BI_CP_ALL','RFC_HDB');
GRANT EXECUTE ON REPOSITORY_REST TO RFC_HDB;
GRANT REPO.READ ON ".REPO_PACKAGE_ROOT" TO RFC_HDB;
GRANT REPO.MAINTAIN_NATIVE_PACKAGES ON ".REPO_PACKAGE_ROOT" TO RFC_HDB;
GRANT REPO.EDIT_NATIVE_OBJECTS ON ".REPO_PACKAGE_ROOT" TO RFC_HDB;
GRANT REPO.ACTIVATE_NATIVE_OBJECTS ON ".REPO_PACKAGE_ROOT" TO RFC_HDB;
-- 5.2.2 User Admin role
---- includes Role Admin for Role Management
CREATE ROLE USER_ADMIN;
-- SYSTEM Privileges
GRANT CATALOG READ TO USER_ADMIN;
GRANT USER ADMIN TO USER_ADMIN;
GRANT ROLE ADMIN TO USER_ADMIN;
-- OBJECT Privileges
GRANT EXECUTE ON GRANT_ACTIVATED_ROLE TO USER_ADMIN;
GRANT EXECUTE ON REVOKE_ACTIVATED_ROLE TO USER_ADMIN;
GRANT EXECUTE ON REPOSITORY_REST TO USER_ADMIN;

-- 5.3.1 Role basic_admin
CREATE ROLE BASIC_ADMIN;
-- SYSTEM Privileges
GRANT CATALOG READ TO BASIC_ADMIN;
GRANT SERVICE ADMIN TO BASIC_ADMIN;
GRANT INIFILE ADMIN TO BASIC_ADMIN;
GRANT TRACE ADMIN TO BASIC_ADMIN;
GRANT SESSION ADMIN TO BASIC_ADMIN;
GRANT VERSION ADMIN TO BASIC_ADMIN;
GRANT LICENSE ADMIN TO BASIC_ADMIN;
-- OBJECT Privileges
GRANT SELECT ON SCHEMA _SYS_STATISTICS TO BASIC_ADMIN;

-- 5.3.2 Role persistence_admin
CREATE ROLE PERSISTENCE_ADMIN;
-- SYSTEM Privileges
GRANT CATALOG READ TO PERSISTENCE_ADMIN;
GRANT SAVEPOINT ADMIN TO PERSISTENCE_ADMIN;
GRANT RESOURCE ADMIN TO PERSISTENCE_ADMIN;
GRANT LOG ADMIN TO PERSISTENCE_ADMIN;

-- 5.3.3 Role backup_admin
CREATE ROLE BACKUP_ADMIN;
-- SYSTEM Privileges
GRANT CATALOG READ TO BACKUP_ADMIN;
GRANT BACKUP ADMIN TO BACKUP_ADMIN;

-- 5.3.4 Role system_admin_generic
CREATE ROLE SYSTEM_ADMIN_GENERIC;
GRANT BASIC_ADMIN TO SYSTEM_ADMIN_GENERIC;
GRANT PERSISTENC_ADMIN TO SYSTEM_ADMIN_GENERIC;
GRANT BACKUP_ADMIN TO SYSTEM_ADMIN_GENERIC;

-- 5.3.7 Role database_monitoring
CREATE ROLE DATABASE_MONITORING;
GRANT sap.hana.admin.roles::Monitoring TO DATABASE_MONITORING;
-- SYSTEM Privileges
GRANT CATALOG READ TO DATABASE_MONITORING;
-- OBJECT Privileges
GRANT SELECT ON SCHEMA _SYS_STATISTICS TO DATABASE_MONITORING;

-- 5.3.8 Role data_admin (renamed to catalog_admin)
CREATE ROLE CATALOG_ADMIN;
-- SYSTEM Privileges
GRANT CREATE SCHEMA TO DATA_ADMIN;
GRANT EXPORT TO DATA_ADMIN;
GRANT IMPORT TO DATA_ADMIN;

-- 5.4.1 Role repo_manager
CREATE ROLE REPO_MANAGER;
-- SYSTEM Privileges
GRANT REPO.MAINTAIN_DELIVERY_UNITS TO REPO_MANAGER;
-- OBJECT Privileges
GRANT EXECUTE ON REPOSITORY_REST TO REPO_MANAGER;
-- PACKAGE Privileges
GRANT REPO.READ ON ".REPO_PACKAGE_ROOT" TO REPO_MANAGER;
GRANT REPO.MAINTAIN_NATIVE_PACKAGES ON ".REPO_PACKAGE_ROOT" TO REPO_MANAGER;
GRANT REPO.ACTIVATE_NATIVE_OBJECTS ON ".REPO_PACKAGE_ROOT" TO REPO_MANAGER;
GRANT REPO.ACTIVATE_IMPORTED_OBJECTS ON ".REPO_PACKAGE_ROOT" TO REPO_MANAGER;

-- 5.4.2 Role repo_exporter
CREATE ROLE REPO_EXPORTER;
-- SYSTEM Privileges
GRANT REPO.MAINTAIN_DELIVERY_UNITS TO REPO_EXPORTER;
GRANT REPO.EXPORT TO REPO_EXPORTER;
-- OBJECT Privileges
GRANT EXECUTE ON REPOSITORY_REST TO REPO_EXPORTER;
-- PACKAGE Privileges
GRANT REPO.READ ON ".REPO_PACKAGE_ROOT" TO REPO_EXPORTER;
GRANT REPO.MAINTAIN_NATIVE_PACKAGES ON ".REPO_PACKAGE_ROOT" TO REPO_EXPORTER;
GRANT REPO.MAINTAIN_IMPORTED_PACKAGES ON ".REPO_PACKAGE_ROOT" TO REPO_EXPORTER;

-- 5.4.3 Role repo_importer
CREATE ROLE REPO_IMPORTER;
-- SYSTEM Privileges
GRANT REPO.IMPORT TO REPO_IMPORTER;
-- OBJECT Privileges
GRANT EXECUTE ON REPOSITORY_REST TO REPO_IMPORTER;

-- 5.6.4 role data_modeling:
---- role data_modeling_generic
---- role (modified) data_modeling_public (bw- and customer-specific)
---- role model_preview_unrestricted
CREATE ROLE DATA_MODELING;
-- SYSTEM Privileges
GRANT CATALOG READ TO DATA_MODELING;
GRANT CREATE R SCRIPT TO DATA_MODELING;
GRANT CREATE SCENARIO TO DATA_MODELING;
-- OBJECT Privileges
GRANT EXECUTE ON REPOSITORY_REST TO DATA_MODELING;
GRANT SELECT ON SCHEMA _SYS_BI TO DATA_MODELING;
GRANT SELECT ON SCHEMA _SYS_BIC TO DATA_MODELING;
GRANT EXECUTE ON SCHEMA _SYS_BIC TO DATA_MODELING;
-- GRANT SELECT ON SCHEMA _SYS_REPO TO DATA_MODELING;
-- GRANT EXECUTE ON SCHEMA _SYS_REPO TO DATA_MODELING;
-- ANALYTICAL Privileges
-- GRANT STRUCTURED PRIVILEGE _SYS_BI_CP_ALL TO DATA_MODELING;
CALL _SYS_REPO.GRANT_ACTIVATED_ANALYTICAL_PRIVILEGE('_SYS_BI_CP_ALL','DATA_MODELING');
-- PACKAGE Privileges
-- Root Package ".REPO_PACKAGE_ROOT"
-- Default system-local.bw
GRANT REPO.READ ON "system-local.bw" TO DATA_MODELING;
-- Default system-local.public (Playground, not transportable)
GRANT REPO.READ ON "system-local.public" TO DATA_MODELING;
GRANT REPO.MAINTAIN_NATIVE_PACKAGES ON "system-local.public" TO DATA_MODELING;
GRANT REPO.EDIT_NATIVE_OBJECTS ON "system-local.public" TO DATA_MODELING;
GRANT REPO.ACTIVATE_NATIVE_OBJECTS ON "system-local.public" TO DATA_MODELING;
-- Default customer
GRANT REPO.READ ON "<info_area>" TO DATA_MODELING;
GRANT REPO.MAINTAIN_NATIVE_PACKAGES ON "<info_area>" TO DATA_MODELING;
GRANT REPO.EDIT_NATIVE_OBJECTS ON "<info_area>" TO DATA_MODELING;
GRANT REPO.ACTIVATE_NATIVE_OBJECTS ON "<info_area>" TO DATA_MODELING;

-- Role XS Developer
CREATE ROLE XS_DEVELOPER;
GRANT sap.hana.xs.ide.roles::CatalogDeveloper TO XS_DEVELOPER;
GRANT sap.hana.xs.ide.roles::Developer TO XS_DEVELOPER;
GRANT sap.hana.xs.ide.roles::EditorDeveloper TO XS_DEVELOPER;
GRANT sap.hana.xs.ide.roles::SecurityAdmin TO XS_DEVELOPER;
GRANT sap.hana.xs.ide.roles::TraceViewer TO XS_DEVELOPER;

-- Role XS Administrator
-- CREATE ROLE XS_ADMIN;
-- GRANT sap.hana.xs.admin.roles:: TO XS_ADMIN;

-- Sammelrolle HANA_ALL
CREATE ROLE HANA_ALL;
GRANT SYSTEM_ADMIN_GENERIC TO HANA_ALL;
GRANT USER_ADMIN TO HANA_ALL;
GRANT DATABASE_MONITORING TO HANA_ALL;
GRANT CATALOG_ADMIN TO HANA_ALL;
GRANT REPO_MANAGER TO HANA_ALL;
GRANT REPO_EXPORTER TO HANA_ALL;
GRANT REPO_IMPORTER TO HANA_ALL;
GRANT DATA_MODELING TO HANA_ALL;

Verwandte Beiträge

Comments (1)

Sehr gutes SQL Skript, um schnell und unkompliziert Rollen in SAP HANA anzulegen. Und sehr gute weiterführend Informationen. Vielen Dank!

Leave a comment

*