Fichier SDK Microsoft Information Protection - Justification d’action pour abaisser une étiquette de confidentialité sur un fichier (C#)
Ce démarrage rapide couvre la façon d’abaisser une étiquette lorsque la stratégie d’étiquette nécessite une justification. Ici, nous utiliserons l’interface IFileHandler
pour modifier les étiquettes d’un fichier. Pour plus d’informations, consultez la référence de l’API.
Prérequis
Si ce n’est déjà fait, veillez à satisfaire les prérequis suivants avant de poursuivre :
- Suivez Démarrage rapide : Définir/obtenir des étiquettes de confidentialité (C#), pour créer une solution Visual Studio de démarrage visant à lister les étiquettes de confidentialité d’une organisation, ainsi qu’à définir et lire les étiquettes de confidentialité vers/depuis un fichier. Ce démarrage rapide « Guide pratique - Abaisser/supprimer une étiquette qui nécessite une justification C# » est conçu à partir du précédent.
- Facultatif : passez en revue les Concepts de gestionnaires de fichiers dans les concepts du SDK MIP.
Ajouter une logique pour définir une étiquette inférieure sur un fichier protégé
Ajouter une logique pour définir une étiquette de confidentialité sur un fichier avec l’objet de gestionnaire de fichiers.
Ouvrez la solution Visual Studio que vous avez créée dans l’article précédent, « Démarrage rapide : Définir/obtenir des étiquettes de confidentialité (C#) ».
Dans l’Explorateur de solutions, ouvrez le fichier .cs dans votre projet qui contient l’implémentation de la méthode
Main()
. Par défaut, il a le même nom que le projet qui le contient et que vous avez spécifié lors de la création du projet.mettez à jour la valeur
<label-id>
du démarrage rapide précédent vers une étiquette de sensibilité qui nécessite une justification pour la réduction. Au cours de ce démarrage rapide, nous allons d’abord définir cette étiquette, puis essayer de la réduire par le biais d’extraits de code.Vers la fin du corps
Main()
, en dessous deConsole.ReadKey()
et au-dessus du bloc d’arrêt d’application (là où vous vous êtes arrêté dans le précédent démarrage rapide), insérez le code suivant.//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();
Vers la fin de Main(), recherchez le bloc d’arrêt d’application créé dans le précédent démarrage rapide et ajoutez les lignes de gestionnaire ci-dessous pour libérer les ressources.
downgradeHandler = null; commitHandler = null;
Remplacez les valeurs d’espace réservé dans le code source par les valeurs suivantes :
Paramètre substituable Valeur <downgraded-labled-output> Chemin d’accès du fichier de sortie où le fichier modifié sera enregistré. <new-label-id> ID de modèle, copié à partir de la sortie de la console dans le démarrage rapide précédent, par exemple : bb7ed207-046a-4caf-9826-647cff56b990
. Assurez-vous qu’elle présente une sensibilité inférieure à celle de l’étiquette de fichier précédemment protégée.
Concevoir et tester l’application
Générez et testez votre application cliente.
Utilisez CTRL-MAJ-B (Créer une solution) pour créer votre application cliente. Si vous n’avez aucune erreur de build, utilisez F5 (Démarrer le débogage) pour exécuter votre application.
Si votre projet est généré et exécuté correctement, l’application peut demander une authentification via Microsoft Authentication Library (MSAL) chaque fois que le kit de développement logiciel (SDK) appelle votre méthode
AcquireToken()
. Si des informations d’identification mises en cache existent déjà, vous n’êtes pas invité à vous connecter pour voir la liste des étiquettes, suivie des informations sur l’étiquette appliquée et le fichier modifié.
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.
Notez que, si la suppression de l’étiquette d’un fichier nécessite une justification en fonction de la stratégie d’étiquette, une approche similaire s’applique à l’opération DeleteLabel()
.La fonction DeleteLabel()
soulève une exception JustificationRequiredException
et l’indicateur IsDowngradeJustified
doit être défini sur True dans la gestion des exceptions avant de supprimer correctement une étiquette.