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

373

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 - 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

ABAP in Praxis - String Verarbeitung

Kategorie - ABAP

In diesem praktischen Beispiel schauen wir uns die String Verarbeitung zur Ermittlung der CDS Namen in CamelCase an und wie du das mit ABAP umsetzen kannst.

15.10.2024

ABAP - CDS Extraktor

Kategorie - ABAP

Wie funktioniert der CDS Extraktor in ABAP und welche Herausforderungen gibt es bei der Entwicklung damit. In diesem Artikel schauen wir uns ein paar Details an.

20.09.2024

ABAP Tools - Arbeiten mit Eclipse (CDS Templates)

Kategorie - ABAP

Wieder das falsche CDS Template bei der Erstellung ausgewählt? Hier ein kleiner Tipp um nachträglich noch den View in ABAP zu korrigieren.

02.07.2024