共用方式為


重新發佈 (C++)

概觀

此概觀著重於在 MIP SDK 中重新發佈是應用程式必須允許使用者編輯檔案的特定案例,但想要維護擁有者、許可權、內容密鑰等原始 發佈授權 資訊。

模式看起來可能像這樣:

  • 用戶開啟受保護的檔進行編輯。
  • 如果使用者已獲授與適當的許可權,則只能編輯檔案。
  • 使用者編輯,然後儲存檔。

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

  • mip::FileHandler建立指向目標檔案的 。
  • mip::ProtectionHandler儲存 由 的 方法公開的 mip::FileHandlerGetProtection()
  • 藉由呼叫 AccessCheck() 方法來檢查使用者是否具有EDIT許可權。
  • 使用 mip::FileHandlerGetDecryptedTemporaryFileAsync()GetDecryptedTemporaryStreamAsync() 取得暫時解密的輸出。
  • 編輯暫存盤案或串流內容並儲存。
  • 建立 mip::FileHandler 指向暫存盤的新實例,並使用 SetProtection() 方法,提供儲存 mip::ProtectionHandler 為 參數的 。
  • 認可變更。

mip::ProtectionHandler使用源檔中的 ,將會在編輯的檔上維護擁有者、內容識別碼、內容密鑰等。 此重新發佈案例需要應用程序維護原始 mip::ProtectionHandler的參考。

實作

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

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

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

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

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

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

mip::ProtectionHandler 會公開函式來加密和解密受保護的數據流和緩衝區、執行存取檢查、取得發佈授權,以及從受保護的資訊取得屬性。 mip::ProtectionHandler 對像是藉由提供 ProtectionDescriptor 或串行化發行授權來建構。 在此使用案例中,我們會隱含地使用發佈授權作為發佈授權,當解密已保護的內容,或保護已經建構授權的內容時。

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

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

如需各種用戶權力的進一步詳細數據,請參閱 Azure 資訊保護 的用戶權力。

重要

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

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

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

後續步驟