Microsoft Information Protection SDK - Concetti relativi al motore di File SDK

mip::FileEngine in MIP File SDK fornisce un'interfaccia a tutte le operazioni eseguite per conto di un'identità specificata. Aggiungere un motore per ogni utente che accede all'applicazione. Il motore esegue tutte le operazioni nel contesto di tale identità.

FileEngine ha due responsabilità principali: elencare le etichette per un utente autenticato e creare handler di file per eseguire operazioni sui file per conto dell'utente.

  • mip::FileEngine
  • ListSensitivityLabels(): ottiene l'elenco di etichette per il motore caricato.
  • CreateFileHandler(): crea un oggetto per un file o un mip::FileHandler flusso specifico.

Aggiungere un motore di file

Come descritto in oggetti profilo e motore, un motore può avere due stati: CREATED o LOADED. Se non è uno di questi due stati, non esiste. Per creare e caricare uno stato, effettuare una singola chiamata a FileProfile::LoadAsync. Se il motore esiste già nello stato memorizzato nella cache, è LOADED. Se non esiste, è CREATED e LOADED. CREATED implica che l'applicazione dispone di tutte le informazioni del servizio necessarie per caricare il motore. LOADED implica che tutte le strutture di dati necessarie per usare il motore esistono in memoria.

Crea impostazioni del motore file

Analogamente a un profilo, il motore richiede anche un oggetto impostazioni, mip::FileEngine::Settings. Questo oggetto archivia l'identificatore univoco del motore, l'implementazione mip::AuthDelegate , i dati client personalizzabili per il debug o la telemetria e, facoltativamente, le impostazioni locali.

Qui viene creato un FileEngine::Settings oggetto denominato engineSettings usando l'identità dell'utente dell'applicazione.

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.

Quando si creano engineSettings in questo modo, imposta anche in modo esplicito un engineId univoco:

engineSettings.SetEngineId(engineId);

L'uso del nome utente o del messaggio di posta elettronica garantisce che lo stesso motore venga caricato ogni volta che l'utente usa il servizio o l'applicazione.

È anche valido fornire un ID motore personalizzato:

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.

Come procedura consigliata, usare un primo parametro, id, che connette il motore all'utente associato. Un indirizzo di posta elettronica, un UPN o il GUID dell'oggetto di Microsoft Entra contribuisce a garantire che l'ID sia univoco e possa essere recuperato dallo stato locale senza effettuare una chiamata al servizio.

Aggiungere il motore di file

Per aggiungere il motore, torna al pattern promise/future usato per caricare il profilo. Anziché creare la promessa per mip::FileProfile, crearla usando 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();

Il codice aggiunge il motore per l'utente autenticato al profilo.

Elencare le etichette di riservatezza

Usando il motore aggiunto, è possibile elencare tutte le etichette di riservatezza disponibili per l'utente autenticato chiamando engine->ListSensitivityLabels().

ListSensitivityLabels() recupera l'elenco di etichette e attributi di tali etichette per un utente specifico del servizio. Il risultato viene archiviato in un vettore di std::shared_ptr<mip::Label>.

Per ulteriori informazioni, consultare il mip::Label riferimento della classe.

ListSensitivityLabels()

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

In alternativa, semplificato:

auto labels = engine->ListSensitivityLabels();

La stampa dei nomi mostra che l'applicazione ha eseguito correttamente il pull dei criteri dal servizio e ha ottenuto le etichette. Per applicare l'etichetta, è necessario l'identificatore dell'etichetta. Il codice seguente itera su tutte le etichette e visualizza name e id per ogni etichetta padre e figlia.

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

È possibile utilizzare la raccolta di mip::Label restituita da GetSensitivityLabels() per visualizzare tutte le etichette disponibili per l'utente e quindi, una volta selezionata un'etichetta, usare l'ID per applicare le etichette a un file.

Passaggi successivi

Ora che il profilo viene caricato, il motore viene aggiunto e le etichette sono disponibili, è possibile aggiungere un gestore per iniziare a leggere, scrivere o rimuovere etichette dai file. Per altre informazioni, vedere Gestori di file in MIP SDK.