Microsoft Information Protection SDK - Concepten van beleids-SDK-engine

mip::PolicyEngine implementeert alle bewerkingen die de Beleids-SDK kan uitvoeren, met uitzondering van het laden van het profiel.

Implementatie: Een beleidsengine toevoegen

Implementatie: Instellingen voor beleidsengine maken

Net als bij een profiel vereist de engine ook een instellingenobject. mip::PolicyEngine::Settings Dit object slaat de unieke engine-id, een object van uw mip::AuthDelegate implementatie, aanpasbare clientgegevens op voor foutopsporing of telemetrie, en optioneel de landinstelling.

In het volgende voorbeeld wordt een PolicyEngine::Settings object met de naam engineSettings gemaakt met behulp van de identiteit van de toepassingsgebruiker:

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.

Stel bij het maken van engineSettings op deze manier ook expliciet een unieke engineId in:

engineSettings.SetEngineId(engineId);

Door de gebruikersnaam of e-mail te gebruiken, zorgt u ervoor dat dezelfde engine telkens wordt geladen wanneer de gebruiker de service of toepassing gebruikt.

Geldig is ook het verstrekken van een aangepaste engine-id:

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.

Als best practice gebruikt u een eerste parameter, id, die de engine verbindt met de bijbehorende gebruiker, bij voorkeur de principal-naam van de gebruiker.

Implementatie: De beleidsengine toevoegen

Als u de engine wilt toevoegen, gaat u terug naar het Future/Promise-patroon dat wordt gebruikt om het profiel te laden. Gebruik mip::PolicyEngine in plaats van de belofte voor mip::Profile te maken.


  // 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();

De code voegt een engine voor de geverifieerde gebruiker toe aan het profiel.

Implementatie: Vertrouwelijkheidslabels vermelden

Met behulp van de toegevoegde engine kunt u alle vertrouwelijkheidslabels weergeven die beschikbaar zijn voor de geverifieerde gebruiker door aan te roepen engine->ListSensitivityLabels().

ListSensitivityLabels() haalt de lijst met labels en kenmerken van deze labels voor een specifieke gebruiker van de service op. Het resultaat wordt opgeslagen in een vector van std::shared_ptr<mip::Label>.

Implementatie: ListSensitivityLabels()

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

Implementatie: De etiketten afdrukken

//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;
  }
}

Het afdrukken van de namen laat zien dat de applicatie het beleid van de service heeft opgehaald en de labels heeft opgehaald. Als u het label wilt toepassen, hebt u de label-id nodig. Wijzig het vorige fragment om de label-id te retourneren:

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;
  }
}

U kunt de door ListSensitivityLabels() geretourneerde verzameling mip::Label gebruiken om alle labels weer te geven die beschikbaar zijn voor de gebruiker en vervolgens, wanneer een label is geselecteerd, de ID gebruiken om labels op een bestand toe te passen.

Volgende stappen