共用方式為


Microsoft 資訊保護檔案 SDK - 降低檔案上敏感度標籤的動作理由 (C#)

本快速入門說明當標籤原則需要理由時,處理降級標籤作業。在這裡,我們將使用 IFileHandler 介面來變更檔案的標籤。 如需進一步的詳細資料,請參閱 API 參考

必要條件

如果您尚未完成,請務必先完成下列必要條件,再繼續進行:

新增邏輯以將較低標籤設定為受保護的檔案

使用 File 處理常式物件,新增邏輯以在檔案上設定敏感度標籤。

  1. 開啟您在上一個「快速入門:設定/取得敏感度標籤(C#) 中建立的 Visual Studio 解決方案。

  2. 使用 方案總管,在您的專案中開啟包含 方法實作的 Main() .cs 檔案。 它預設為與您在專案建立期間指定的專案相同名稱。

  3. <label-id> 上一個快速入門中的值更新為敏感度標籤,這需要降低的理由。 在本快速入門執行期間,我們會先設定此標籤,然後嘗試在進一步的步驟中透過程式碼片段將其降低。

  4. 在本文結尾 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();
    
    
  5. 在 Main() 結尾,尋找在上一個快速入門中建立的應用程式關機區塊,並新增下列處理常式行來釋放資源。

    downgradeHandler = null;
    commitHandler = null;
    
  6. 使用下列值取代原始程式碼中的預留位置值:

    預留位置
    <downgraded-labled-output> 您想要儲存修改檔案的輸出檔案路徑。
    <new-label-id> 從上一個快速入門中的主控台輸出複製的範本識別碼,例如: bb7ed207-046a-4caf-9826-647cff56b990 。 請確定其敏感度低於先前受保護的檔案卷標。

建置及測試應用程式

建置及測試用戶端應用程式。

  1. 使用 CTRL-SHIFT-B ( 建置解決方案 )來建置用戶端應用程式。 如果您沒有建置錯誤,請使用 F5 ( 開始偵錯 ) 來執行應用程式。

  2. 如果您的專案建置並成功執行,則每次 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,然後再成功刪除標籤。