Aracılığıyla paylaş


Microsoft Information Protection SDK - Dosya SDK'sı altyapısı kavramları

MIP Dosya SDK'sı içindeki mip::FileEngine, belirtilen kimlik adına gerçekleştirilen tüm işlemler için bir arabirim sağlar. Uygulamada oturum açabilen her kullanıcı için bir altyapı eklenir ve altyapının gerçekleştirdiği tüm işlemler bu kimlik bağlamında gerçekleştirilir.

iki FileEngine birincil sorumluluk içerir: Kimliği doğrulanmış bir kullanıcının etiketlerini listeleme ve kullanıcı adına dosya işlemleri gerçekleştirmek için dosya işleyicileri oluşturma.

  • mip::FileEngine
  • ListSensitivityLabels(): Yüklenen motor için etiketlerin listesini alır.
  • CreateFileHandler(): Belirli bir dosya veya akış için bir mip::FileHandler oluşturur.

Dosya Motoru Ekleme

Profil ve Altyapı nesneleri bölümünde açıklandığı gibi, bir altyapının iki durumu olabilir: CREATED veya LOADED. Bu iki eyaletten biri değilse, yok demektir. Bir durumu hem oluşturmak hem de yüklemek için FileProfile::LoadAsync'a tek bir kez çağrı yapmak yeterlidir. Motor önbelleğe alınmış durumda zaten varsa, LOADED olur. Eğer yoksa, CREATED ve LOADED olacaktır. CREATED uygulamanın, motoru yüklemek için gereken hizmetten gelen tüm bilgilere sahip olduğunu gösterir. LOADED altyapıdan yararlanmak için gereken tüm veri yapılarının bellekte oluşturulduğunu gösterir.

Dosya Motor Ayarları Oluştur

Bir profile benzer şekilde, altyapı da bir ayarlar nesnesi gerektirir. mip::FileEngine::Settings Bu nesne benzersiz altyapı tanımlayıcısını, mip::AuthDelegate uygulamayı, hata ayıklama veya telemetri için kullanılabilecek özelleştirilebilir istemci verilerini ve isteğe bağlı olarak yerel ayarı depolar.

Burada uygulama kullanıcısının kimliğini kullanarak engineSettingsFileEngine::Settingsbir nesne oluşturuyoruz.

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.

EngineSettings'i bu şekilde oluştururken, aşağıdakiler aracılığıyla açıkça benzersiz bir engineId ayarlamak da önemlidir:

engineSettings.SetEngineId(engineId);

Kullanıcı adı veya e-postanın kullanılması, kullanıcı hizmeti veya uygulamayı her kullandığında aynı altyapının yüklendiğinden emin olmak için yardımcı olur.

Ayrıca özelleştirilmiş bir motor kimliği sağlamak da geçerlidir.

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 iyi yöntem olarak, ilk parametre id, motorun ilişkili kullanıcıya kolayca bağlanmasına olanak tanıyan bir şey olmalıdır. E-posta adresi, UPN veya AAD nesne GUID'si gibi bir şey, kimliğin hem benzersiz olmasını hem de hizmeti çağırmadan yerel durumdan yüklenebilmesini sağlar.

Dosya Motorunu Ekle

Motoru eklemek için, profili yüklemek üzere kullanılan promise/future desenine geri döneceğiz. mip::FileProfile için söz vermek yerine, mip::FileEngine kullanılarak oluşturulur.

  //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();

Yukarıdaki kodun nihai sonucu, kimliği doğrulanmış kullanıcı için motorun profile eklenmesidir.

Duyarlılık Etiketlerini Listeleme

Eklenen altyapıyı kullanarak, kimliği doğrulanmış kullanıcının kullanabileceği tüm duyarlılık etiketlerini çağırarak engine->ListSensitivityLabels()listelemek artık mümkündür.

ListSensitivityLabels() , hizmetten belirli bir kullanıcı için bu etiketlerin etiket ve özniteliklerinin listesini getirir. Sonuç, vektörde std::shared_ptr<mip::Label>depolanır.

Daha fazla bilgi için buraya bakın mip::Label.

ListSensitivityLabels()

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

Veya basitleştirilmiş:

auto labels = engine->ListSensitivityLabels();

İsimleri yazdırmak, politikayı hizmetten başarıyla çektiğimizi ve etiketleri alabildiğimizi göstermenin kolay bir yoludur. Etiketi uygulamak için etiket tanımlayıcısı gereklidir. Aşağıdaki kod, tüm etiketlerde yinelenir ve her üst ve alt etiket için name ve id değerlerini görüntüler.

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

GetSensitivityLabels() tarafından döndürülen mip::Label koleksiyonu, kullanıcının kullanabileceği tüm etiketleri görüntülemek için kullanılabilir ve seçildiğinde, bir dosyaya etiket uygulamak için kimlik kullanılabilir.

Sonraki Adımlar

Artık profil yüklendiğine, altyapı eklendiğine ve etiketlerimiz olduğuna göre, dosyaları okumaya, yazmaya veya dosyalardan etiketleri kaldırmaya başlamak için bir işleyici ekleyebiliriz. Bkz. MIP SDK'sında dosya işleyicileri.