Microsoft Information Protection File SDK — uzasadnienie akcji obniżania etykiety poufności w pliku (C#)
Ten przewodnik Szybki start dotyczy obsługi operacji etykiety na starszą dół, gdy zasady etykiet 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:
- Ukończ szybki start: ustawianie/pobieranie etykiet poufności (C#), które tworzy początkowe rozwiązanie programu Visual Studio, aby wyświetlić listę etykiet poufności organizacji oraz ustawić i odczytać etykiety poufności do/z pliku. Ten przewodnik Szybki start "Instrukcje — obniżanie poziomu/usuwanie etykiety wymagającej uzasadnienia języka C#" opiera się na poprzedniej.
- Opcjonalnie: Zapoznaj się z pojęciami dotyczącymi procedur obsługi plików w pojęciach dotyczących zestawu MIP SDK.
Dodawanie logiki w celu ustawienia niższej etykiety na chroniony plik
Dodaj logikę, aby ustawić etykietę poufności w pliku przy użyciu obiektu programu obsługi plików.
Otwórz rozwiązanie programu Visual Studio utworzone w poprzednim przewodniku "Szybki start: ustawianie/uzyskiwanie etykiet poufności(C#).
Za pomocą Eksplorator rozwiązań otwórz plik cs w projekcie zawierający implementację
Main()
metody . Domyślnie ma taką samą nazwę jak projekt zawierający go, który został określony podczas tworzenia projektu.<label-id>
Zaktualizuj wartość z poprzedniego przewodnika Szybki start do etykiety poufności, która wymaga uzasadnienia obniżenia. Podczas tego przebiegu przewodnika Szybki start najpierw ustawimy tę etykietę, a następnie spróbujemy obniżyć ją za pomocą fragmentów kodu w dalszych krokach.Na końcu treści poniżej
Console.ReadKey()
i powyżej bloku zamykania aplikacji (po lewej stronie w poprzednim przewodnikuMain()
Szybki start) 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();
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;
Zastąp wartości symboli zastępczych w kodzie źródłowym przy użyciu następujących wartości:
Symbol zastępczy Wartość <downgraded-labled-output> Ścieżka pliku wyjściowego, do którego chcesz zapisać zmodyfikowany plik. <new-label-id> Identyfikator szablonu skopiowany z danych wyjściowych konsoli w poprzednim przewodniku Szybki start, 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ą.
Użyj klawiszy CTRL-SHIFT-B (rozwiązanie kompilacji), aby skompilować aplikację kliencą. Jeśli nie masz błędów kompilacji, użyj klawisza F5 (Rozpocznij debugowanie), aby uruchomić aplikację.
Jeśli projekt kompiluje i uruchamia się pomyślnie, aplikacja może monitować o uwierzytelnienie przy użyciu 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 się i wyświetlenie listy 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 DeleteLabel()
również operacji, jeśli etykieta usunięta z pliku wymaga uzasadnienia zgodnie z zasadami etykiet.DeleteLabel()
Funkcja zgłasza wyjątek i IsDowngradeJustified
flagę JustificationRequiredException
powinna być ustawiona na wartość true w obsłudze wyjątków przed pomyślnym usunięciem etykiety.