This is a test message to test the length of the message box.
Login
ABAP CDS Berechtigungspüfung
Erstellt von Software-Heroes

CDS - Berechtigungsprüfung

566

Wie und wo werden die Berechtigungen für ein Core Data Service abgegrenzt? In diesem Artikel erfährst du die Einzelheiten dazu.

Werbung


Bisher hatten wir vor allem über die Beschaffung der Daten gesprochen und wie wir sie Anwendungen und Usern zur Verfügung stellen. Dabei haben wir uns über das eigentliche Sicherheitskonzept noch keine Gedanken gemacht und wie wir eigentlich verhindern, dass nicht jeder auf alles Zugriff hat. In diesem Artikel wollen wir dir einen ersten Einstieg in das Thema zur Verfügung stellen.

 

Allgemein

Die Prüfung der Berechtigungen für die Daten eines Core Data Service basieren zum Großteil aus den bewährten Konzepten des SAP Systems, aus den Berechtigungsobjekten. Für unsere Prüfungen definieren wir dazu ein eigenes Berechtigungsobjekt:

 

In diesem Fall basiert das Berechtigungsobjekt auf der Materialnummer und der Aktivität, um so Einschränkungen bei der Anzeige des Materials zu machen.

 

Zugriffskontrolle

Um nun eine Berechtigungsprüfung für ein Objekt zu definieren, legen wir ein Zugriffskontrolle an. Dies ist eine neue Art von Objekt die du direkt über das Kontextmenü des Core Data Service anlegen kannst:

 

Im Anschluss definieren wir den Inhalt der Prüfung. Wir erlauben Zugriff auf die Daten, wenn die nachfolgenden Bedingungen erlaubt sind. Da wir auf ein Berechtigungsobjekt verweisen, nutzen wir das den Aspekt "pcfg_auth", also die normale Userberechtigung:

@EndUserText.label: 'Authority check for material'
@MappingRole: true
define role ZBS_I_DmoMaterial {
  grant 
    select
      on
        ZBS_I_DmoMaterial
          where
            ( MaterialNumber ) = aspect pfcg_auth(ZBS_DMOMAT, MATNR, ACTVT = '03');
}

 

In der Where-Bedingung werden die Felder für den Vergleich selektiert (hier MaterialNumber) und im hinteren Teil die Felder geprüft. Die Anzahl der selektierten Felder, verteilt sich in der Reihenfolge auf die Platzhalter des Berechtigungsobjekts. In der Klammer folgt zuerst das Berechtigungsobjekt, dann die Platzhalter, die auch entsprechende Prüfwerte haben können. In diesem Fall wird MaterialNumber der MATNR zugewiesen und abgeglichen.

Folgende Prüfungen können in der Zugriffskontrolle gemacht werden:

  • Abgleich einer Berechtigung (pfcg_auth)
  • Direkte Einschränkung über die Where-Bedingung

 

Annotation

Im Quellview hatten wir bisher meist die Annotation "@AccessControl.authorizationCheck" auf "#NOT_REQUIRED" gesetzt, damit wird keine Berechtigungsprüfung erwartet und der Compiler weist nicht mehr auf das Fehlen der Zugriffskontrolle hin. Folgende Ausprägungen sind möglich:

  • #CHECK - Verhält sich wie NOT_REQUIRED, aber der Compiler gibt dem Entwickler eine Warnmeldung aus, dass noch keine Prüfung implementiert wurde.
  • #MANDATORY - Löst einen Dump aus, wenn auf den CDS View zugegriffen wird und keine Zugriffkontrolle definiert wurde.
  • #NOT_ALLOWED - Gibt Warnmeldung aus, wenn eine Zugriffkontrolle angelegt wird.
  • #NOT_REQUIRED - Wenn keine Zugriffkontrolle definiert ist und auch benötigt wird.
  • #PRIVILEGED_ONLY - Der Zugriff per ABAP SQL funktioniert nur, wenn der Zusatz "with privileged rights" verwendet wird.

 

Fazit

Die Eingrenzung der Berechtigungen ist ebenso ein wichtiger Punkt wie der Aufbau des Datenmodells. Am Ende der Entwicklung solltest du dann auch für den Schutz deiner Daten sorgen. Grundsätzlich ist das Thema viel umfangreicher als von uns beschrieben, soll dir erst einmal einen leichten Einstieg gewähren.


Enthaltene Themen:
CDSCore Data ServiceBerechtigungsprüfung
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


CDS - Writable View Entity

Kategorie - ABAP

Kannst du einen UPDATE auf einen Core Data Service in ABAP machen? Lass uns dazu die neuen CDS View Entitäten anschauen.

01.04.2025

CDS - Berechtigungsprüfung (Teil 2)

Kategorie - ABAP

Wie gehst du mit dem Thema Zugriffskontrolle bei Core Data Services in ABAP um und wie kannst du Fehler analysieren? Mehr dazu im Artikel.

14.03.2025

CDS - Hierarchie

Kategorie - ABAP

Was machen eigentlich Hierarchien und wie kannst du sie mit Core Data Services in ABAP aufbauen? In diesem Artikel schauen wir uns die Definition an.

07.02.2025

CDS - Migration der Views

Kategorie - ABAP

Du hast noch viele alte Core Data Services in deinem ABAP System? Zeit für die Migration zur neuen Entität.

15.11.2024

CDS - Typen und Enums

Kategorie - ABAP

Was wird im ABAP Dictionary die Datenelemente ablösen und wie kannst du schon heute die Typen für die Core Data Services verwenden? Mehr hier.

05.11.2024