MIP SDK 支援電子郵件訊息的解密和加密。 SDK 支援由 Outlook 或 Exchange 產生的 .msg 檔案,和 .rpmsg 檔案,雖然支援的方式略有不同。
備註
從 MIP SDK 1.17 開始,支援.eml檔案。 根據容器格式,處理類似於應用於標籤/保護場景的 .msg 和檢查場景的 .rpmsg。
此案例的常見使用案例包括:
- 為了資料外洩防護(DLP)檢查,解密郵件和附件。
- 直接從企業營運應用程式發佈受保護的訊息
- 解密、修改及重新保護傳輸中的訊息。
- 將標籤套用至 DLP 或郵件閘道服務的電子郵件。
MSG 檔案支援聲明
MIP SDK 支援 MSG 檔案的保護應用程式和移除。 由於多年來格式中存在多種編碼類型和變數,所以無法保證 MIP SDK 可以移除所有 MSG 檔案的保護。 下一節說明各種來源 MSG 檔案的支援性。
- 完全支援從受 MIP SDK 保護的 MSG 檔案移除保護。
- 完全支援從目前支援的 Outlook 用戶端版本所建立的 MSG 檔案移除保護。
- 對於由不再支援的 Outlook 用戶端版本所建立的 MSG 檔案,其移除保護僅在盡力而為的基礎上提供支援。
- MSG 檔案的重新保護無法使用受保護標籤。 用戶必須先取消保護並明確移除受保護的標籤,再使用另一個標籤再次保護檔案。
MSG 檔案的標籤
MIP SDK 支援在 MSG 檔案上讀取和寫入標籤。 子項目不會繼承標籤,但會繼承保護設定。 如需詳細資訊,請參閱 檔案 SDK 中的.msg 檔案的標籤和保護作業。
檔案 SDK 中.msg檔案的標籤和保護作業
檔案 SDK 支援.msg檔案的標籤和保護作業,方式與任何其他檔案類型相同,不同之處在於 SDK 需要應用程式來啟用 MSG 功能旗標。
如先前所述,FileEngine的具現化需要設定物件FileEngineSettings。
FileEngineSettings 可用來傳入自定義設定的參數,以符合特定應用程式需求。 若要讓 MIP SDK 處理 MSG 檔案,需要使用 CustomSettings 物件的 FileEngineSettings 屬性來設定 enable_msg_file_type 標誌,以啟用對 .msg 檔案的處理。
如果您已建立 FileEngineSettings 名為 engineSettings 的物件,您會在 .NET 中設定此屬性,如下所示:
engineSettings.CustomSettings = new List<KeyValuePair<string, string>>();
engineSettings.CustomSettings.Add(new KeyValuePair<string, string>("enable_msg_file_type", "true"));
.msg檔案保護作業虛擬程式碼看起來可能像這樣:
- 在
enable_msg_file_type中設定mip::FileEngineSettings旗標,並將mip::FileEngine新增至mip::FileProfile。 - 使用
FileEngine來擷取使用者的標籤清單。 - 建構
mip::FileHandler,指向要標記的檔案。 - 選取標籤並使用
mip::FileHandler的SetLabel方法來套用標籤。
變更預設附件處理行為
根據預設,檔案 SDK 會在使用檢查 API 時,嘗試處理屬於 MSG 檔案的所有附件,或 message.rpmsg 檔案。 預設只會解密根層級專案和第一層附件。
若要修改此行為,可以使用自定義設定 container_decryption_option。 在C++中,這是以列舉的方式公開的,mip::ContainerDecryptionOption。
| 選項名稱 | 描述 |
|---|---|
All |
解密 MSG 檔案和附件。 如果附件是 MSG,它會以遞歸方式解密 MSG 及其附件。 它會在拋出 mip::BadInputError("Max depth reached on nested msg attachments") 之前遞迴最多十個層級 |
Default |
與 Msg相同。 |
Msg |
解密 MSG 和第一層附件。 不會以遞歸方式解密附加的 MSG 檔案。 |
Top |
僅解密 MSG 檔案,且不會解密附件。 |
下列範例示範如何在 .NET 中設定應用程式,只解密根 MSG 檔案。
engineSettings.CustomSettings.Add(new KeyValuePair<string, string>("container_decryption_option", "Top"));
在C++中:
vector<pair<string, string>> customSettings;
customSettings.emplace_back(mip::GetCustomSettingContainerDecryptionOption(),
mip::ContainerDecryptionOptionString(mip::ContainerDecryptionOption::Top));
engineSettings.SetCustomSettings(customSettings);
.rpmsg 檔案的檔案 SDK 作業
MIP SDK 公開可解密內嵌 message.rpmsg 檔案的檢查函式,並將一組位元組數據流呈現為輸出。 由 SDK 取用者來擷取 message.rpmsg 檔案,並將其傳遞至檢查 API。 Purview 訊息加密案例中存在此檔名的變化,API 也會接受 message_v2、v3 或 v4 檔案。
重要
檢查 API 不提供能產生可用檔案的輸出,也不允許您重新保護輸入檔案。 它會輸出應用程式接著可以進一步處理的位元組數據流。 MIP SDK 不支援從 message.rpmsg 檔案重新建立 MSG 檔案。
在大部分情況下,DLP 服務必須從訊息取得附件和純文本位元組,以檢查和評估 DLP 原則。 檢查 API 會將 message.rpmsg 作為輸入,並傳回位元組串流作為輸出。 這些位元組數據流包含訊息和附件的純文本位元組。 應用程式開發人員必須處理這些數據流,並對其執行有用的動作(檢查、遞歸解密等)。
Inspect API 是透過類別 mip::FileInspector 實作的,該類別提供檢查支援的檔案類型的操作功能。
mip::MsgInspector 會擴充 mip::FileInspector,並公開 rpmsg 檔格式特有的解密作業。 MIP SDK 不支援 message.rpmsg 檔案的任何發佈案例。 此外, FileHandler::RemoveProtection() API 不支援 message.rpmsg 檔案。
Message.rpmsg 檔案只能解密以進行檢查,而且 不會輸出有效的可用檔案。 如果您的應用程式需要檔案輸出,您必須傳入 MSG 檔案,並從該物件移除保護。
mip::MsgInspector 類別會公開下列成員:
public const std::vector<uint8_t>& GetBody()
public BodyType GetBodyType() const
public BodyType GetBodyType() const
public InspectorType GetInspectorType() const
public std::shared_ptr<Stream> GetFileStream() const
如需詳細資訊,請參閱 Microsoft 資訊保護 SDK for C++:參考。