Bagikan melalui


Microsoft Information Protection SDK - Konsep mesin File SDK

mip::FileEngine dalam MIP File SDK menyediakan antarmuka untuk semua operasi yang dilakukan atas nama identitas tertentu. Satu mesin akan ditambahkan untuk setiap pengguna yang masuk ke aplikasi dan semua operasi yang dilakukan mesin akan dilakukan dalam konteks identitas tersebut.

FileEngine memiliki dua tanggung jawab utama: Mencantumkan label untuk pengguna yang diautentikasi dan membuat penangan file untuk melakukan operasi file atas nama pengguna.

  • mip::FileEngine
  • ListSensitivityLabels(): Mendapatkan daftar label untuk mesin yang dimuat.
  • CreateFileHandler(): Membuat mip::FileHandler untuk file atau aliran tertentu.

Menambahkan Mesin File

Seperti yang tercakup dalam objek Profil dan Mesin, mesin dapat memiliki dua status - CREATED atau LOADED. Jika bukan salah satu dari dua negara bagian itu, itu tidak ada. Untuk membuat dan memuat status, anda hanya perlu melakukan satu panggilan ke FileProfile::LoadAsync. Jika mesin sudah ada dalam status cache, itu akan menjadi LOADED. Jika tidak ada, itu akan menjadi CREATED dan LOADED. CREATED menyiratkan bahwa aplikasi memiliki semua informasi dari layanan yang diperlukan untuk memuat mesin. LOADED menyiratkan bahwa semua struktur data yang diperlukan untuk memanfaatkan mesin telah dibuat dalam memori.

Membuat Pengaturan Mesin File

Mirip dengan profil, mesin juga memerlukan objek pengaturan, mip::FileEngine::Settings. Objek ini menyimpan pengidentifikasi mesin unik, mip::AuthDelegate implementasi, data klien yang dapat disesuaikan yang dapat digunakan untuk penelusuran kesalahan atau telemetri, dan, secara opsional, lokal.

Di sini kita membuat objek yang FileEngine::Settings disebut mesin Pengaturan menggunakan identitas pengguna aplikasi.

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.

Saat membuat mesin Pengaturan dengan cara ini, penting untuk juga secara eksplisit mengatur engineId unik melalui:

engineSettings.SetEngineId(engineId);

Menggunakan nama pengguna atau email membantu memastikan bahwa mesin yang sama dimuat setiap kali pengguna menggunakan layanan atau aplikasi.

Valid juga menyediakan ID mesin kustom:

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.

Sebagai praktik terbaik, parameter pertama, , idharus menjadi sesuatu yang memungkinkan mesin untuk dengan mudah terhubung ke pengguna terkait. Sesuatu seperti alamat email, UPN, atau GUID objek AAD akan memastikan bahwa ID unik dan dapat dimuat dari status lokal tanpa memanggil layanan.

Menambahkan Mesin File

Untuk menambahkan mesin, kita akan kembali ke pola janji/masa depan yang digunakan untuk memuat profil. Daripada membuat janji untuk mip::FileProfile, itu dibuat menggunakan 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();

Hasil akhir kode di atas adalah bahwa mesin untuk pengguna yang diautentikasi akan ditambahkan ke profil.

Daftar Label Sensitivitas

Dengan menggunakan mesin tambahan, sekarang dimungkinkan untuk mencantumkan semua label sensitivitas yang tersedia untuk pengguna yang diautentikasi dengan memanggil engine->ListSensitivityLabels().

ListSensitivityLabels() akan mengambil daftar label dan atribut label tersebut untuk pengguna tertentu dari layanan. Hasilnya disimpan dalam vektor std::shared_ptr<mip::Label>.

Baca selengkapnya di sini di mip::Label.

ListSensitivityLabels()

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

Atau, disederhanakan:

auto labels = engine->ListSensitivityLabels();

Mencetak nama adalah cara mudah untuk menunjukkan bahwa kami berhasil menarik kebijakan dari layanan dan mampu mendapatkan label. Untuk menerapkan label, pengidentifikasi label diperlukan. Kode di bawah ini berulang melalui semua label, menampilkan name dan id untuk setiap label induk dan anak.

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

Kumpulan mip::Label yang dikembalikan oleh GetSensitivityLabels() dapat digunakan untuk menampilkan semua label yang tersedia untuk pengguna lalu, ketika dipilih, gunakan ID untuk menerapkan label ke file.

Langkah berikutnya

Sekarang setelah profil dimuat, mesin ditambahkan, dan kami memiliki label, kami dapat menambahkan handler untuk mulai membaca, menulis, atau menghapus label dari file. Lihat Penangan file di MIP SDK.