Freigeben über


Beispiel: Sicherheit auf Spaltenebene mit dem Dataverse-SDK für .NET

Dieses Beispiel zeigt, wie Sie Sicherheit auf Spaltenebene mithilfe des Dataverse-SDK für .NET umsetzen.

Anforderungen

  • Microsoft Visual Studio 2022
  • Greifen Sie auf Dataverse mit Systemadministratorrechten zu.

Wie man dieses Beispiel ausführt

  1. Um eine lokale Kopie zu erhalten, laden Sie den Beispielbericht herunter, oder klonen Sie ihn.
  2. Befolgen Sie die Anweisungen im Abschnitt Benutzer konfigurieren, um ein zweites Anwendungsbenutzerkonto ohne Systemadministratorrolle zu erstellen.
  3. Bearbeiten Sie die Datei /ColumnLevelSecurity/appsettings.json so, dass sie eine Verbindungszeichenfolge festlegt, die die Microsoft Dataverse-Instanz angibt, zu der Sie eine Verbindung herstellen möchten, und zwar sowohl für den Systemadministrator als auch für den zweiten Anwendungsbenutzer.
  4. Um das Beispiel auszuführen, öffnen Sie die Beispiellösung in Visual Studio, und drücken Sie F5.

Funktionsweise

Dieses Beispiel veranschaulicht die Funktionen, die unter Sicherheit auf Spaltenebene mit Code beschrieben werden:

  • Ermitteln, welche Spalten in einer Dataverse-Umgebung gesichert werden können
  • Ermitteln, welche Spalten derzeit gesichert sind
  • Spalten in einer Dataverse-Umgebung sichern
  • Gewähren Sie einzelnen Benutzern Lese- oder Schreibzugriff auf ausgewählte Felder
  • Ändern des Zugriffs auf gesicherte Felder für einzelne Benutzer
  • Zugriff auf ausgewählte Felder für einzelne Benutzer widerrufen
  • Lese- und Schreibzugriff für bestimmte Benutzergruppen gewähren
  • Maskierung gesicherter Spalten aktivieren
  • Nicht maskierte Werte für gesicherte Spalten abrufen

Beispieldateien

Der Code für dieses Beispiel befindet sich in den folgenden Dateien:

Datei Eigenschaft
Program.cs Steuert den Flow im Beispiel. Enthält die Definition der Setup-, Run- und Cleanup-Methoden und ruft sie in der Main-Methode auf.
Examples.cs Enthält Methoden, die Vorgänge im Zusammenhang mit Sicherheit auf Spaltenebene demonstrieren.
Helpers.cs Enthält Methoden, die im Beispiel zum Verwalten, Einrichten und Ausführen des Beispiels verwendet werden. Diese Methoden stehen nicht im Mittelpunkt dieses Beispiels.

Dieses Beispiel ist so konzipiert, dass es bei Fehlern resilient ist, sodass Sie das Beispiel erneut ausführen können sollten, wenn es zuvor fehlgeschlagen ist.

Wie dieses Beispiel funktioniert

Um das unter Was macht dieses Beispiel, beschriebene Szenario zu erstellen, geht das Beispiel wie folgt vor:

Einrichtung

Die statische Setup-Methode in diesem Beispiel führt die folgenden Vorgänge aus:

  1. Erstellen eines Lösungsherausgebers namens ColumnLevelSecuritySamplePublisher mit dem Anpassungspräfix von sample, sofern nicht vorhanden.

  2. Erstellen einer Lösung namens ColumnLevelSecuritySampleSolution verknüpft mit dem Herausgeber, sofern nicht vorhanden.

    Alle nachfolgenden lösungsfähigen Elemente werden im Kontext dieser Lösung erstellt.

  3. Erstellen Sie eine Tabelle namens sample_Example, wenn sie nicht vorhanden ist.

  4. Erstellen Sie vier Zeichenfolgenspalten in der Tabelle sample_Example, falls sie nicht vorhanden sind. Tabellenschemanamen:

    • sample_Email
    • sample_GovernmentId
    • sample_TelephoneNumber
    • sample_DateOfBirth
  5. Entfernen Sie alle vorhandenen Beispieldaten in der Tabelle sample_Example.

  6. Fügen Sie drei Zeilen mit Beispieldaten mit Informationen in jeder Spalte der Tabelle sample_Example hinzu.

  7. Erstellen Sie eine neue Sicherheitsrolle mit dem Namen Beispielrolle für Sicherheit auf Spaltenebene.

  8. Fügen Sie der Sicherheitsrolle Berechtigungen für die Tabelle sample_Example hinzu.

  9. Weisen Sie den Benutzer der Sicherheitsrolle zu.

  10. Erstellen Sie einen Feldsicherheitsprofil-Datensatz mit dem Namen Beispielfeldsicherheitsprofil, der im Abschnitt Verwalten des Zugriffs auf gesicherte Spaltendaten für Gruppen des Beispiels verwendet wird.

  11. Ordnen Sie den Anwendungsbenutzer dem Feldsicherheitsprofil zu.

  12. Warten Sie 30 Sekunden, bis der Cache die neu erstellten Objekte eingeholt hat.

Demonstrieren

Die statische Run-Methode in diesem Beispiel führt die folgenden Vorgänge aus:

Informationen über Spalten abrufen

  1. Verwenden Sie die Examples.DumpColumnSecurityInfo-Methode, um eine CSV-Datei herunterzuladen, die Daten darüber enthält, welche Spalten im System gesichert werden können.
  2. Verwenden Sie die Examples.GetSecuredColumnList-Methode, um eine Liste der Umgebungsspalten, die bereits gesichert sind, abzurufen und anzuzeigen.

Spalten sichern

  1. Demonstrieren Sie, dass der Anwendungsbenutzer Daten aus allen Spalten der sample_Example-Tabelle abrufen kann.
  2. Verwenden Sie die Examples.SetColumnIsSecured-Methode, um die vier Spalten zu sichern.
  3. Demonstrieren Sie, dass der Anwendungsbenutzer Daten aus den gesicherten Spalten der sample_Example-Tabelle nicht mehr abrufen kann.

Einzelpersonen Zugriff auf gesicherte Spaltendaten erteilen

  1. Verwenden Sie die Examples.GrantColumnAccess-Methode, um Anwendungsbenutzern Lesezugriff auf bestimmte Datensatzfeldwerte zu gewähren, indem Sie einen Feldfreigabe (PrincipalObjectAttributeAccess)-Datensatz erstellen.
  2. Demonstrieren Sie, dass der Anwendungsbenutzer jetzt Daten aus bestimmten gesicherten Datensatzfeldern in der sample_Example-Tabelle abrufen kann.
  3. Demonstrieren Sie, dass der Anwendungsbenutzer keine Daten in die gesicherten Spalten schreiben darf.
  4. Verwenden Sie die Examples.ModifyColumnAccess-Methode, um Schreibzugriff auf ein bestimmtes Datensatzfeld zu gewähren.
  5. Demonstrieren Sie, dass der Anwendungsbenutzer jetzt berechtigt ist, Daten in das spezifische Datensatzfeld zu schreiben.
  6. Verwenden Sie die Examples.RevokeColumnAccess-Methode, um die PrincipalObjectAttributeAccess-Datensätze zu löschen, die dem Anwendungsbenutzer Zugriff auf die gesicherten Spalten gewährt haben.

Zugriff auf sichere Spaltendaten für Gruppen verwalten

  1. Fügen Sie Feldberechtigungen zum Beispielfeldsicherheitsprofil-Datensatz hinzu, der durch Erstellen von Setup-Datensätzen in erstellt wurde.
  2. Demonstrieren Sie, dass der Anwendungsbenutzer nur die gesicherten Spalten anzeigen kann, die in den Feldberechtigungsdatensätzen angegeben sind.
  3. Demonstrieren Sie, dass der Anwendungsbenutzer nicht berechtigt ist, Daten in ein spezifisches Datensatzfeld zu schreiben, das nicht mit Feldberechtigungen aktiviert ist.

Maskierung

  1. Rufen Sie ID-Werte für vorhandene Maskierungsregeln ab. Erstellen Sie neue Spalte für gesicherte Maskierung (AttributeMaskingRule)-Datensätze, um Maskierungsregeln für Spalten der Tabelle sample_Example anzugeben.
  2. Aktualisieren Sie die canreadunmasked-Spaltenwerte der zuvor erstellten Feldberechtigung (FieldPermission)-Datensätze.
  3. Warten Sie 30 Sekunden, bis der Cache die neu erstellten Objekte eingeholt hat.
  4. Demonstrieren Sie, dass der Anwendungsbenutzer jetzt Daten mit maskierten Werten abrufen kann.
  5. Demonstrieren Sie, dass der Anwendungsbenutzer jetzt mit der RetrieveMultipleRequest-Klasse unmaskierte Werte abrufen kann, wenn der optionale Parameter „UnMaskedData“ verwendet wird.
  6. Demonstrieren Sie, dass der Anwendungsbenutzer jetzt mit der RetrieveRequest-Klasse unmaskierte Werte abrufen kann, wenn der optionale Parameter „UnMaskedData“ verwendet wird.

Lösung exportieren

Verwenden Sie eine exportierte Lösung, um die Funktionalität der Beispielkonfigurationen außerhalb dieses Beispiels zu testen.

  1. Exportieren Sie die erstellte Lösung mit allen Konfigurationen als nicht verwaltete Lösung.
  2. Exportieren Sie die erstellte Lösung mit allen Konfigurationen als verwaltete Lösung.

Bereinigung

Die statische Cleanup-Methode in diesem Beispiel führt die folgenden Vorgänge aus:

Wenn die Einstellung SampleSettings.DeleteCreatedObjects in appsettings.jsontrue lautet, versucht die Cleanup-Methode, alle Komponenten zu löschen, die während Setup oder Run erstellt wurden. Ziel ist es, die Umgebung in den ursprünglichen Zustand zurückzuversetzen. Wenn Sie nicht möchten, dass die Elemente gelöscht werden, können Sie die Einstellung in false ändern.

Beispiel: Sicherheit auf Spaltenebene mit der Dataverse-Web-API (PowerShell)