Udostępnij za pośrednictwem


Zestaw SDK usługi Microsoft Information Protection — pojęcia dotyczące aparatu zestawu SDK zasad

mip::PolicyEngine implementuje wszystkie operacje, które może wykonać zestaw SDK zasad, z wyjątkiem ładowania profilu.

Implementacja: dodawanie aparatu zasad

Implementacja: tworzenie Ustawienia aparatu zasad

Podobnie jak w przypadku profilu aparat wymaga również obiektu ustawień . mip::PolicyEngine::Settings Ten obiekt przechowuje unikatowy identyfikator aparatu, obiekt implementacji mip::AuthDelegate , dostosowywalne dane klienta, które mogą być używane do debugowania lub telemetrii, a opcjonalnie ustawienia regionalne.

W tym miejscu utworzymy FileEngine::Settings obiekt o nazwie engine Ustawienia przy użyciu tożsamości użytkownika aplikacji:

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.

Podczas tworzenia aparatu Ustawienia w ten sposób ważne jest również jawne ustawienie unikatowego identyfikatora aparatu za pomocą:

engineSettings.SetEngineId(engineId);

Użycie nazwy użytkownika lub wiadomości e-mail pomaga upewnić się, że ten sam aparat jest ładowany za każdym razem, gdy użytkownik korzysta z usługi lub aplikacji.

Ponadto prawidłowe jest podanie niestandardowego identyfikatora aparatu:

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.

Najlepszym rozwiązaniem jest to, że pierwszy parametr o identyfikatorze powinien być czymś, co umożliwia łatwe połączenie aparatu ze skojarzonym użytkownikiem, najlepiej główną nazwą użytkownika.

Implementacja: Dodawanie aparatu zasad

Aby dodać aparat, wrócimy do wzorca przyszłości/obietnicy użytego do załadowania profilu. Zamiast tworzyć obietnicę dla mip::Profileelementu , użyjemy polecenia 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();

Wynikiem końcowym powyższego kodu jest to, że pomyślnie dodaliśmy aparat dla uwierzytelnionego użytkownika do profilu.

Implementacja: wyświetlanie listy etykiet poufności

Za pomocą dodanego aparatu można teraz wyświetlić listę wszystkich etykiet poufności dostępnych dla uwierzytelnionego użytkownika, wywołując metodę engine->ListSensitivityLabels().

ListSensitivityLabels() Pobiera listę etykiet i atrybutów tych etykiet dla określonego użytkownika z usługi. Wynik jest przechowywany w wektorze std::shared_ptr<mip::Label>.

Implementacja: ListSensitivityLabels()

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

Implementacja: drukowanie etykiet

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

Drukowanie nazw jest łatwym sposobem pokazania, że pomyślnie pobraliśmy zasady z usługi i udało nam się uzyskać etykiety. Aby zastosować etykietę, wymagany jest identyfikator etykiety. Zmodyfikowanie powyższego fragmentu w celu zwrócenia wyników identyfikatora etykiety:

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

Kolekcja zwrócona przez ListSensitivityLabels() program może służyć do wyświetlania mip::Label wszystkich etykiet dostępnych dla użytkownika, a następnie, po wybraniu, użyj identyfikatora, aby zastosować etykiety do pliku.