Microsoft Information Protection SDK – Koncepty modulu file SDK
Sada mip::FileEngine
MIP File SDK poskytuje rozhraní pro všechny operace prováděné jménem zadané identity. Pro každého uživatele, který se přihlásí k aplikaci, se přidá jeden modul a všechny operace, které modul provádí, se budou provádět v kontextu této identity.
Má FileEngine
dvě hlavní odpovědnosti: Výpis popisků ověřeného uživatele a vytváření obslužných rutin souborů pro provádění operací se soubory jménem uživatele.
mip::FileEngine
ListSensitivityLabels()
: Získá seznam popisků pro načtený motor.CreateFileHandler()
: Vytvoří promip::FileHandler
určitý soubor nebo datový proud.
Přidání souborového stroje
Jak je popsáno v objektech Profile a Engine, může mít modul dva stavy – CREATED
nebo LOADED
. Pokud to není jeden z těchto dvou stavů, neexistuje. Pokud chcete vytvořit i načíst stav, je nutné provést pouze jedno volání FileProfile::LoadAsync
. Pokud již modul v mezipaměti existuje, bude LOADED
to . Pokud neexistuje, bude CREATED
to a LOADED
. CREATED
znamená, že aplikace má všechny informace ze služby potřebné k načtení modulu. LOADED
znamená, že všechny datové struktury potřebné k využití modulu byly vytvořeny v paměti.
Vytvoření nastavení souborových strojů
Podobně jako profil vyžaduje modul také objekt nastavení . mip::FileEngine::Settings
Tento objekt ukládá jedinečný identifikátor modulu, mip::AuthDelegate
implementaci, přizpůsobitelná klientská data, která lze použít pro ladění nebo telemetrii a volitelně národní prostředí.
Zde vytvoříme FileEngine::Settings
objekt s názvem engineSettings pomocí identity uživatele aplikace.
FileEngine::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í engineSettings tímto způsobem je důležité explicitně nastavit 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:
FileEngine::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 , by měl být něco, id
co umožňuje modulu snadno připojit k přidruženému uživateli. Například e-mailová adresa, hlavní název uživatele (UPN) nebo IDENTIFIKÁTOR GUID objektu AAD by zajistilo, že ID je jedinečné a může být načteno z místního stavu bez volání služby.
Přidání souborového stroje
Pokud chcete přidat modul, vrátíme se k modelu příslibu a budoucnosti použitému k načtení profilu. Místo vytvoření příslibu pro mip::FileProfile
, je vytvořen pomocí mip::FileEngine
.
//auto profile will be std::shared_ptr<mip::FileProfile>
auto profile = profileFuture.get();
// Instantiate the AuthDelegate implementation.
auto authDelegateImpl = std::make_shared<sample::auth::AuthDelegateImpl>(appInfo, userName, password);
//Create the FileEngine::Settings object
FileEngine::Settings engineSettings("UniqueID", authDelegateImpl, "");
//Create a promise for std::shared_ptr<mip::FileEngine>
auto enginePromise = std::make_shared<std::promise<std::shared_ptr<mip::FileEngine>>>();
//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::FileEngine>
auto engine = engineFuture.get();
Konečným výsledkem výše uvedeného kódu je, že modul ověřeného uživatele se přidá do profilu.
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>
.
Přečtěte si další informace zde.mip::Label
ListSensitivityLabels()
std::vector<shared_ptr<mip::Label>> labels = engine->ListSensitivityLabels();
Nebo zjednodušené:
auto labels = engine->ListSensitivityLabels();
Tisk štítků a ID
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. Následující kód iteruje všechny popisky a zobrazí name
id
popisky pro každý nadřazený a podřízený popisek.
//Iterate through all labels in the vector
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 GetSensitivityLabels()
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.
Další kroky
Teď, když je profil načtený, přidaný modul a máme popisky, můžeme přidat obslužnou rutinu, která začne číst, zapisovat nebo odebírat popisky ze souborů. Viz Obslužné rutiny souborů v sadě MIP SDK.