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

Tento rychlý průvodce se zabývá zpracováním operace degradování, když zásady pro popisky vyžadují odůvodnění. Použijeme rozhraní IFileHandler pro změnu popisků souboru. Další podrobnosti najdete v referenčních informacích k rozhraní API.

Požadavky

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

  • Dokončete Quickstart: Nastavení/získání popisků citlivosti (C#), který vytvoří úvodní řešení pro Visual Studio k výpisu popisků citlivosti organizace a k nastavení a čtení popisků citlivosti ze souboru. 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řidejte logiku pro nastavení nižšího štítku pro chráněný soubor.

Přidejte logiku pro nastavení štítku citlivosti na souboru pomocí objektu pro zpracování souborů.

  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. V Průzkumníku řešení otevřete soubor .cs v projektu, který obsahuje implementaci Main() metody. V rámci výchozího nastavení se použije stejný název jako projekt, který ho obsahuje a 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 těla Main(), pod Console.ReadKey() a nad blokem 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ý text Hodnota
    <degradovaný-označený-výstup> 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 stiskněte kombinaci kláves CTRL +SHIFT-B (Build Solution). 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 při zpracování výjimek nastaven na true, aby bylo možné úspěšně odstranit popisek.