Microsoft Information Protection SDK - Konsep mesin File SDK

mip::FileEngine dalam SDK File MIP menyediakan antarmuka untuk semua operasi yang dilakukan atas nama identitas tertentu. Tambahkan satu mesin untuk setiap pengguna yang masuk ke aplikasi. Mesin melakukan semua operasi dalam konteks identitas tersebut.

FileEngine memiliki dua tanggung jawab utama: mendaftar label untuk pengguna terautentikasi dan membuat pengendali file untuk melakukan operasi pada 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 Profil dan objek 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, lakukan satu panggilan ke FileProfile::LoadAsync. Jika mesin sudah ada dalam status cache, mesin tersebut berada di LOADED. Jika tidak ada, maka hasilnya adalah 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 menggunakan mesin ada dalam memori.

Membuat pengaturan mesin file

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

Di sini kita membuat objek yang FileEngine::Settings disebut engineSettings 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 engineSettings dengan cara ini, juga secara eksplisit mengatur engineId unik:

engineSettings.SetEngineId(engineId);

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

Selain itu, menyediakan ID mesin kustom juga valid.

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, gunakan parameter pertama, id, yang menghubungkan mesin ke pengguna terkait. Alamat email, UPN, atau GUID objek Microsoft Entra membantu memastikan bahwa ID tersebut unik dan dapat dimuat dari status lokal tanpa memanggil layanan.

Menambahkan mesin file

Untuk menambahkan engine, gunakan kembali pola promise/future yang digunakan untuk memuat profil. Daripada membuat janji untuk mip::FileProfile, buat dengan 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();

Kode menambahkan engine untuk pengguna terautentikasi ke profil.

Mencantumkan label sensitivitas

Dengan menggunakan mesin yang ditambahkan, Anda dapat mencantumkan semua label sensitivitas yang tersedia untuk pengguna yang diautentikasi dengan memanggil engine->ListSensitivityLabels().

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

Untuk informasi selengkapnya, lihat mip::Label referensi kelas.

DaftarLabelSensitivitas()

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

Atau, disederhanakan:

auto labels = engine->ListSensitivityLabels();

Mencetak nama menunjukkan bahwa aplikasi berhasil menarik kebijakan dari layanan dan mendapatkan label. Untuk menerapkan label, Anda memerlukan pengidentifikasi label. Kode berikut berulang melalui semua label dan 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;
  }
}

Anda dapat menggunakan koleksi mip::Label yang dikembalikan oleh GetSensitivityLabels() 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 label tersedia, Anda dapat menambahkan handler untuk mulai membaca, menulis, atau menghapus label dari file. Untuk informasi lebih lanjut, lihat Penanganan file di MIP SDK.