Sdílet prostřednictvím


Microsoft Information Protection SDK – Koncepty modulu file SDK

mip::FileEngine v MIP File SDK poskytuje rozhraní pro všechny operace prováděné na základě 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.

FileEngine dvě hlavní odpovědnosti: Seznamování štítků pro ověřeného uživatele a vytváření obslužných programů pro provádění souborových operací pro uživatele.

  • mip::FileEngine
  • ListSensitivityLabels(): Získá seznam štítků načteného motoru.
  • CreateFileHandler(): Vytvoří mip::FileHandler pro určitý soubor či 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ž engine existuje v mezipaměti, bude LOADED. Pokud neexistuje, bude CREATED a LOADED. CREATED znamená, že aplikace má všechny informace ze služby potřebné k načtení engine. LOADED znamená, že všechny datové struktury potřebné k využití modulu byly vytvořeny v paměti.

Vytvoření nastavení motoru souboru

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é engineId 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 motoru.

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 id by měl být něco, co umožňuje snadné připojení motoru k přidruženému uživateli. Například e-mailová adresa, hlavní název uživatele (UPN) nebo GUID objektu AAD by zajistily, ž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.

Seznam popisků citlivosti

Pomocí přidaného enginu je nyní možné vypsat všechny štítky 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

SeznamCitlivostníchŠtítků()

std::vector<shared_ptr<mip::Label>> labels = engine->ListSensitivityLabels();

Nebo zjednodušené:

auto labels = engine->ListSensitivityLabels();

Tisk názvů je snadný způsob, jak ukázat, že jsme z této služby úspěšně načetli politiku a dokázali získat štítky. K použití popisku je vyžadován jeho identifikátor. Následující kód iteruje přes všechny popisky a zobrazí name a id 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;
  }
}

Kolekce mip::Label, vrácená komponentou GetSensitivityLabels(), může být použita k zobrazení všech popisků dostupných uživateli a následně, po výběru, lze ID použít pro aplikaci popisků na soubor.

Další kroky

Teď, když je profil načtený, engine přidaný a máme popisky, můžeme přidat obslužnou rutinu, která začne číst, zapisovat nebo odebírat popisky ze souborů. Podívejte se na Obslužné rutiny souborů v sadě MIP SDK.