共用方式為


重新發佈 (C++)

本概觀著重於在 MIP SDK 中重新發佈。 當應用程式需要允許使用者編輯檔案,但必須保留有關擁有者、權限、內容金鑰等的原始 發佈授權 資訊時,需要重新發佈。

模式看起來可能像這樣:

  • 用戶開啟受保護的檔進行編輯。
  • 只有在使用者具有適當權限的情況下,才必須允許使用者編輯檔案。
  • 使用者編輯,然後儲存檔。

要完成這項工作的 MIP SDK 虛擬程式代碼可能如下所示:

  • mip::FileHandler建立指向目標檔案的 。
  • 儲存mip::ProtectionHandlermip::FileHandler方法所公開的GetProtection()
  • 請透過呼叫 方法來檢查使用者是否具有 AccessCheck() 權限。
  • 使用 mip::FileHandlerGetDecryptedTemporaryFileAsync()GetDecryptedTemporaryStreamAsync() 取得暫時解密的輸出。
  • 編輯暫存盤案或串流內容並儲存。
  • 建立一個指向暫存檔的新 mip::FileHandler 實例,然後使用 SetProtection() 方法,並將儲存的 mip::ProtectionHandler 作為參數提供。
  • 認可變更。

使用原始檔案中的 , mip::ProtectionHandler 擁有者、內容 ID 和內容金鑰會保留在已編輯的文件上。 此重新發佈案例需要應用程式保留原始 mip::ProtectionHandler的參考。

實施

如先前所述,類別 mip::FileHandler 會公開讀取、寫入及移除標籤和保護資訊的方法。 如需查看支援操作的完整清單,請參閱mip::FileHandler的參考資料。

此案例使用 下列方法 mip::FileHandler

  • GetProtection()
  • CommitAsync()
  • GetDecryptedTemporaryFileAsync()
  • SetProtection()

此案例也會使用 mip::ProtectionHandler,其會公開函式來加密和解密受保護的數據流和緩衝區、執行存取檢查、取得發佈授權,以及從受保護的資訊取得屬性。 方法 AccessCheck() 將用來驗證使用者是否有權編輯檔案。

若要順利完成此重新保護案例,請檢閱 [後續步驟] 下的 [快速入門],並確定應用程式會建置並成功列出標籤。

從檔案建立保護處理程式並解密檔案

mip::ProtectionHandler 會公開函式來加密和解密受保護的數據流和緩衝區、執行存取檢查、取得發佈授權,以及從受保護的資訊取得屬性。 mip::ProtectionHandler 物件是藉由提供 ProtectionDescriptor 或序列化發行許可證來建構。 在此使用案例中,當解密已受保護的內容或保護已建構授權的內容時,會使用發佈授權。

mip::FileHandler公開名為 的方法,該mip::ProtectionHandler方法GetProtection()會從與 .mip::FileHandler mip::ProtectionHandler一旦擷取物件,就可以用來驗證用戶的檔案存取層級,解密檔案,稍後在編輯檔案之後加密檔案。

mip::ProtectionHandler AccessCheck()的 用來驗證使用者具有檔案的特定許可權,並根據結果傳回布爾回應。 例如,若要確認使用者有權編輯,請呼叫傳入值 「EDIT」 的方法。 如果結果為 true,允許使用者編輯檔案。 一旦驗證編輯權限,請使用 mip::FileHandlerGetDecryptedTemporaryFileAsync() 來擷取暫時解密的檔案。

如需詳細資訊,請參閱 使用敏感度標籤來套用加密來限制內容的存取

重要

存取檢查和強制執行完全由應用程式開發人員決定。 具有 VIEW 許可權的用戶能夠解密受保護的資訊。 應用程式需要驗證授與使用者的一組許可權,並透過資訊保護控制來強制執行這些許可權,例如防止複製、編輯或擷取螢幕擷取畫面。 未能正確實施保護措施可能會導致敏感性資訊暴露。

套用保護來儲存和發佈編輯的檔案

解密檔案後,可以編輯檔案。 編輯作業完成後,即可認可變更。 使用暫存檔案建立物件 IFileHandler ,以處理已認可的檔案。 然後,可以使用從源檔擷取的對象來保護 IProtectionHandler 暫存盤。

後續步驟