Microsoft 資訊保護檔案 SDK - 降低檔案上敏感度標籤的動作理由 (C#)
本快速入門說明當標籤原則需要理由時,處理降級標籤作業。在這裡,我們將使用 IFileHandler
介面來變更檔案的標籤。 如需進一步的詳細資料,請參閱 API 參考 。
必要條件
如果您尚未完成,請務必先完成下列必要條件,再繼續進行:
- 完成 快速入門:設定/取得敏感度標籤(C#) 以建置入門 Visual Studio 解決方案,以列出組織的敏感度標籤,以及設定和讀取檔案中的敏感度標籤。 本「如何 - 降級/移除需要理由 C# 的標籤」快速入門以上一個快速入門為基礎。
- 選擇性:檢閱 MIP SDK 概念中的檔案處理常式概 念。
新增邏輯以將較低標籤設定為受保護的檔案
使用 File 處理常式物件,新增邏輯以在檔案上設定敏感度標籤。
開啟您在上一個「快速入門:設定/取得敏感度標籤(C#) 中建立的 Visual Studio 解決方案。
使用 方案總管,在您的專案中開啟包含 方法實作的
Main()
.cs 檔案。 它預設為與您在專案建立期間指定的專案相同名稱。將
<label-id>
上一個快速入門中的值更新為敏感度標籤,這需要降低的理由。 在本快速入門執行期間,我們會先設定此標籤,然後嘗試在進一步的步驟中透過程式碼片段將其降低。在本文結尾
Main()
處,下方Console.ReadKey()
和上方的應用程式關機區塊(您在上一個快速入門中離開的位置),插入下列程式碼。//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();
在 Main() 結尾,尋找在上一個快速入門中建立的應用程式關機區塊,並新增下列處理常式行來釋放資源。
downgradeHandler = null; commitHandler = null;
使用下列值取代原始程式碼中的預留位置值:
預留位置 值 <downgraded-labled-output> 您想要儲存修改檔案的輸出檔案路徑。 <new-label-id> 從上一個快速入門中的主控台輸出複製的範本識別碼,例如: bb7ed207-046a-4caf-9826-647cff56b990
。 請確定其敏感度低於先前受保護的檔案卷標。
建置及測試應用程式
建置及測試用戶端應用程式。
使用 CTRL-SHIFT-B ( 建置解決方案 )來建置用戶端應用程式。 如果您沒有建置錯誤,請使用 F5 ( 開始偵錯 ) 來執行應用程式。
如果您的專案建置並成功執行,則每次 SDK 呼叫方法
AcquireToken()
時,應用程式 可能會 提示使用 Microsoft 驗證程式庫 (MSAL) 進行驗證。 如果快取的認證已經存在,系統將不會提示您登入並查看標籤清單,後面接著已套用標籤和已修改檔案的資訊。
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.
請注意,類似的方法也適用于 DeleteLabel()
作業,以防從檔案中刪除標籤需要依據標籤原則的理由。DeleteLabel()
函式會在 JustificationRequiredException
例外狀況處理中擲回例外狀況,且 IsDowngradeJustified
旗標應該設定為 true,然後再成功刪除標籤。