Microsoft Information Protection SDK — pojęcia dotyczące aparatu zestawu SDK plików
Zestaw mip::FileEngine
SDK pliku MIP udostępnia interfejs dla wszystkich operacji wykonywanych w imieniu określonej tożsamości. Jeden aparat zostanie dodany dla każdego użytkownika, który loguje się do aplikacji, a wszystkie wykonywane przez aparat operacje zostaną wykonane w kontekście tej tożsamości.
Ma FileEngine
dwie podstawowe obowiązki: Wyświetlanie listy etykiet dla uwierzytelnionego użytkownika i tworzenie procedur obsługi plików w celu wykonywania operacji na plikach w imieniu użytkownika.
mip::FileEngine
ListSensitivityLabels()
: Pobiera listę etykiet dla załadowanego aparatu.CreateFileHandler()
: tworzymip::FileHandler
element dla określonego pliku lub strumienia.
Dodawanie aparatu plików
Zgodnie z opisem w obiektach Profile i Engine aparat może mieć dwa stany — CREATED
lub LOADED
. Jeśli nie jest to jeden z tych dwóch stanów, nie istnieje. Aby utworzyć i załadować stan, wystarczy wykonać jedno wywołanie metody FileProfile::LoadAsync
. Jeśli aparat już istnieje w stanie buforowanym, będzie LOADED
to . Jeśli nie istnieje, będzie CREATED
to i LOADED
. CREATED
oznacza, że aplikacja ma wszystkie informacje z usługi potrzebne do załadowania aparatu. LOADED
oznacza, że wszystkie struktury danych niezbędne do wykorzystania aparatu zostały utworzone w pamięci.
Tworzenie ustawień aparatu plików
Podobnie jak w przypadku profilu aparat wymaga również obiektu ustawień . mip::FileEngine::Settings
Ten obiekt przechowuje unikatowy identyfikator aparatu, implementację mip::AuthDelegate
, dostosowywalne dane klienta, które mogą być używane do debugowania lub telemetrii, a także opcjonalnie ustawienia regionalne.
W tym miejscu utworzymy FileEngine::Settings
obiekt o nazwie engineSettings przy użyciu tożsamości użytkownika aplikacji.
FileEngine::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 aparatuUstawienia 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:
FileEngine::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 id
, powinien być czymś, co umożliwia łatwe połączenie aparatu ze skojarzonym użytkownikiem. Coś takiego jak adres e-mail, nazwa UPN lub identyfikator GUID obiektu usługi AAD zapewni, że identyfikator jest zarówno unikatowy, jak i można go załadować ze stanu lokalnego bez wywoływania usługi.
Dodawanie aparatu plików
Aby dodać aparat, wrócimy do wzorca obietnicy/przyszłego użytego do załadowania profilu. Zamiast tworzyć obietnicę dla mip::FileProfile
elementu , jest ona tworzona przy użyciu polecenia mip::FileEngine
.
//auto profile will be std::shared_ptr<mip::FileProfile>
auto profile = profileFuture.get();
// Instantiate the AuthDelegate implementation.
auto authDelegateImpl = std::make_shared<sample::auth::AuthDelegateImpl>(appInfo, userName, password);
//Create the FileEngine::Settings object
FileEngine::Settings engineSettings("UniqueID", authDelegateImpl, "");
//Create a promise for std::shared_ptr<mip::FileEngine>
auto enginePromise = std::make_shared<std::promise<std::shared_ptr<mip::FileEngine>>>();
//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::FileEngine>
auto engine = engineFuture.get();
Wynikiem końcowym powyższego kodu jest dodanie aparatu dla uwierzytelnionego użytkownika do profilu.
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>
.
Przeczytaj więcej tutaj na temat .mip::Label
ListSensitivityLabels()
std::vector<shared_ptr<mip::Label>> labels = engine->ListSensitivityLabels();
Lub, uproszczone:
auto labels = engine->ListSensitivityLabels();
Drukowanie etykiet i identyfikatorów
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. Poniższy kod iteruje wszystkie etykiety, wyświetlając name
i id
dla każdej etykiety nadrzędnej i podrzędnej.
//Iterate through all labels in the vector
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 GetSensitivityLabels()
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.
Następne kroki
Teraz, gdy profil zostanie załadowany, aparat dodany i mamy etykiety, możemy dodać procedurę obsługi, aby rozpocząć odczytywanie, zapisywanie lub usuwanie etykiet z plików. Zobacz Programy obsługi plików w zestawie MIP SDK.