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 プロパティを使用して、.msg ファイルの処理を有効にするための enable_msg_file_type のフラグを設定します。
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メソッドを使用して、そのラベルを適用します。
ラベルを一覧表示する方法については、ラベルの一覧表示に関するクイックスタートを参照してください。
デフォルトの添付ファイル処理動作の変更
デフォルトでは、検査 API を使用する場合、File SDK は MSG ファイルまたは message.rpmsg ファイルの一部であるすべての添付ファイルを処理しようとします。 既定では、ルート レベルの項目と最初のレベルの添付ファイルのみが暗号化解除されます。
この動作を変更するには、カスタム設定 container_decryption_option を使用できます。 C++ では、これは列挙型 (mip::ContainerDecryptionOption) を介して公開されます。
| オプション名 | 説明 |
|---|---|
All |
MSG ファイルと添付ファイルを復号化します。 添付ファイルが MSG の場合、MSG とその添付ファイルは再帰的に復号化されます。
mip::BadInputError("Max depth reached on nested msg attachments") をスローする前に最大 10 レベルを再帰します |
Default |
Msgと同じです。 |
Msg |
MSG と第 1 レベルの添付ファイルを復号化します。 添付された MSG ファイルを再帰的に復号化しません。 |
Top |
MSG ファイルのみを復号化し、添付ファイルの暗号化を解除しません。 |
次の例は、ルート MSG ファイルのみを復号化するように .NET でアプリケーションを設定する方法を示しています。
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 Message Encryption シナリオにはこのファイル名のバリエーションが存在し、API はmessage_v2、v3、または v4 ファイルも受け入れます。
重要
検査 API は、使用可能なファイルとなる出力を提供しません。また、入力ファイルを再保護することもできません。 アプリケーションでさらに処理できるバイト ストリームが出力されます。 MIP SDK では、message.rpmsg ファイルからの MSG ファイルの再作成はサポートされていません。
ほとんどの場合、DLP サービスでは、DLP ポリシーに照らして検査および評価するために、メッセージから添付ファイルとプレーンテキスト バイトを取得する必要があります。 inspect 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
詳細については、C++ 用 Microsoft Information Protection (MIP) SDK: リファレンスを参照してください。