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::Profile
elementu , 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.