Core Data Services (CDS) ABAP

CDS Berechtigungsprüfung und Erweiterbarkeit

(C) Brandeis Consulting

Begriffe für Berechtigungsprüfung

CDS Rolle

Die Rolle enthält die Berechtigungen. Eine Rolle wird aktuell noch jedem ABAP Benutzer zugewiesen. Siehe SAP Dokumentation

Zugriffsregeln

Zugriffsregeln definieren (WHERE) Bedingungen. Sie können auch von anderen CDS Objekten bzw. deren Zugriffsregeln erben.

Zugriffsbedingungen

Zugriffsbedingungen können formuliert werden mit

  • Konstanten Werten
  • dem aktuellen Benutzername
  • Werten aus Berechtigungsobjekten (Transaktion SU21)
  • Vererbung aus anderen Views bzw. Rollen
(C) Brandeis Consulting

Konzept

Da alle Benutzer alle Rollen haben, ist der Begriff mehr als verwirrend.

  • Es werden stets die Berechtigungen geprüft, die für den verwendeten View definiert sind. D.h. die von diesem aufgerufenen Views prüfen ihre Berechtigungen nicht.
  • Die CDS Rollen können mit AND oder OR verknüpft werden. Dh. Schnittmenge oder Vereinigungsmenge der Berechtigungen.
  • Die PFCG Rollen sind immer nur additiv, d.h. mit OR verknüpft.

Bei CDS Queries

  • Es werden die Rollen der primären Quelle der Query geprüft, nicht die Rollen der Query. Also eines Cube- oder Dimension-Views.
  • Falls Dimension-Views zu einem Cube-View assoziiert wurden, werden deren Rollen beim Zugriff auf den Cube nicht geprüft. Es wird nur die primäre Quelle geprüft.
(C) Brandeis Consulting

Beispiele

@EndUserText.label: 'Only own objects'
@MappingRole: true
define role ZOS1022_AC01 {

    grant select on zos1022_auth
    
    where Author = aspect user
      and Genflag = '';                        
}
@EndUserText.label: 'Authorization Object Reference'
@MappingRole: true
define role ZOS1022_AC02 {
    grant select on zos1022_auth
    where ( ObjName, devclass ) 
    
      = aspect pfcg_auth( S_DEVELOP, 
                         objname, 
                         devclass, 
                         actvt = '03'     );
                        
}
(C) Brandeis Consulting

Annotation @AccessControl.authorizationCheck

Die View Annotation @AccessControl.authorizationCheck steuert, ob eine Rolle existieren muss, die diesen CDS-View betrifft. Mögliche Ausprägungen sind:

  • #CHECK - Die Syntaxprüfung des CDS-Views bzw. der SELECT-Abfrage darauf liefert eine Warnung, falls keine Rolle definiert wurde. Das ist der Standardwert!
  • #NOT_ALLOWED - Syntaxfehler falls eine Rolle existiert.
  • #NOT_REQUIRED - Rollen sind möglich, aber keine Pflicht.
  • #PRIVILEGED_ONLY - Direkter Zugriff nur im ABAP SQL mit dem Zusatz WITH PRIVIVLEGED ACCESS möglich. Ein solcher View kann zur Nutzung alternativ mit einem Wrapper versehen werden oder als Assoziations-Partner verwendet werden.
(C) Brandeis Consulting

Berechtigungsprüfung aus ABAP Sicht

Mit dem Zusatz WITH PRIVIVLEGED ACCESS in SELECT Anweisungen wird die Berechtigungsprüfung umgangen.

    SELECT 
      FROM zjb_as_tasks WITH PRIVILEGED ACCESS
      FIELDS

    
(C) Brandeis Consulting