Udostępnij przez


Microsoft Information Protection File SDK — uzasadnienie akcji obniżania etykiety poufności w pliku (C#)

Ten szybki start dotyczy obsługi operacji obniżenia etykiety, gdy zasady znaczników wymagają uzasadnienia. W tym miejscu użyjemy IFileHandler interfejsu do zmiany etykiet pliku. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją interfejsu API.

Wymagania wstępne

Jeśli jeszcze tego nie zrobiono, przed kontynuowaniem upewnij się, że zostały spełnione następujące wymagania wstępne:

Dodaj logikę, aby ustawić niższą etykietę na chroniony plik

Dodaj logikę, aby ustawić etykietę poufności w pliku przy użyciu obiektu programu obsługi plików.

  1. Otwórz rozwiązanie programu Visual Studio utworzone w poprzednim przewodniku "Szybki start: ustawianie/uzyskiwanie etykiet poufności(C#).

  2. Używając Solution Explorer, otwórz plik .cs w swoim projekcie, który zawiera implementację metody Main(). Domyślnie ma taką samą nazwę jak projekt zawierający go, który został określony podczas tworzenia projektu.

  3. Zaktualizuj wartość <label-id> z poprzedniego szybkiego startu do etykiety poufności, dla której obniżenie wymaga uzasadnienia. W trakcie tego szybkiego startu, najpierw ustawimy tę etykietę, a następnie spróbujemy zmienić jej położenie za pomocą fragmentów kodu w kolejnych krokach.

  4. Pod koniec sekcji Main() treści, poniżej Console.ReadKey() i powyżej bloku zamykania aplikacji (gdzie skończyłeś w poprzednim przewodniku Quickstart), wstaw następujący kod.

    //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 końcu sekcji Main() znajdź blok zamykania aplikacji utworzony w poprzednim przewodniku Szybki start i dodaj poniższe wiersze procedury obsługi, aby zwolnić zasoby.

    downgradeHandler = null;
    commitHandler = null;
    
  6. Zastąp wartości symboli zastępczych w kodzie źródłowym przy użyciu następujących wartości:

    Zastępczy element Wartość
    <obniżone oznakowane wyjście> Ścieżka pliku wyjściowego, do którego chcesz zapisać zmodyfikowany plik.
    <nowy-identyfikator-etykiety> Identyfikator szablonu skopiowany z danych wyjściowych konsoli w poprzednim przewodniku "Rozpocznij Szybko", na przykład: bb7ed207-046a-4caf-9826-647cff56b990. Upewnij się, że ma niższą czułość niż wcześniej chroniona etykieta pliku.

Kompilowanie i testowanie aplikacji

Skompiluj i przetestuj aplikację kliencą.

  1. Użyj CTRL-SHIFT-B (Kompiluj rozwiązanie) do skompilowania aplikacji klienckiej. Jeśli nie masz błędów kompilacji, użyj F5 (Rozpocznij debugowanie), aby uruchomić aplikację.

  2. Jeśli projekt buduje się i uruchamia się pomyślnie, aplikacja może monitować o uwierzytelnienie z użyciem biblioteki Microsoft Authentication Library (MSAL) za każdym razem, gdy zestaw SDK wywołuje metodę AcquireToken(). Jeśli buforowane poświadczenia już istnieją, nie zostanie wyświetlony monit o zalogowanie i zobaczysz listę etykiet, a następnie informacje o zastosowanej etykiecie i zmodyfikowanym pliku.

  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.

Należy pamiętać, że podobne podejście dotyczy również tej DeleteLabel() operacji, jeśli etykieta usunięta z pliku wymaga uzasadnienia zgodnie z polityką etykiet. DeleteLabel() Funkcja zgłasza JustificationRequiredException wyjątek i flaga IsDowngradeJustified powinna być ustawiona na wartość true w obsłudze wyjątków przed pomyślnym usunięciem etykiety.