Microsoft Information Protection SDK – Koncepty modulu sdk zásad
mip::PolicyEngine
implementuje všechny operace, které může sada SDK zásad provádět, s výjimkou načtení profilu.
Implementace: Přidání modulu zásad
Implementace: Vytvoření Nastavení modulu zásad
Podobně jako profil vyžaduje modul také objekt nastavení . mip::PolicyEngine::Settings
Tento objekt ukládá jedinečný identifikátor modulu, objekt vaší mip::AuthDelegate
implementace, přizpůsobitelná klientská data, která lze použít pro ladění nebo telemetrii a volitelně národní prostředí.
Tady vytvoříme FileEngine::Settings
objekt s názvem engine Nastavení pomocí identity uživatele aplikace:
PolicyEngine::Settings engineSettings(
mip::Identity(mUsername), // mip::Identity.
authDelegateImpl, // Auth delegate object
"", // Client data. Customizable by developer, stored with engine.
"en-US", // Locale.
false); // Load sensitive information types for driving classification.
Při vytváření modulu Nastavení tímto způsobem je důležité explicitně nastavit také jedinečné ID modulu prostřednictvím:
engineSettings.SetEngineId(engineId);
Použití uživatelského jména nebo e-mailu pomáhá zajistit, aby se pokaždé, když uživatel používá službu nebo aplikaci, načetl stejný modul.
Platné je také zadání vlastního ID modulu:
PolicyEngine::Settings engineSettings(
"myEngineId", // String
authDelegateImpl, // Auth delegate object
"", // Client data in string format. Customizable by developer, stored with engine.
"en-US", // Locale. Default is en-US
false); // Load sensitive information types for driving classification. Default is false.
Osvědčeným postupem je, že první parametr, ID, by měl být něco, co modulu umožňuje snadné připojení k přidruženému uživateli, nejlépe hlavní název uživatele.
Implementace: Přidání modulu zásad
Pokud chcete přidat modul, vrátíme se k vzoru budoucnosti nebo příslibu použitému k načtení profilu. Místo vytváření příslibu pro mip::Profile
, použijeme mip::PolicyEngine
.
// Auto profile will be std::shared_ptr<mip::Profile>.
auto profile = profileFuture.get();
// Create the delegate
auto authDelegateImpl = std::make_shared<sample::auth::AuthDelegateImpl>(appInfo, userName, password);
// Create the PolicyEngine::Settings object.
PolicyEngine::Settings engineSettings("UniqueID", authDelegateImpl, "");
// Create a promise for std::shared_ptr<mip::PolicyEngine>.
auto enginePromise = std::make_shared<std::promise<std::shared_ptr<mip::PolicyEngine>>>();
// 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::PolicyEngine>.
auto engine = engineFuture.get();
Konečným výsledkem výše uvedeného kódu je, že jsme úspěšně přidali modul pro ověřeného uživatele do profilu.
Implementace: Výpis popisků citlivosti
Pomocí přidaného modulu je nyní možné vypsat všechny popisky citlivosti dostupné ověřenému uživateli voláním engine->ListSensitivityLabels()
.
ListSensitivityLabels()
načte seznam popisků a atributů těchto popisků pro konkrétního uživatele ze služby. Výsledek je uložen ve vektoru std::shared_ptr<mip::Label>
.
Implementace: ListSensitivityLabels()
std::vector<shared_ptr<mip::Label>> labels = engine->ListSensitivityLabels();
Implementace: Tisk štítků
//Iterate through all labels in the vector
for (const auto& label : labels) {
//print the label name
cout << label->GetName() << endl;
//Iterate through all child labels
for (const auto& child : label->GetChildren()) {
//Print the label with some formatting
cout << "-> " << child->GetName() << endl;
}
}
Tisk názvů je snadný způsob, jak ukázat, že jsme ze služby úspěšně načetli zásady a mohli štítky získat. K použití popisku se vyžaduje identifikátor popisku. Úprava výsuvu výše tak, aby vrátila výsledky ID popisku:
for (const auto& label : labels) {
//Print label name and GUID
cout << label->GetName() << " : " << label->GetId() << endl;
//Print child label name and GUID
for (const auto& child : label->GetChildren()) {
cout << "-> " << child->GetName() << " : " << child->GetId() << endl;
}
}
Kolekci vrácených mip::Label
uživatelem ListSensitivityLabels()
lze použít k zobrazení všech popisků, které jsou uživateli k dispozici, a po výběru použijte ID k použití popisků u souboru.