Sdílet prostřednictvím


Microsoft Information Protection File SDK – Odůvodnění akce pro snížení popisku citlivosti u souboru (C#)

Tento rychlý start řeší zpracování operace popisku downgrade, když zásada popisku vyžaduje odůvodnění. Tady použijeme IFileHandler rozhraní pro změnu popisků souboru. Další podrobnosti najdete v referenčních informacích k rozhraní API.

Předpoklady

Pokud jste to ještě neudělali, nezapomeňte před pokračováním dokončit následující požadavky:

  • Dokončení rychlého startu: Nastavení nebo získání popisků citlivosti (C#), které vytvoří úvodní řešení sady Visual Studio pro výpis popisků citlivosti organizace a nastavení a čtení popisků citlivosti ze souboru a jejich čtení. Tento rychlý start "How to - Downgrade/Remove a label that needs a justification C#" (Postup – Downgrade/Remove a label, který potřebuje odůvodnění jazyka C#), vychází z předchozího.
  • Volitelně: Projděte si koncepty obslužných rutin souborů v konceptech sady MIP SDK.

Přidání logiky pro nastavení nižšího popisku na chráněný soubor

Přidejte logiku pro nastavení popisku citlivosti v souboru pomocí objektu obslužné rutiny Souboru.

  1. Otevřete řešení sady Visual Studio, které jste vytvořili v předchozím rychlém startu: Nastavení nebo získání popisků citlivosti (C#).

  2. Pomocí Průzkumník řešení otevřete soubor .cs v projektu, který obsahuje implementaci Main() metody. Ve výchozím nastavení se použije stejný název jako projekt, který obsahuje, který jste zadali při vytváření projektu.

  3. Aktualizujte hodnotu z předchozího rychlého startu <label-id> na popisek citlivosti, který vyžaduje odůvodnění snížení. Během tohoto rychlého startu nejprve nastavíme tento popisek a pak ho v dalších krocích zkusíme snížit pomocí fragmentů kódu.

  4. Na konec Main() textu níže Console.ReadKey() a nad blok vypnutí aplikace (kde jste skončili v předchozím rychlém startu) vložte následující kód.

    //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. Na konci main() vyhledejte blok vypnutí aplikace vytvořený v předchozím rychlém startu a přidejte následující řádky obslužné rutiny k uvolnění prostředků.

    downgradeHandler = null;
    commitHandler = null;
    
  6. Zástupné hodnoty ve zdrojovém kódu nahraďte následujícími hodnotami:

    Zástupný symbol Hodnota
    <downgraded-labled-output> Cesta k výstupnímu souboru, do kterého chcete uložit upravený soubor.
    <new-label-id> ID šablony zkopírované z výstupu konzoly v předchozím rychlém startu, například: bb7ed207-046a-4caf-9826-647cff56b990. Ujistěte se, že má nižší citlivost než popisek dříve chráněného souboru.

Sestavení a otestování aplikace

Sestavte a otestujte klientskou aplikaci.

  1. K sestavení klientské aplikace použijte kombinaci kláves CTRL-SHIFT-B (řešení sestavení). Pokud nemáte žádné chyby sestavení, spusťte aplikaci pomocí klávesy F5 (spustit ladění).

  2. Pokud se projekt sestaví a úspěšně spustí, může aplikace při každém volání vaší AcquireToken() metody vyzvat k ověření pomocí knihovny Microsoft Authentication Library (MSAL). Pokud přihlašovací údaje uložené v mezipaměti už existují, nebudete vyzváni k přihlášení a zobrazí se seznam popisků a informace o použitém popisku a upraveném souboru.

  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.

Upozorňujeme, že podobný přístup platí i pro DeleteLabel() operace, pokud popisek odstraněný ze souboru vyžaduje odůvodnění podle zásad popisku.DeleteLabel() funkce vyvolá JustificationRequiredException výjimku a IsDowngradeJustified příznak by měl být nastaven na true při zpracování výjimek před odstraněním popisku.