Microsoft 資訊保護 SDK - 設定檔與引擎物件概念

個人資料

這個 MipContext 類別儲存了 SDK 專屬的設定。 該設定檔是 MIP SDK 中所有 MIP 標籤及保護專用操作的根類別。 使用三個 API 集合中的任何一個之前,用戶端應用程式必須建立配置檔。 設定檔或 新增 到設定檔的其他物件會執行未來的操作。 每個程序只使用一個設定檔物件。 創造多個可能會產生意想不到的行為。

MIP SDK 有三種類型的配置檔:

使用者應用程式所使用的 API 決定要使用哪個設定檔類別。

設定檔本身提供下列功能:

  • 狀態儲存:定義是否將狀態載入記憶體或持久化至磁碟,以及若狀態持續存在磁碟是否加密。
  • 同意授權:定義用於同意操作的 。mip::ConsentDelegate
  • 檔案設定檔觀察器:定義 mip::FileProfile::Observer 用於設定檔操作的非同步回調實作。

個人資料設定

  • MipContext MipContext:初始化以儲存應用程式資訊、狀態路徑等的物件。
  • CacheStorageType:定義如何儲存狀態:在記憶體、磁碟或磁碟上,以及加密。
  • consentDelegate:類別 mip::ConsentDelegate的共享指標。
  • observer:配置文件 Observer 實作的共享指標(在 PolicyProfileProtectionProfileFileProfile中)。
  • applicationInfo:一個mip::ApplicationInfo物件。 關於使用該 SDK 且符合你 Microsoft Entra 應用程式註冊 ID 與名稱的應用程式資訊。

引擎

檔案、政策與保護 SDK 引擎提供特定身份執行操作的介面。 為每位登入應用程式的使用者或服務主體,在設定檔物件中新增一個引擎。 你可以透過使用 mip::ProtectionSettings 檔案或保護處理器來執行委派操作。 欲了解更多資訊,請參閱 FileHandler 概念中的保護設定章節

SDK 有三個引擎類別,分別對應每個 API。 下列清單顯示引擎類別和一些與每個函式相關聯的函式:

  • mip::ProtectionEngine
  • mip::PolicyEngine
    • ListSensitivityLabels():取得已載入引擎的標籤清單。
    • GetSensitivityLabel():從現有內容取得標籤。
    • ComputeActions():提供標籤標識碼和選擇性元數據,會傳回特定專案應該發生的動作清單。
  • mip::FileEngine
    • ListSensitivityLabels():取得已載入引擎的標籤清單。
    • CreateFileHandler():為特定檔案或數據流建立 mip::FileHandler

要建立引擎,請傳入一個特定的引擎設定物件,該物件包含該引擎類型的設定。 settings 物件允許開發者指定引擎識別碼、 mip::AuthDelegate 實作、地點、自訂設定及其他 API 專屬細節。

引擎狀態

引擎可以有兩種狀態之一:

  • CREATED:完成表示在呼叫必要的後端服務後,SDK 已擁有足夠的本機狀態資訊。
  • LOADED:SDK 已建置必要的數據結構,讓引擎能夠運作。

必須先建立並載入引擎,才能執行任何作業。 類別 Profile 會公開幾個引擎管理方法: AddEngineAsyncDeleteEngineAsyncUnloadEngineAsync

下表描述可能的引擎狀態,以及哪些方法可以變更該狀態:

引擎狀態 NONE CREATED 已載入
NONE AddEngineAsync
CREATED DeleteEngineAsync AddEngineAsync
已載入 DeleteEngineAsync UnloadEngineAsync

引擎標識碼

每個引擎都有一個獨特的識別碼,用於 id所有引擎管理作業。 該應用程式可提供 id。 如果應用程式沒有提供,SDK 可以自行產生。 其他所有引擎屬性,例如身份資訊中的電子郵件地址,都是 SDK 的不透明有效載荷。 SDK 不會執行邏輯來保持其他屬性唯一或強制其他約束。

重要

使用使用者獨一無二的引擎 ID,每次使用者執行 SDK 操作時都使用該引擎 ID。 如果你沒有為使用者或服務提供現有且獨特的引擎 ID,SDK 會額外提供服務往返。 這些往返服務可能會導致效能下降和降頻。

// Create the FileEngineSettings object
FileEngine::Settings engineSettings(mip::Identity(mUsername), // This will be the engine ID. UPN, email address, or other unique user identifiers are recommended. 
													          mAuthDelegate,            // authDelegate implementation 
													          "",                       // ClientData
													          "en-US",                  // Client Locale
                                    false);                   // Load Sensitive Information Types

引擎管理方法

SDK 包含三種引擎管理方法:AddEngineAsync、、 DeleteEngineAsyncUnloadEngineAsync和 。

AddEngineAsync

這個方法會載入現有的引擎,如果在本機狀態中不存在,則建立一個引擎。

如果應用程式未提供idFileEngineSettingsAddEngineAsync則會產生新的id。 然後,它會檢查具有的 id 引擎是否存在於本機記憶體快取中。 如果如此,它會載入該引擎。 如果引擎不存在於本機快取中,則會呼叫必要的 API 和後端服務來建立新的引擎。

在這兩種情況下,如果方法成功,引擎就會被載入並可供使用。

DeleteEngineAsync

使用指定的 id刪除引擎。 引擎的所有追蹤都會從本機快取中移除。

UnloadEngineAsync

使用指定的 id,卸載引擎在記憶體中的數據結構。 這個引擎的本地狀態保持完整,你可以用 AddEngineAsync重新載入。

這個方法可讓應用程式藉由卸除不預期很快就會使用的引擎,來讓應用程式對記憶體使用量有條理。

下一步