Zugriffsprüfungen im Microsoft Purview Information Protection SDK
Die Durchsetzung der im Complianceportal definierten Information Rights Management-Rechte liegt in der Verantwortung des Anwendungsentwicklers. Das SDK stellt eine API und eine Reihe von Enumerationen bereit, um diese Zugriffsprüfungen zu vereinfachen.
Die folgenden Beispiele und Tabellen veranschaulichen, welche Szenarien eine Zugriffsprüfung erfordern, die Liste der zu überprüfenden Rechte, und wie die Überprüfung durchgeführt wird.
Rechteliste und Ergebnisse
Eine vollständige Liste der Nutzungsrechte und Beschreibungen finden Sie unter „Konfigurieren von Nutzungsrechten für Azure Information Protection“. In diesem Artikel werden die Verantwortlichkeiten eines Anwendungsentwicklers in der Rechteerzwingung und aktivierten Funktionen definiert, wenn bestimmte Rechte vorhanden sind oder nicht vorhanden sind.
Wichtig
Es ist die Verantwortung von Anwendungsentwicklern, Rechte sowohl zu überprüfen als auch durchzusetzen. Fehler bei der Durchführung von Prüfungen können zu Datenverlusten führen.
Szenarien
Wo und wie Ihre Anwendung Zugriffsprüfungen durchführt, hängt vom Typ der Anwendung ab, die Sie erstellen. Anwendungen, die die vollständige Dateiausgabe verarbeiten und über keine Benutzeroberfläche verfügen, verwenden die EXTRACT
- oder OWNER
-Rechte am häufigsten. Anwendungen mit einer Benutzeroberfläche erfordern präziseste Steuerelemente, die den Zugriff auf Benutzersteuerelemente blockieren und Pfade in der Anwendung exportieren. Codebeispiele finden Sie im Abschnitt „Zugriffsprüfungen ausführen“.
Anwendungen ohne Benutzeroberfläche
Anwendungen ohne Benutzeroberfläche sind häufig dienstbasierte oder Befehlszeilenschnittstellen (CLI). Wenn Ihre Anwendung Dateien verarbeitet, die durch Purview Information Protection geschützt sind, muss sie sicherstellen, dass ein Benutzer ohne die richtigen Rechte den Dienst oder die CLI nicht verwenden kann, um die Datei in einem nicht geschützten Format zu exportieren.
Diese Anwendungen sollten überprüfen, ob die OWNER- oder EXTRACT-Rechte vorhanden sind. Benutzer mit OWNER können jeden beliebigen Vorgang ausführen. Benutzer mit EXTRACT können den Schutz direkt entfernen oder in einem neuen Format speichern, auch wenn dieses Format keinen Schutz unterstützt.
Anwendungen mit einer Benutzeroberfläche
File SDK-Anwendungen mit einer Benutzeroberfläche müssen Steuerelemente implementieren, die den Zugriff auf Vorgänge einschränken, die der Benutzer nicht ausführen darf. Ein Beispiel für eine solche Anwendung ist der Azure Information Protection-Viewer. Der Viewer entschlüsselt die Datei vorübergehend und rendert Inhalte im Anwendungsfenster. Es führt präzise Zugriffsprüfungen durch, bevor das Dokument angezeigt wird, und Benutzeroberflächenelemente werden basierend auf den Ergebnissen der Zugriffsprüfungen deaktiviert.
Ein Teilworkflow zum Ausführen von Zugriffsprüfungen könnte wie folgt aussehen:
- Hat der Benutzer das OWNER-Recht? Wenn ja, aktivieren Sie alle Steuerelemente, und beenden Sie die Verarbeitung anderer Rechte.
- Hat der Benutzer das PRINT-Recht? Wenn ja, aktivieren Sie das Drucksteuerelement. Wenn nicht, deaktivieren Sie das Drucksteuerelement.
- Hat der Benutzer das EXPORT-Recht? Wenn ja, aktivieren Sie Exportsteuerelemente und UI-Elemente. Wenn nicht, deaktivieren Sie diese Elemente.
- Hat der Benutzer das EXTRACT-Recht? Wenn ja, aktivieren Sie kopieren und Screenshots. Wenn nicht, deaktivieren Sie diese Funktionen.
- Hat der Benutzer das EDIT-Recht? Wenn ja, aktivieren Sie das Bearbeiten und Speichern des aktuellen Elements. Wenn nicht, machen Sie das Element schreibgeschützt.
Diese Prüfungen sollten für alle Berechtigungen in der Rechteliste und Ergebnistabelle ausgeführt werden, mit Ausnahme der VIEW-Rechten. Auf die Datei kann nicht ohne dieses Recht zugegriffen werden.
Durchführen von Zugriffsprüfungen
Muster für die Ausführung der Zugriffsprüfung sind im Datei- und Schutz-SDK für C++, .NET und Java ähnlich.
Bei diesen Codebeispielen wird davon ausgegangen, dass Sie die Schritte zum Initialisieren des SDK durchlaufen und eine Engine und einen Handler instanziiert haben.
- Schnellstart: Initialisieren von Clientanwendungen (C++)
- Schnellstart: Initialisieren von Clientanwendungen (C#)
- Schnellstart: Initialisieren von Clientanwendungen für Protection SDKs (C++)
- Schnellstart: Initialisieren von Clientanwendungen für Protection SDKs (C#)
Durchführen von Zugriffsprüfungen im Datei-SDK mit .NET
Bei diesem Code-Snip wird davon ausgegangen, dass ein FileHandler erstellt wurde und auf eine gültige Datei verweist.
// Validate that the file referred to by the FileHandler is protected.
if(handler.Protection != null)
{
// Validate that user has rights to remove protection from the file.
if(handler.Protection.AccessCheck(Rights.Extract))
{
// If user has Extract right, remove protection and commit the change. Otherwise, throw exception.
handler.RemoveProtection();
bool result = handler.CommitAsync(outputPath).GetAwaiter().GetResult();
return result;
}
else
{
throw new Microsoft.InformationProtection.Exceptions.AccessDeniedException("User lacks EXPORT right.");
}
}
Durchführen von Zugriffsprüfungen im Protection SDK mit .NET
Bei diesem Code-Snip wird davon ausgegangen, dass ein ProtectionHandler für den Verbrauch erstellt wurde.
// Validate that the file referred to by the FileHandler is protected.
if(protectionHandler != null)
{
// Validate that user has rights to remove protection from the file.
if(protectionHandler.AccessCheck(Rights.Print))
{
// If the user has the print right, enable the control.
// SetPrintControlEnabled() is an example and not a MIP SDK function.
SetPrintControlEnabled(true);
}
else
{
// If the user does not have the print right, disable the control.
// SetPrintControlEnabled() is an example and not a MIP SDK function.
SetPrintControlEnabled(false);
}
}
Durchführen von Zugriffsprüfungen im Datei-SDK mit C++
Bei diesem Code-Snip wird davon ausgegangen, dass ein FileHandler erstellt wurde und auf eine gültige Datei verweist.
// Validate that the file referred to by the FileHandler is protected.
if (fileHandler->GetProtection() != nullptr)
{
if (fileHandler->GetProtection()->AccessCheck(mip::rights::Extract()))
{
auto commitPromise = std::make_shared<std::promise<bool>>();
auto commitFuture = commitPromise->get_future();
fileHandler->RemoveProtection();
fileHandler->CommitAsync(outputFile, commitPromise);
result = commitFuture.get();
}
else
{
throw std::runtime_error("User doesn't have EXTRACT right.");
}
}
Durchführen von Zugriffsprüfungen im Protection SDK mit C++
Bei diesem Code-Snip wird davon ausgegangen, dass ein ProtectionHandler für den Verbrauch erstellt wurde.
// Validate that the file referred to by the FileHandler is protected.
if (protectionHandler != nullptr)
{
if (protectionHandler->AccessCheck(mip::rights::Print()))
{
// If the user has the print right, enable the control.
// SetPrintControlEnabled() is an example and not a MIP SDK function.
SetPrintControlEnabled(true);
}
else
{
// If the user does not have the print right, disable the control.
// SetPrintControlEnabled() is an example and not a MIP SDK function.
SetPrintControlEnabled(false);
}
}
Nächste Schritte
Nachdem Sie nun eine Vorstellung davon haben, wie Sie Zugriffsprüfungen ordnungsgemäß durchführen und die mit diesen Prüfungen verbundenen Rechte erzwingen können, fahren Sie mit den Dateihandlerkonzepten fort, um mehr über das Entfernen des Schutzes von Dateien zu erfahren.