Microsoft Information Protection SDK – Koncepty modulu file SDK

mip::FileEngine v sadě MIP File SDK poskytuje rozhraní ke všem operacím prováděným jménem zadané identity. Přidejte jeden modul pro každého uživatele, který se přihlásí k aplikaci. Modul provádí všechny operace v kontextu této identity.

FileEngine má dva hlavní úkoly: vypisovat štítky pro ověřeného uživatele a vytvářet obslužné objekty pro práci se soubory, které provádějí operace se soubory jménem 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 profilech a objektech motoru, může mít modul dva stavy – CREATED nebo LOADED. Pokud to není jeden z těchto dvou stavů, neexistuje. Chcete-li vytvořit a načíst stav, stačí jediné volání FileProfile::LoadAsync. Pokud engine již existuje v mezipaměti, je LOADED. Pokud to neexistuje, je to CREATED a LOADED. CREATED znamená, že aplikace má ze služby všechny informace potřebné k načtení enginu. LOADED znamená, že všechny datové struktury potřebné k použití modulu existují v paměti.

Vytvořit nastavení souborového modulu

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 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 také explicitně nastavte jedinečné engineId:

engineSettings.SetEngineId(engineId);

Použití uživatelského jména nebo e-mailu pomáhá zajistit, aby se při každém použití služby nebo aplikace načítá 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 použít první parametr, idkterý připojí modul k přidruženému uživateli. E-mailová adresa, UPN nebo identifikátor GUID objektu Microsoft Entra pomáhá zajistit, aby bylo ID jedinečné a bylo možné je načíst z místního stavu bez volání služby.

Přidejte souborový modul

Chcete-li přidat engine, vraťte se ke vzoru promise/future, který se používá k načtení profilu. Místo vytvoření slibu pro mip::FileProfile, vytvořit ho 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();

Kód přidá do profilu modul pro ověřeného uživatele.

Vypsat popisky citlivosti

Pomocí přidaného modulu můžete zobrazit 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>.

Další informace najdete v referenčních informacích ke mip::Label třídě.

SeznamCitlivostníchŠtítků()

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

Nebo zjednodušené:

auto labels = engine->ListSensitivityLabels();

Tisk názvů ukazuje, že aplikace úspěšně nabrala zásadu ze služby a získala štítky. Chcete-li použít štítek, potřebujete identifikátor štítku. Následující kód prochází všechny popisky a zobrazuje 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;
  }
}

Kolekci mip::Label, kterou vrací GetSensitivityLabels(), můžete použít k zobrazení všech popisků, které jsou uživateli k dispozici, a po jejich výběru použít ID k přiřazení popisků k souboru.

Další kroky

Teď, když je profil načtený, modul byl přidán a štítky jsou k dispozici, můžete přidat obslužnou funkci a začít číst, zapisovat nebo odebírat štítky ze souborů. Další informace najdete v tématu Obslužné rutiny souborů v sadě MIP SDK.