MIP File SDK: Rechtfertigung für das Senken der Vertraulichkeitsbezeichnung einer Datei (C#)
In diesem Schnellstart wird das Herabstufen einer Bezeichnung behandelt, wenn die Bezeichnungsrichtlinie eine Rechtfertigung erfordert. In diesem Fall wird die IFileHandler
-Schnittstelle zum Ändern der Bezeichnungen einer Datei verwendet. Weitere Informationen finden Sie in der API-Referenz.
Voraussetzungen
Stellen Sie vor dem Fortfahren sicher, dass die folgenden Voraussetzungen erfüllt sind:
- Schließen Sie den Schnellstart: Festlegen/Abrufen von Vertraulichkeitsbezeichnungen (C#) ab, in dem in Visual Studio eine Startprojektmappe zum Auflisten der Vertraulichkeitsbezeichnungen einer Organisation und zum Festlegen und Lesen von Vertraulichkeitsbezeichnungen in einer Datei erstellt wird. Dieser Schnellstart „Herabstufen/Entfernen einer Bezeichnung, die eine Rechtfertigung erfordert (C#)“ baut auf dem vorherigen auf.
- Lesen Sie optional die Konzepte zu Dateihandlern im MIP SDK.
Hinzufügen von Logik zum Festlegen einer niedrigeren Bezeichnung für eine geschützte Datei
Fügen Sie Logik zum Festlegen einer Vertraulichkeitsbezeichnung für eine Datei mithilfe des Dateihandlerobjekts hinzu.
Öffnen Sie die Visual Studio-Projektmappe, die Sie im vorherigen „Schnellstart: Festlegen/Abrufen von Vertraulichkeitsbezeichnungen (C#)“ erstellt haben.
Öffnen Sie mithilfe des Projektmappen-Explorers die CS-Datei in Ihrem Projekt, die die Implementierung der
Main()
-Methode enthält. Standardmäßig weist sie denselben Namen wie das Projekt auf, in dem sie enthalten ist. Diesen Namen haben Sie bei der Projekterstellung angegeben.Ändern Sie den
<label-id>
-Wert aus dem vorherigen Schnellstart in eine Vertraulichkeitsbezeichnung, für die zum Herabstufen eine Rechtfertigung erforderlich ist. Sie legen diese Bezeichnung in diesem Schnellstart zuerst fest und versuchen dann in weiteren Schritten, sie über Codeausschnitte herabzustufen.Fügen Sie am Ende des Methodenkörpers von
Main()
, zwischenConsole.ReadKey()
und dem Block zum Herunterfahren der Anwendung (an der Stelle, an der Sie im vorherigen Schnellstart aufgehört haben) den folgenden Code ein.//Set paths and label ID string lowerInput = actualOutputFilePath; string lowerActualInput = lowerInput; string newLabelId = "<new-label-id>"; string lowerOutput = "<downgraded-labled-output>"; string lowerActualOutput = lowerOutput; //Create a file handler for that file var downgradeHandler = Task.Run(async () => await fileEngine.CreateFileHandlerAsync(lowerInput, lowerActualInput, true)).Result; //Set Labeling Options LabelingOptions options = new LabelingOptions() { AssignmentMethod = AssignmentMethod.Standard }; try { //Try to set new label downgradeHandler.SetLabel(fileEngine.GetLabelById(newLabelId), options, new ProtectionSettings()); } catch (Microsoft.InformationProtection.Exceptions.JustificationRequiredException) { //Request justification from user Console.Write("Please provide justification for downgrading a label: "); string justification = Console.ReadLine(); options.IsDowngradeJustified = true; options.JustificationMessage = justification; //Set new label downgradeHandler.SetLabel(fileEngine.GetLabelById(newLabelId), options, new ProtectionSettings()); } // Commit changes, save as outputFilePath var downgradedResult = Task.Run(async () => await downgradeHandler.CommitAsync(lowerActualOutput)).Result; // Create a new handler to read the labeled file metadata var commitHandler = Task.Run(async () => await fileEngine.CreateFileHandlerAsync(lowerOutput, lowerActualOutput, true)).Result; // Get the label from output file var newContentLabel = commitHandler.Label; Console.WriteLine(string.Format("Getting the new label committed to file: {0}", lowerOutput)); Console.WriteLine(string.Format("File Label: {0} \r\nIsProtected: {1}", newContentLabel.Label.Name, newContentLabel.IsProtectionAppliedFromLabel.ToString())); Console.WriteLine("Press a key to continue."); Console.ReadKey();
Suchen Sie am Ende von Main() den im vorherigen Schnellstart erstellten Block zum Herunterfahren der Anwendung, und fügen Sie darunter Handlerzeilen hinzu, um Ressourcen freizugeben.
downgradeHandler = null; commitHandler = null;
Ersetzen Sie die Platzhalterwerte im Quellcode durch die folgenden Werte:
Platzhalter Wert <downgraded-labled-output> Der Ausgabedateipfad, unter dem die geänderte Datei gespeichert werden soll. <new-label-id> Eine Vorlagen-ID, die Sie aus der Konsolenausgabe im vorherigen Schnellstart kopiert haben, z. B. bb7ed207-046a-4caf-9826-647cff56b990
. Stellen Sie sicher, dass sie eine niedrigere Vertraulichkeit als die zuvor geschützte Dateibezeichnung hat.
Erstellen und Testen der Anwendung
Erstellen und testen Sie die Clientanwendung.
Drücken Sie STRG+UMSCHALT+B (Projektmappe erstellen), um Ihre Clientanwendung zu erstellen. Wenn keine Buildfehler auftreten, verwenden Sie F5 (Debuggen starten), um die Anwendung auszuführen.
Wenn das Projekt erfolgreich erstellt und ausgeführt wird, kann die Anwendung Sie jedes Mal zur Authentifizierung über die Microsoft Authentication Library (MSAL) auffordern, wenn das SDK Ihre
AcquireToken()
-Methode aufruft. Wenn bereits zwischengespeicherte Anmeldeinformationen vorhanden sind, werden Sie nicht zur Anmeldung aufgefordert. Die Liste der Bezeichnungen mit den Informationen zur angewandten Bezeichnung und der geänderten Datei wird angezeigt.
Personal : 73c47c6a-eb00-4a6a-8e19-efaada66dee6
Public : 73254501-3d5b-4426-979a-657881dfcb1e
General : da480625-e536-430a-9a9e-028d16a29c59
Confidential : 569af77e-61ea-4deb-b7e6-79dc73653959
Highly Confidential : 905845d6-b548-439c-9ce5-73b2e06be157
Press a key to continue.
Getting the label committed to file: c:\Test\Test_labeled.docx
Name: Confidential
IsProtected: True
Press any key to continue . . .
Please provide justification for downgrading a label: Lower label approved.
Getting the new label committed to file: c:\Test\Test_downgraded.docx
File Label: General
IsProtected: False
Press a key to continue.
Beachten Sie, dass für den Fall, dass die Bezeichnung aus einer Datei gelöscht wird, eine Rechtfertigung entsprechend der Bezeichnungsrichtlinie erforderlich ist. Ein ähnlicher Ansatz sollte auch für den DeleteLabel()
-Vorgang verwendet werden.Die DeleteLabel()
-Funktion löst eine JustificationRequiredException
-Ausnahme aus, und das Flag IsDowngradeJustified
sollte in der Ausnahmebehandlung auf TRUE festgelegt werden, bevor die Bezeichnung erfolgreich gelöscht wird.