Microsoft Information Protection SDK — pojęcia dotyczące silnika SDK plików

Element mip::FileEngine w zestawie SDK plików MIP udostępnia interfejs do wszystkich operacji wykonywanych w imieniu określonej tożsamości. Dodaj jeden mechanizm dla każdego użytkownika, który loguje się do aplikacji. Silnik wykonuje wszystkie operacje 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(): tworzy mip::FileHandler element dla określonego pliku lub strumienia.

Dodaj mechanizm plików

Jak opisano w temacie Profile i obiekty aparatu, 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, wykonaj jedno wywołanie metody FileProfile::LoadAsync. Jeśli silnik już istnieje w pamięci podręcznej, to LOADED. Jeśli to nie istnieje, to CREATED i LOADED. CREATED oznacza, że aplikacja ma wszystkie informacje od usługi potrzebne do załadowania silnika. LOADED oznacza, że wszystkie struktury danych niezbędne do korzystania z silnika znajdują się w pamięci.

Utwórz ustawienia mechanizmu plików

Podobnie jak w przypadku profilu, silnik wymaga również obiektu ustawień, mip::FileEngine::Settings. Ten obiekt przechowuje unikatowy identyfikator aparatu, implementację mip::AuthDelegate , dostosowywalne dane klienta do debugowania lub telemetrii oraz 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 elementu `engineSettings` w ten sposób należy również jawnie ustawić unikatowy parametr `engineId`:

engineSettings.SetEngineId(engineId);

Użycie nazwy użytkownika lub adresu e-mail pomaga zapewnić, że ten sam silnik jest wczytywany 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.

Najlepszą praktyką jest użycie jako pierwszego parametru id, który łączy silnik z powiązanym użytkownikiem. Adres e-mail, UPN lub identyfikator GUID obiektu Microsoft Entra pomagają zapewnić, że identyfikator jest unikatowy i może zostać wczytany ze stanu lokalnego bez wywoływania usługi.

Dodaj silnik plików

Aby dodać silnik, wróć do wzorca promise/future zastosowanego do wczytania profilu. Zamiast tworzyć obietnicę dla mip::FileProfile, utwórz ją za pomocą 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();

Kod dodaje silnik dla uwierzytelnionego użytkownika do profilu.

Lista etykiet poufności

Za pomocą dodanego silnika można wyświetlić listę wszystkich etykiet poufności dostępnych dla uwierzytelnionego użytkownika, wywołując 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>.

Aby uzyskać więcej informacji, zobacz mip::Labeldokumentację klasy.

ListaEtykietWrażliwości()

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

Lub, uproszczone:

auto labels = engine->ListSensitivityLabels();

Drukowanie nazw pokazuje, że aplikacja pomyślnie ściągnęła zasady z usługi i uzyskała etykiety. Aby zastosować etykietę, potrzebny jest identyfikator etykiety. Poniższy kod iteruje po wszystkich etykietach i wyświetla name oraz id dla każdej etykiety nadrzędnej oraz 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;
  }
}

Możesz użyć kolekcji mip::Label zwróconej przez GetSensitivityLabels(), aby wyświetlić wszystkie etykiety dostępne dla użytkownika, a następnie po wybraniu etykiety użyć identyfikatora do przypisania etykiet do pliku.

Następne kroki

Teraz, gdy profil jest załadowany, silnik został dodany, a etykiety są dostępne, możesz dodać obsługę, aby rozpocząć odczytywanie, zapisywanie lub usuwanie etykiet z plików. Aby uzyskać więcej informacji, zobacz Programy obsługi plików w zestawie MIP SDK.