Partager via


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 :

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.

  1. 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#) ».

  2. 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.

  3. 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.

  4. Vers la fin du corps Main(), en dessous de Console.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();
    
    
  5. 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;
    
  6. 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.

  1. 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.

  2. 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.