Freigeben über


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.

  1. Öffnen Sie die Visual Studio-Projektmappe, die Sie im vorherigen „Schnellstart: Festlegen/Abrufen von Vertraulichkeitsbezeichnungen (C#)“ erstellt haben.

  2. Ö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.

  3. Ä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.

  4. Fügen Sie am Ende des Methodenkörpers von Main(), zwischen Console.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();
    
    
  5. 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;
    
  6. 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.

  1. 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.

  2. 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.