Microsoft Information Protection SDK - 保護 SDK エンジンの概念
実装: 保護エンジンを追加する
ファイル SDK では、mip::ProtectionProfile
クラスがすべての SDK 操作のルート クラスとなります。 プロファイルを既に作成したので、プロファイルにエンジンを追加できるようになりました。
次の例では、認証された 1 人のユーザーに対して 1 つのエンジンを使用する方法を示します。
実装: 保護エンジンの設定を作成する
プロファイルと同様に、エンジンにも設定オブジェクトである mip::ProtectionEngine::Settings
が必要です。 このオブジェクトには、一意のエンジン識別子、デバッグまたはテレメトリに使用できるカスタマイズ可能なクライアント データ、および必要に応じてロケールが格納されます。
これで、engineSettings という ProtectionEngine::Settings
オブジェクトを作成できました。
ProtectionEngine::Settings engineSettings("UniqueID", "");
Note
この方法を使用して保護設定オブジェクトを作成する場合は、setIdentity()
による ProtectionEngineSettings の ID または setCloud()
によるターゲット クラウド環境を手動で設定する必要もあります。
ベスト プラクティスとして、最初のパラメーターである id は、エンジンと関連するユーザー または a mip::Identity
オブジェクトを簡単に接続できるものである必要があります。 mip::Identity
で設定を初期化するには:
ProtectionEngine::Settings engineSettings(mip::Identity("Bob@Contoso.com", "");
この方法で engineSettings を作成する場合は、次のようにして一意の engineId も明示的に設定することが重要です。
engineSettings.SetEngineId(engineId);
ユーザー名または電子メールを使用すると、ユーザーがサービスまたはアプリケーションを使用するたびに同じエンジンが読み込まれるようにすることができます。
実装: 保護エンジンを追加する
エンジンを追加するには、プロファイルの読み込みに使用される future/promise パターンに戻ります。 mip::ProtectionProfile
の promise を作成する代わりに、mip::ProtectionEngine
を使用します。
//auto profile will be std::shared_ptr<mip::ProtectionProfile>
auto profile = profileFuture.get();
//Create the ProtectionEngine::Settings object
ProtectionEngine::Settings engineSettings("UniqueID", "");
//Create a promise for std::shared_ptr<mip::ProtectionEngine>
auto enginePromise = std::make_shared<std::promise<std::shared_ptr<mip::ProtectionEngine>>>();
//Instantiate the future from the promise
auto engineFuture = enginePromise->get_future();
//Add the engine using AddEngineAsync, passing in the engine settings and the promise
profile->AddEngineAsync(engineSettings, enginePromise);
//get the future value and store in std::shared_ptr<mip::ProtectionEngine>
auto engine = engineFuture.get();
上記のコードの最終的な結果は、認証されたユーザーのエンジンがプロファイルに正常に追加されたことを示します。
実装: テンプレートを一覧表示する
追加されたエンジンを使用して、engine->GetTemplatesAsync()
を呼び出すことで、認証されたユーザーが使用できるすべての機密テンプレートをすべて一覧表示できるようになりました。
GetTemplatesAsync()
は、テンプレート ID の一覧をフェッチします。 結果は、std::shared_ptr<std::string>
ベクトルに格納されます。
実装: ListSensitivityTemplates()
auto loadPromise = std::make_shared<std::promise<shared_ptr<vector<string>>>>();
std::future<std::shared_ptr<std::vector<std::string>>> loadFuture = loadPromise->get_future();
mEngine->GetTemplatesAsync(engineObserver, loadPromise);
auto templates = loadFuture.get();
実装: テンプレート ID を印刷する
//Iterate through all template IDs in the vector
for (const auto& temp : *templates) {
cout << "Template:" << "\n\tId: " << temp << endl;
}
名前の印刷は、サービスからポリシーを正常にプルし、テンプレートを取得できたことを示す簡単な方法です。 テンプレートを適用するには、テンプレート識別子が必要です。
ポリシー SDK を使用して ComputeActions()
の結果を調べることでのみ、テンプレートをラベルにマッピングすることができます。
次のステップ
プロファイルのロード、エンジンの追加そして、テンプレートの作成をしたので、ファイルのテンプレートの読み取り、書き込み、または削除を開始するハンドラーを追加できます。 「保護ハンドラーの概念」を参照してください。