14 Nov 2025
Min.

Customized Rowlevel-Security in Microsoft Dataverse Tabellen

Wie man mit Microsoft Power Automate bestimmten Benutzern automatisiert Zugriffsberechtigung auf Datensätze in Microsoft Dataverse (Rowlevel Security) gibt und auch wieder nimmt.

Modeldriven Power-Apps-Umgebungen bringen bereits ein sehr gutes und Intuitives Rollenbasiertes Berechtigungskonzept mit. So ist es beispielsweise sehr einfach Zugriffsmöglichkeiten (Acess-Level: wie darf der Benutzer zugreifen) auf Datensätze von Microsoft Dataverse Tabellen über Rollen festzulegen bzw. einzuschränken. Da das Access-Level keine Ja/Nein-Information ist, sondern ein Schlüssel - eine etwas unglückliche Bezeichnung, wie ich finde - über den man festlegen kann, auf welche Datensätze der Tabelle der Benutzer den entsprechenden Zugriff hat, kann man automatisch den Zugriff auf Rowlevel-Ebene einschränken.

Diese Einstellungsmöglichkeit findet man unter: Erweiterte Einstellungen > Einstellungen > System > Sicherheit > Sicherheitsrollen > [entsprechende Rolle] > [entsprechende Tabelle].

Über die Matrix kann man für jede Tabelle festlegen, wie (= Access-Level) Mitglieder der Rolle auf diese Datensätze zugreifen dürfen. Folgende Access-Level stehen zur Verfügung: Erstellen, Lesen, Schreiben, Löschen, Anfügen, Anfügen an, Zuweisen, Freigeben.

Für jedes dieser Access-Level kann über den Schlüssel bestimmt werden, auf welche Datensätze sich der Zugriff bezieht. Diese können sein: Datensätze des jeweiligen Benutzers, Datensätze aller Benutzer einer Unternehmenseinheit, Datensätze aller Benutzer einer übergeordneten Organisation, Datensätze aller Benutzer der gesamte Organisation.

Screenshot der Matrix zur Bearbeitung von Sicherheitsrollen in Dynamics 365. Die Zeilen listen Entitäten auf und die Spalten Zugriffsberechtigungen. Ein Schlüssel am unteren Rand erklärt die Symbole für die Zugriffsebenen: 'Benutzer' (gelb), 'Unternehmenseinheit' und 'Organisation' (grün).

Was aber, wenn die Einteilung auf Benutzer- Unternehmens- oder Organisationslevel nicht für meinen Praxisfall passt? Wenn beispielsweise alle Benutzer eines Teams Zugriff auf bestimmte Datensätze haben sollen. Ist das möglich?

Ja: ist es!

Hierfür ist es wichtig zu wissen, dass der Schlüssel „Benutzer“ den Zugriff auf Datensätze, die von dem jeweiligen Benutzer erstellt wurden oder mit dem Benutzer geteilt wurden, gewährt. Das Teilen von Datensätzen wird über den Ribbon-Button "Freigeben" und das nachfolgende Angeben von Benutzern oder Teams erreicht. Technisch werden dazu Einträge in der Tabelle PrincipalObjectAccess (POA) erstellt.

Im Folgenden soll es nun darum gehen, diese Freigabe über Power Automate zu automatisieren.

Um eine Datensatz-Freigabe über Power Automate zu erstellen bzw. zu entfernen, bedient man sich einer Unbound Action. Mit "GrantAccess" wird eine Freigabe für einen einzelnen Benutzer oder ein Team erstellt.

Screenshot der Aktion 'GrantAccess' in Power Automate. Die Konfiguration zeigt, wie einem 'systemuserid' (Benutzer) die 'AccessMask' 'ReadAccess' (Leserecht) für einen Datensatz der 'm8_moduls'-Tabelle erteilt wird.

Welche Parameter werden bei "GrantAccess" übergeben?

Unter "Target" wird angegeben um welche Tabelle es sich handelt und in Klammern die GUID des entsprechenden Datensatzes für den die Freigabe erfolgen soll. In meinem Fall wird ein Datensatz der Tabelle "m8_modul" freigegeben.

Bsp. m8_moduls(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxx)

Unter "PrincipalAccess" wird angegeben wem Zugriff gegeben wird, einem einzelnen Benutzer oder einer Gruppe und den entsprechenden Datentyp (Microsoft.Dynamics.CRM.systemuser oder Microsoft.Dynamics.CRM.teams) .

Will man einem einzelnen Nutzer Zugriff gewähren, wird es wie im Bild gemacht. Die "systemuserid" ist hierbei die GUID des entsprechenden Benutzers für den man den Datensatz freigeben möchte.

Achtung: Falls ein Formatfehler auftritt muss "@@odata.type" geschrieben werden (@@ doppelt).

Eine Freigabe für ein Team sieht wie folgt aus:

Screenshot der 'GrantAccess'-Aktion in Power Automate. Diese Konfiguration zeigt, wie einem 'teamid' (Team) die 'AccessMask' 'ReadAccess' (Leserecht) für einen Datensatz der 'm8_moduls'-Tabelle erteilt wird.

"AccessMask" regelt die Freigabestufe, welche für den entsprechenden Datensatz erteilt wird.

Folgende AccessMask‘s können gesetzt werden:

  • None = Keinen Zugriff
  • ReadAccess = Leserechte auf den Datensatz
  • WriteAccess = Lese- und Schreibrechte auf den Datensatz
  • AppendAccess = Anfügen eines weiteren Datensatzes an den Datensatz
  • AppendToAccess = Dem Datensatz einen bestimmten Datensatz anfügen (AppenAccess und AppendToAccess funktionieren in Kombination)
  • CreateAccess = Datensatz erstellen
  • DeleteAccess = Datensatz löschen
  • ShareAccess = Datensatz freigeben für einen Systemuser/Team
  • AsignAccess = Besiter des Datensatzes ändern

Mittels „RevokeAccess“ kann die Freigabe wieder entfernt werden.

Screenshot der Power Automate-Aktion 'RevokeAccess'. Die Konfiguration zeigt, wie einem 'systemusers' (Revokee) der Zugriff auf einen 'm8_moduls'-Datensatz (Target) entzogen wird.

"PrincipalId" ist die GUID des Systemuser dem der Zugriff auf einen bestimmten Datensatz (ObjectId = GUID des Datensatzes) der Tabelle "m8_modul" entzogen werden soll.

Häufige Fragen

Wie oft sollte ich die Kapazitäts-Nutzung prüfen?

Mindestens monatlich, bei wachsenden Systemen wöchentlich. Richte Alerts ein, die Dich bei 80% der verfügbaren Kapazität warnen.

Kann ich Kapazität zwischen Environments verschieben?

Ja, Kapazität ist tenant-weit verfügbar. Du kannst sie flexibel zwischen Environments aufteilen, ohne zusätzliche Kosten.

Was passiert bei Kapazitäts-Überschreitung?

Microsoft berechnet Overage-Gebühren automatisch. Diese sind oftteurer als geplante Kapazität, daher solltest Du rechtzeitig aufstocken.

Kostenlose Erstberatung

Lass uns in einem unverbindlichen Erstgespräch klären, wie wir Deine Prozesse vereinfachen können.

Aus unserem Wissensschatz

Konkrete Lösungsansätze und ehrliche Erfahrungen aus unserer täglichen Arbeit mit der Power Platform.

Alle Artikel ansehen

Was sind Model-driven Power Apps?

Was sind Canvas Power Apps?

ModulAcht setzt App zur Erfassung von Covid-19 Tests um

Regelmäßige Praxis-Tipps

Erfahre, wie andere Unternehmen ihre Arbeitsprozesse mit der Microsoft Power Platformvereinfachen. Praktische Einblicke, bewährte Strategien und echte Erfolgsgeschichten.

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Kostenlos. Jederzeit abbestellbar. Kein Spam.