Freigeben über


Microsoft Information Protection File SDK – Aktionsbegründung zur Herabstufung einer Empfindlichkeitskennzeichnung in 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 Details finden Sie in der API-Referenz.

Voraussetzungen

Falls noch nicht geschehen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen, bevor Sie fortfahren:

Hinzufügen einer Logik zum Festlegen einer niedrigeren Bezeichnung zu einer geschützten Datei

Fügen Sie logik hinzu, um eine Vertraulichkeitsbezeichnung für eine Datei mithilfe des File-Handlerobjekts festzulegen.

  1. Öffnen Sie die Visual Studio-Lösung, die Sie in der vorherigen Schnellstartanleitung erstellt haben: Festlegen/Abrufen von Vertraulichkeitsbezeichnungen (C#).

  2. Öffnen Sie im Projektmappen-Explorer die .cs-Datei in Ihrem Projekt, die die Implementierung der Main() Methode enthält. Standardmäßig wird derselbe Name wie das Projekt verwendet, das es enthält, das Sie während der Projekterstellung angegeben haben.

  3. Ändern Sie den <label-id>-Wert aus dem vorherigen Schnellstart in eine Vertraulichkeitsbezeichnung, für die zum Herabstufen eine Rechtfertigung erforderlich ist. Während dieser Schnellstartausführung legen wir diese Bezeichnung zuerst fest und versuchen dann, sie über Codeausschnitte in weiteren Schritten zu senken.

  4. Fügen Sie den folgenden Code am Ende des Main() Textkörpers, unterhalb von Console.ReadKey() und oberhalb des Blocks, bei dem Sie in der vorherigen Schnellstartanleitung mit dem Beenden der Anwendung aufgehört haben, 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. Am Ende von Main() finden Sie den Anwendungsshutdown-Block, der im vorherigen Schnellstart erstellt wurde, und fügen Sie die folgenden 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, in dem Sie die geänderte Datei speichern möchten.
    <new-label-id> Eine Vorlagen-ID, die aus der Konsolenausgabe in der vorherigen Schnellstartanleitung kopiert wurde, z. B.: bb7ed207-046a-4caf-9826-647cff56b990. Stellen Sie sicher, dass die Sensitivität niedriger ist als die zuvor geschützte Dateibezeichnung.

Erstellen und Testen der Anwendung

Erstellen und testen Sie Ihre Clientanwendung.

  1. Verwenden Sie Strg-SHIFT-B (Lösung erstellen), um Ihre Client-App zu erstellen. Wenn keine Buildfehler auftreten, verwenden Sie F5 (Debuggen starten), um Ihre 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 aufgefordert, sich anzumelden. Stattdessen wird die Liste der Beschriftungen sowie Informationen über die angewendete Beschriftung und die geänderte Datei 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 ein ähnlicher Ansatz auch für den DeleteLabel()-Betrieb gilt, falls das Löschen einer Bezeichnung aus einer Datei eine Begründung gemäß der Bezeichnungsrichtlinie erfordert.DeleteLabel() Die Funktion löst eine JustificationRequiredException Ausnahme aus, und die IsDowngradeJustified Flagge muss bei der Ausnahmebehandlung auf "true" gesetzt werden, bevor eine Bezeichnung erfolgreich gelöscht wird.