Sdílet prostřednictvím


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.