個人資料
這個 MipContext 類別儲存了 SDK 專屬的設定。 該設定檔是 MIP SDK 中所有 MIP 標籤及保護專用操作的根類別。 使用三個 API 集合中的任何一個之前,用戶端應用程式必須建立配置檔。 設定檔或 新增 到設定檔的其他物件會執行未來的操作。 每個程序只使用一個設定檔物件。 創造多個可能會產生意想不到的行為。
MIP SDK 有三種類型的配置檔:
-
PolicyProfile:MIP 政策 SDK 的設定檔類別。 -
ProtectionProfile:MIP 保護 SDK 的設定檔類別。 -
FileProfile:MIP 檔案 SDK 的設定檔類別。
使用者應用程式所使用的 API 決定要使用哪個設定檔類別。
設定檔本身提供下列功能:
- 狀態儲存:定義是否將狀態載入記憶體或持久化至磁碟,以及若狀態持續存在磁碟是否加密。
-
同意授權:定義用於同意操作的 。
mip::ConsentDelegate -
檔案設定檔觀察器:定義
mip::FileProfile::Observer用於設定檔操作的非同步回調實作。
個人資料設定
-
MipContextMipContext:初始化以儲存應用程式資訊、狀態路徑等的物件。 -
CacheStorageType:定義如何儲存狀態:在記憶體、磁碟或磁碟上,以及加密。 -
consentDelegate:類別mip::ConsentDelegate的共享指標。 -
observer:配置文件Observer實作的共享指標(在PolicyProfile、ProtectionProfile和FileProfile中)。 -
applicationInfo:一個mip::ApplicationInfo物件。 關於使用該 SDK 且符合你 Microsoft Entra 應用程式註冊 ID 與名稱的應用程式資訊。
引擎
檔案、政策與保護 SDK 引擎提供特定身份執行操作的介面。 為每位登入應用程式的使用者或服務主體,在設定檔物件中新增一個引擎。 你可以透過使用 mip::ProtectionSettings 檔案或保護處理器來執行委派操作。 欲了解更多資訊,請參閱 FileHandler 概念中的保護設定章節。
SDK 有三個引擎類別,分別對應每個 API。 下列清單顯示引擎類別和一些與每個函式相關聯的函式:
mip::ProtectionEnginemip::PolicyEngine-
ListSensitivityLabels():取得已載入引擎的標籤清單。 -
GetSensitivityLabel():從現有內容取得標籤。 -
ComputeActions():提供標籤標識碼和選擇性元數據,會傳回特定專案應該發生的動作清單。
-
mip::FileEngine-
ListSensitivityLabels():取得已載入引擎的標籤清單。 -
CreateFileHandler():為特定檔案或數據流建立mip::FileHandler。
-
要建立引擎,請傳入一個特定的引擎設定物件,該物件包含該引擎類型的設定。 settings 物件允許開發者指定引擎識別碼、 mip::AuthDelegate 實作、地點、自訂設定及其他 API 專屬細節。
引擎狀態
引擎可以有兩種狀態之一:
-
CREATED:完成表示在呼叫必要的後端服務後,SDK 已擁有足夠的本機狀態資訊。 -
LOADED:SDK 已建置必要的數據結構,讓引擎能夠運作。
必須先建立並載入引擎,才能執行任何作業。 類別 Profile 會公開幾個引擎管理方法: AddEngineAsync、 DeleteEngineAsync和 UnloadEngineAsync。
下表描述可能的引擎狀態,以及哪些方法可以變更該狀態:
| 引擎狀態 | 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
這個方法會載入現有的引擎,如果在本機狀態中不存在,則建立一個引擎。
如果應用程式未提供idFileEngineSettings,AddEngineAsync則會產生新的id。 然後,它會檢查具有的 id 引擎是否存在於本機記憶體快取中。 如果如此,它會載入該引擎。 如果引擎不存在於本機快取中,則會呼叫必要的 API 和後端服務來建立新的引擎。
在這兩種情況下,如果方法成功,引擎就會被載入並可供使用。
DeleteEngineAsync
使用指定的 id刪除引擎。 引擎的所有追蹤都會從本機快取中移除。
UnloadEngineAsync
使用指定的 id,卸載引擎在記憶體中的數據結構。 這個引擎的本地狀態保持完整,你可以用 AddEngineAsync重新載入。
這個方法可讓應用程式藉由卸除不預期很快就會使用的引擎,來讓應用程式對記憶體使用量有條理。