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:
- Completare Avvio rapido: Impostare/ottenere etichette di riservatezza (C#) che compila una soluzione visual Studio iniziale per elencare le etichette di riservatezza di un'organizzazione e per impostare e leggere le etichette di riservatezza da e verso un file. Questa guida introduttiva "How to - Downgrade/Remove a label that needs a justification C#" (Procedura - Downgrade/Rimozione di un'etichetta che richiede una giustificazione C#) si basa su quella precedente.
- Facoltativamente: esaminare i concetti relativi ai gestori di file nei concetti di MIP SDK.
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.
Aprire la soluzione di Visual Studio creata nella precedente "Guida introduttiva: Impostare/ottenere etichette di riservatezza(C#).
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.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.Verso la fine del corpo, sotto
Console.ReadKey()
e sopra ilMain()
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();
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;
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.
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.
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.