Dela via


Microsoft Information Protection SDK – begrepp för Fil-SDK-motor

I mip::FileEngine MIP-fil-SDK:t finns ett gränssnitt för alla åtgärder som utförs för en angiven identitet. En motor läggs till för varje användare som loggar in i programmet och alla åtgärder som motorn utför utförs i kontexten för den identiteten.

Har FileEngine två primära ansvarsområden: Lista etiketter för en autentiserad användare och skapa filhanterare för att utföra filåtgärder för användarens räkning.

  • mip::FileEngine
  • ListSensitivityLabels(): Hämtar listan med etiketter för den inlästa motorn.
  • CreateFileHandler(): Skapar en mip::FileHandler för en specifik fil eller dataström.

Lägga till en filmotor

Som beskrivs i profil- och motorobjekt kan en motor ha två tillstånd – CREATED eller LOADED. Om det inte är ett av dessa två tillstånd finns det inte. För att både skapa och läsa in ett tillstånd är det bara nödvändigt att göra ett enda anrop till FileProfile::LoadAsync. Om motorn redan finns i cachelagrat tillstånd blir LOADEDden . Om den inte finns blir CREATED den och LOADED. CREATED innebär att programmet har all information från tjänsten som behövs för att läsa in motorn. LOADED innebär att alla datastrukturer som krävs för att utnyttja motorn har skapats i minnet.

Skapa filmotor Inställningar

Precis som en profil kräver motorn också ett inställningsobjekt, mip::FileEngine::Settings. Det här objektet lagrar den unika motoridentifieraren, mip::AuthDelegate implementeringen, anpassningsbara klientdata som kan användas för felsökning eller telemetri och, om du vill, språkvarianten.

Här skapar vi ett FileEngine::Settings objekt med namnet engine Inställningar med hjälp av programanvändarens identitet.

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.

När du skapar motorn Inställningar på det här sättet är det viktigt att du också uttryckligen anger ett unikt engineId via:

engineSettings.SetEngineId(engineId);

Genom att använda användarnamnet eller e-postmeddelandet ser du till att samma motor läses in varje gång användaren använder tjänsten eller programmet.

Giltigt är också att tillhandahålla ett anpassat motor-ID:

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.

Bästa praxis är att den första parametern, id, är något som gör att motorn enkelt kan anslutas till den associerade användaren. Något som e-postadress, UPN eller AAD-objekt-GUID skulle se till att ID:t är både unikt och kan läsas in från lokalt tillstånd utan att tjänsten anropas.

Lägg till filmotorn

Om du vill lägga till motorn går vi tillbaka till det löftes-/framtida mönster som används för att läsa in profilen. I stället för att skapa löftet för mip::FileProfileskapas det med hjälp av 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();

Slutresultatet av koden ovan är att motorn för den autentiserade användaren läggs till i profilen.

Lista känslighetsetiketter

Med den tillagda motorn går det nu att lista alla känslighetsetiketter som är tillgängliga för den autentiserade användaren genom att anropa engine->ListSensitivityLabels().

ListSensitivityLabels() hämtar listan med etiketter och attribut för dessa etiketter för en specifik användare från tjänsten. Resultatet lagras i en vektor av std::shared_ptr<mip::Label>.

Läs mer här om mip::Label.

ListSensitivityLabels()

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

Eller förenklat:

auto labels = engine->ListSensitivityLabels();

Att skriva ut namnen är ett enkelt sätt att visa att vi har hämtat principen från tjänsten och kunde hämta etiketterna. Om du vill använda etiketten krävs etikettidentifieraren. Koden nedan itererar genom alla etiketter och visar name och för varje överordnad och underordnad id etikett.

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

Samlingen som mip::Label returneras av GetSensitivityLabels() kan användas för att visa alla etiketter som är tillgängliga för användaren och sedan använda ID:t för att tillämpa etiketter på en fil när du väljer det.

Nästa steg

Nu när profilen har lästs in har motorn lagts till och vi har etiketter, vi kan lägga till en hanterare för att börja läsa, skriva eller ta bort etiketter från filer. Se Filhanterare i MIP SDK.