Microsoft Information Protection File SDK - Giustificazione dell'azione per ridurre un'etichetta di riservatezza in un file (C#)

Questo argomento di avvio rapido illustra la gestione di un'operazione di downgrade dell'etichetta quando i criteri di etichetta richiedono una giustificazione. In questo caso si userà l'interfaccia IFileHandler per modificare le etichette di un file. Per altri dettagli, vedere Informazioni di riferimento sulle API.

Prerequisiti

Se non è già stato fatto, assicurarsi di completare i prerequisiti seguenti prima di continuare:

Aggiungere la logica per impostare un'etichetta inferiore su un file protetto

Aggiungere la logica per impostare un'etichetta di riservatezza in un file usando l'oggetto Gestore file.

  1. Aprire la soluzione di Visual Studio creata nella precedente "Guida introduttiva: Impostare/ottenere etichette di riservatezza(C#).

  2. Usando Esplora soluzioni, aprire il file con estensione cs nel progetto che contiene l'implementazione del Main() metodo . Per impostazione predefinita, il nome del progetto che lo contiene è stato specificato durante la creazione del progetto.

  3. Aggiornare il valore dell'argomento <label-id> di avvio rapido precedente a un'etichetta di riservatezza che richiede una giustificazione per l'abbassamento. Durante questa esecuzione di avvio rapido, questa etichetta verrà prima impostata e quindi si proverà a ridurla tramite frammenti di codice in altri passaggi.

  4. Verso la fine del corpo, sotto Console.ReadKey() e sopra il Main() blocco di arresto dell'applicazione (dove è stata interrotta la guida introduttiva precedente), inserire il codice seguente.

    //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. Verso la fine di Main() trovare il blocco di arresto dell'applicazione creato nella guida introduttiva precedente e aggiungere le righe del gestore seguenti per rilasciare le risorse.

    downgradeHandler = null;
    commitHandler = null;
    
  6. Sostituire i valori segnaposto nel codice sorgente usando i valori seguenti:

    Segnaposto Valore
    <downgraded-labled-output> Percorso del file di output in cui salvare il file modificato.
    <new-label-id> ID modello copiato dall'output della console nell'argomento di avvio rapido precedente, ad esempio: bb7ed207-046a-4caf-9826-647cff56b990. Assicurarsi che abbia una sensibilità inferiore rispetto all'etichetta di file protetta in precedenza.

Compilare e testare l'applicazione

Compilare e testare l'applicazione client.

  1. Usare CTRL-MAIUSC-B (Compila soluzione) per compilare l'applicazione client. Se non sono presenti errori di compilazione, usare F5 (Avvia debug) per eseguire l'applicazione.

  2. Se il progetto viene compilato ed eseguito correttamente, l'applicazione potrebbe richiedere l'autenticazione usando Microsoft Authentication Library (MSAL) ogni volta che l'SDK chiama il AcquireToken() metodo. Se le credenziali memorizzate nella cache esistono già, non verrà richiesto di accedere e visualizzare l'elenco delle etichette, seguite dalle informazioni sull'etichetta applicata e sul file modificato.

  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.

Si noti che un approccio simile si applica anche all'operazione, nel caso in cui l'etichetta eliminata da un file richieda una giustificazione in base ai DeleteLabel() criteri di etichetta.DeleteLabel()la funzione genera un'eccezione e IsDowngradeJustified un JustificationRequiredException flag devono essere impostati su true nella gestione delle eccezioni prima di eliminare correttamente un'etichetta.