Delen via


Microsoft Information Protection File SDK - Actie-reden voor het verlagen van een vertrouwelijkheidslabel op een bestand (C#)

In deze quickstart wordt de verwerking van een downgradelabelbewerking behandeld wanneer voor het labelbeleid een reden is vereist. Hier gebruiken IFileHandler we de interface voor het wijzigen van de labels van een bestand. Raadpleeg de API-naslaginformatie voor meer informatie.

Vereiste voorwaarden

Als u dat nog niet hebt gedaan, moet u de volgende vereisten voltooien voordat u doorgaat:

  • Volledige quickstart: Vertrouwelijkheidslabels (C#) instellen/ophalen waarmee een eenvoudige Visual Studio-oplossing wordt gebouwd om de vertrouwelijkheidslabels van een organisatie weer te geven en vertrouwelijkheidslabels in te stellen en te lezen naar/van een bestand. Deze snelstartgids 'How to - Downgrade/Remove a label that needs a justification C#' bouwt voort op de vorige.
  • Optioneel: Controleer de concepten van bestandshandlers in de MIP SDK-concepten.

Logica toevoegen om een lager label in te stellen op een beveiligd bestand

Voeg logica toe om een vertrouwelijkheidslabel in te stellen op een bestand met behulp van het object Bestandshandler.

  1. Open de Visual Studio-oplossing die u in de vorige quickstart hebt gemaakt: Vertrouwelijkheidslabels instellen/ophalen (C#).

  2. Open met Solution Explorer het .cs-bestand in uw project dat de implementatie van de Main() methode bevat. Deze wordt standaard ingesteld op dezelfde naam als het project dat het bevat, die u hebt opgegeven tijdens het maken van het project.

  3. Werk de <label-id> waarde uit de vorige quickstart bij naar een gevoeligheidslabel die rechtvaardiging vereist voor verlaging. Tijdens deze quickstart stellen we eerst dit label in en proberen we het vervolgens te verlagen via codefragmenten in verdere stappen.

  4. Tegen het einde van de Main() body, onder Console.ReadKey() en boven het afsluitblok van de applicatie (waar u de vorige keer in de Quickstart was gebleven), voegt u de volgende code in.

    //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. Aan het einde van Main() zoek je het afsluitblok van de toepassing dat in de vorige quickstart is gemaakt en voeg je de onderstaande handlerregels toe om resources vrij te geven.

    downgradeHandler = null;
    commitHandler = null;
    
  6. Vervang de tijdelijke aanduidingen in de broncode met behulp van de volgende waarden:

    Plaatsvervanger Waarde
    <gedegradeerde-gelabelde-uitvoer> Het pad naar het uitvoerbestand waarnaar u het gewijzigde bestand wilt opslaan.
    <nieuwe-label-id> Een sjabloon-id, gekopieerd uit de console-uitvoer in de vorige quickstart, bijvoorbeeld: bb7ed207-046a-4caf-9826-647cff56b990. Zorg ervoor dat het een lagere gevoeligheid heeft dan het eerder beveiligde bestandslabel.

De toepassing bouwen en testen

Bouw en test uw cliƫntapplicatie.

  1. Gebruik Ctrl-SHIFT-B (build solution) om uw clienttoepassing te bouwen. Als u geen buildfouten hebt, gebruikt u F5 (Foutopsporing starten) om uw toepassing uit te voeren.

  2. Als uw project succesvol wordt gebouwd en uitgevoerd, kan de toepassing elke keer dat de SDK uw -methode aanroept, om authenticatie vragen met behulp van Microsoft Authentication Library (MSAL). Als er al referenties in de cache aanwezig zijn, wordt u niet gevraagd u aan te melden en verschijnt de lijst met labels, gevolgd door de informatie over het toegepaste label en het gewijzigde bestand.

  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.

Houd er rekening mee dat een vergelijkbare benadering ook van toepassing is op DeleteLabel() de bewerking, voor het geval het label dat uit een bestand wordt verwijderd, een reden vereist volgens het labelbeleid. DeleteLabel() functie gooit een JustificationRequiredException uitzondering en IsDowngradeJustified vlag moet worden ingesteld op true bij de afhandeling van uitzonderingen voordat een label succesvol wordt verwijderd.