Sdílet prostřednictvím


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.

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ří pro mip::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 LOADEDto . 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, idco 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 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.