Dela via


Microsoft Information Protection File SDK – Åtgärdsmotivering för att sänka en känslighetsetikett på en fil (C#)

Den här snabbstarten tar upp hanteringen av en nedgraderingsetikettåtgärd när etikettprincipen kräver motivering. Här använder IFileHandler vi gränssnittet för att ändra etiketterna för en fil. Mer information finns i API-referensen.

Förutsättningar

Om du inte redan har gjort det måste du slutföra följande krav innan du fortsätter:

  • Slutför snabbstart: Ange/hämta känslighetsetiketter (C#) som skapar en visual studio-startlösning för att visa en organisations känslighetsetiketter och ange och läsa känslighetsetiketter till/från en fil. Den här snabbstarten "How to – Downgrade/Remove a label that needs a justification C#" bygger på den föregående.
  • Valfritt: Granska begrepp för filhanterare i MIP SDK-begreppen.

Lägg till logik för att ange en lägre etikett till en skyddad fil

Lägg till logik för att ange en känslighetsetikett för en fil med hjälp av filhanterarobjektet.

  1. Öppna Visual Studio-lösningen som du skapade i föregående "Snabbstart: Ange/hämta känslighetsetiketter(C#).

  2. Använd Solution Explorer och öppna .cs-filen i projektet som innehåller implementeringen av Main() metoden. Det är som standard samma namn som det projekt som innehåller det, som du angav när projektet skapades.

  3. <label-id> Uppdatera värdet från föregående snabbstart till en känslighetsetikett som kräver motivering för att sänka. Under den här snabbstartskörningen anger vi den här etiketten först och försöker sedan sänka den via kodfragment i ytterligare steg.

  4. Mot slutet av brödtexten Main() , nedanför Console.ReadKey() och ovanför block för programavstängning (där du slutade i föregående snabbstart), infogar du följande kod.

    //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. Mot slutet av Main() hittar du programavstängningsblocket som skapades i föregående snabbstart och lägger till nedanstående hanteringsrader för att frigöra resurser.

    downgradeHandler = null;
    commitHandler = null;
    
  6. Ersätt platshållarvärdena i källkoden med hjälp av följande värden:

    Platshållare Värde
    <downgraded-labled-output> Sökvägen till utdatafilen som du vill spara den ändrade filen till.
    <new-label-id> Ett mall-ID som kopierades från konsolens utdata i föregående snabbstart, till exempel: bb7ed207-046a-4caf-9826-647cff56b990. Kontrollera att den har lägre känslighet än den tidigare skyddade filetiketten.

Skapa och testa programmet

Skapa och testa klientprogrammet.

  1. Använd CTRL-SHIFT-B (Build Solution) för att skapa klientprogrammet. Om du inte har några byggfel använder du F5 (Starta felsökning) för att köra programmet.

  2. Om projektet byggs och körs korrekt kan programmet fråga efter autentisering med hjälp av Microsoft Authentication Library (MSAL) varje gång SDK:t anropar din AcquireToken() metod. Om cachelagrade autentiseringsuppgifter redan finns uppmanas du inte att logga in och se listan med etiketter, följt av informationen på den tillämpade etiketten och den ändrade filen.

  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.

Observera att liknande metod även gäller för DeleteLabel() åtgärder, om etiketten som tas bort från en fil kräver en motivering enligt etikettprincipen.DeleteLabel() funktionen utlöser ett JustificationRequiredException undantag och IsDowngradeJustified flaggan ska vara inställd på true i undantagshantering innan en etikett tas bort.