Microsoft Information Protection SDK - Concepts du moteur du SDK de fichier

Le mip::FileEngine SDK de fichier MIP fournit une interface pour toutes les opérations effectuées au nom d’une identité spécifiée. Ajoutez un moteur pour chaque utilisateur qui se connecte à l’application. Le moteur effectue toutes les opérations dans le contexte de cette identité.

Le FileEngine a deux responsabilités principales : répertorier les libellés d’un utilisateur authentifié et créer des gestionnaires de fichiers pour effectuer des opérations sur les fichiers pour le compte de l’utilisateur.

  • mip::FileEngine
  • ListSensitivityLabels() : obtient la liste des étiquettes pour le moteur chargé.
  • CreateFileHandler() : crée un mip::FileHandler pour un fichier ou un flux spécifique.

Ajouter un moteur de fichiers

Comme décrit dans les objets Profil et moteur, un moteur peut avoir deux états - CREATED ou LOADED. Si ce n’est pas l’un de ces deux états, il n’existe pas. Pour créer et charger un état, effectuez un seul appel à FileProfile::LoadAsync. Si le moteur existe déjà dans le cache, c’est LOADED. S’il n’existe pas, c’est CREATED et LOADED. CREATED implique que l’application dispose de toutes les informations du service nécessaire pour charger le moteur. LOADED implique que toutes les structures de données nécessaires pour utiliser le moteur existent en mémoire.

Créer des paramètres du moteur de fichiers

Comme pour un profil, le moteur nécessite également un objet de paramètres, mip::FileEngine::Settings. Cet objet stocke l’identificateur unique du moteur, l’implémentation, les mip::AuthDelegate données client personnalisables pour le débogage ou la télémétrie, et éventuellement les paramètres régionaux.

Ici, nous créons un objet FileEngine::Settings appelé engineSettings à l’aide de l’identité de l’utilisateur de l’application.

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.

Lors de la création de engineSettings de cette manière, définissez également explicitement un engineId unique :

engineSettings.SetEngineId(engineId);

L’utilisation du nom d’utilisateur ou de l’e-mail permet de s’assurer que le même moteur se charge chaque fois que l’utilisateur utilise le service ou l’application.

Il est également possible de fournir un ID de moteur personnalisé :

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.

En guise de meilleure pratique, utilisez un premier paramètre, idqui connecte le moteur à l’utilisateur associé. Une adresse e-mail, un UPN ou un GUID d’objet Microsoft Entra permet de s’assurer que l’ID est unique et peut être chargé à partir de l’état local sans appeler le service.

Ajouter le moteur de fichiers

Pour ajouter le moteur, revenez au modèle promesse/futur utilisé pour charger le profil. Plutôt que de créer la promesse pour mip::FileProfile, créez-la à l’aide de 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();

Le code ajoute le moteur de l’utilisateur authentifié au profil.

Répertorier les étiquettes de confidentialité

À l’aide du moteur ajouté, vous pouvez répertorier toutes les étiquettes de confidentialité disponibles pour l’utilisateur authentifié en appelant engine->ListSensitivityLabels().

ListSensitivityLabels() récupère la liste des étiquettes et des attributs de ces étiquettes pour un utilisateur spécifique du service. Le résultat est stocké dans un vecteur de std::shared_ptr<mip::Label>.

Pour plus d’informations, consultez la mip::Labelréférence de la classe.

ListSensitivityLabels()

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

Ou, en simplifiant :

auto labels = engine->ListSensitivityLabels();

L’impression des noms indique que l’application a extrait avec succès la stratégie depuis le service et a obtenu les étiquettes. Pour appliquer l’étiquette, vous avez besoin de l’identificateur d’étiquette. Le code suivant itère sur toutes les étiquettes et affiche name et id pour chaque étiquette parente et enfant.

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

Vous pouvez utiliser la collection de mip::Label renvoyée par GetSensitivityLabels() pour afficher toutes les étiquettes disponibles pour l’utilisateur, puis, une fois qu’une étiquette est sélectionnée, utiliser l’ID pour appliquer des étiquettes à un fichier.

Étapes suivantes

Maintenant que le profil est chargé, le moteur est ajouté et les étiquettes sont disponibles, vous pouvez ajouter un gestionnaire pour commencer à lire, écrire ou supprimer des étiquettes des fichiers. Pour plus d’informations, consultez Les gestionnaires de fichiers dans le Kit de développement logiciel (SDK) MIP.