ファイル SDK の電子メール メッセージ ファイルの処理

MIP SDK では、電子メール メッセージの復号化と暗号化がサポートされています。 SDK では、OutlookまたはExchangeによって生成される.msg ファイルと、少し異なる方法で .rpmsg ファイルの両方がサポートされます。

注

MIP SDK 1.17 以降では、.eml ファイルがサポートされています。 処理は、ラベル付け/保護シナリオの.msgに似ています。また、コンテナーの形式に応じて、検査シナリオでは .rpmsg に似ています。

.msg ファイルの一般的なユース ケースは次のとおりです。

  • DLP またはメール ゲートウェイ サービスからの電子メールにラベルを適用する。
  • 電子情報開示でスキャンする機密性の高いドキュメントの暗号化を解除します。
  • 転送中のメッセージを復号化、変更、および再保護する。
  • 基幹業務アプリケーションから保護されたメッセージを直接発行します。

.msg ファイルを入力として指定すると、MIP SDK はラベル付き、保護済み、または保護されていない.msg ファイルを出力します。

.rpmsg ファイルの一般的なユース ケースは次のとおりです。

  • データ損失防止 (DLP) 検査のためにメールと添付ファイルを復号化する。

入力として .rpmsg ファイルが指定されると、MIP SDK は本文のバイトと添付ファイルを検査します。 .rpmsg ファイルの暗号化を解除しても、出力として .rpmsg ファイルは生成されません。

MSG ファイルのサポート ステートメント

MIP SDK では、MSG ファイルの保護アプリケーションと削除がサポートされています。 この形式のさまざまなエンコードの種類および変数が長年にわたり使用されているため、MIP SDK で "すべて" の MSG ファイルから保護を削除できることは保証できません。 次のセクションでは、さまざまなソースからの MSG ファイルのサポート機能について説明します。

  • MIP SDK で保護されていた MSG ファイルからの保護の削除は、完全にサポートされています。
  • 現在サポートされているバージョンの Outlook クライアントで作成された MSG ファイルからの保護の削除は、完全にサポートされています。
  • サポートされていないバージョンの Outlook クライアントで作成された MSG ファイルからの保護の削除は、ベストエフォート ベースでサポートされます。
  • MIP SDK では、保護されたラベルを持つ MSG ファイルの再保護はサポートされていません。 ユーザーは、別のラベルでファイルを再度保護する前に、保護されたラベルを明示的に保護解除して削除する必要があります。

MSG ファイルのラベル付け

MIP SDK は、MSG ファイルのラベルの読み取りと書き込みをサポートしています。 子添付ファイルはラベルを継承しませんが、保護設定を継承します。 詳細については、 .msg ファイルの File SDK でのラベル付けと保護の操作に関するページを参照してください。

.msg ファイルの File SDK でのラベル付けと保護の操作

File SDK では、他のファイルの種類と同じ方法で.msg ファイルのラベル付けおよび保護操作がサポートされます。ただし、SDK では、アプリケーションで MSG 機能フラグを有効にする必要があります。

前に説明したとおり、FileEngine のインスタンス化には、設定オブジェクト FileEngineSettings が必要です。 FileEngineSettings は、特定のアプリケーションのニーズを満たすためにカスタム設定のパラメーターを渡します。 MIP SDK が MSG ファイルを処理できるようにするには、CustomSettings オブジェクトの FileEngineSettings プロパティによって、enable_msg_file_typeのフラグが設定されます。

engineSettings という名前のFileEngineSettings オブジェクトを作成する場合は、.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++ では、SDK は列挙型 ( 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 ファイルの暗号化を解除できるのは検査用のみで、API は有効で使用可能なファイルを出力しません。 アプリケーションでファイル出力が必要な場合は、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: リファレンスを参照してください。

次のステップ