Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
mip::PolicyEngine implementuje wszystkie operacje, które może wykonać Policy SDK, z wyjątkiem ładowania profilu.
Implementacja: dodawanie silnika zasad
Implementacja: Tworzenie ustawień silnika zasad
Podobnie jak profil, silnik wymaga również obiektu ustawień. mip::PolicyEngine::Settings Ten obiekt przechowuje unikatowy identyfikator silnika, obiekt implementacji mip::AuthDelegate, dostosowywalne dane klienta, które mogą być używane do debugowania lub telemetrii, a opcjonalnie ustawienie regionalne.
W tym miejscu utworzymy FileEngine::Settings obiekt o nazwie engineSettings 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 ustawień silnika w ten sposób ważne jest również jawne ustawienie unikatowego identyfikatora silnika za pomocą:
engineSettings.SetEngineId(engineId);
Użycie nazwy użytkownika lub adresu e-mail pomaga zapewnić, że ten sam mechanizm jest uruchamiany każdorazowo, gdy użytkownik korzysta z usługi lub aplikacji.
Ponadto dopuszczalne jest podanie niestandardowego identyfikatora silnika:
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.
Najlepszą praktyką jest, aby pierwszy parametr, id, był czymś, co umożliwia łatwe połączenie silnika ze skojarzonym użytkownikiem, najlepiej nazwą główną użytkownika.
Implementacja: Dodaj silnik polityki
Aby dodać silnik, wrócimy do wzorca obietnicy/przyszłości używanego do ładowania profilu. Zamiast tworzenia obietnicy dla mip::Profile, użyjemy 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();
Końcowym rezultatem działania powyższego kodu jest to, że pomyślnie dodaliśmy silnik dla uwierzytelnionego użytkownika do profilu.
Implementacja: wyświetlanie listy etykiet poufności
Korzystając z dodanego silnika, teraz możliwe jest wyświetlenie listy wszystkich etykiet poufności dostępnych dla uwierzytelnionego użytkownika poprzez wywołanie metody 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 identyfikatora etykiety skutkuje:
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(), używana do wyświetlania wszystkich etykiet dostępnych dla użytkownika, a następnie, po wybraniu, używa identyfikatora, aby zastosować etykiety do pliku.