Bagikan melalui


Microsoft Information Protection SDK - Konsep mesin SDK Kebijakan

mip::PolicyEngine menerapkan semua operasi yang dapat dilakukan SDK Kebijakan, dengan pengecualian memuat profil.

Implementasi: Menambahkan Mesin Kebijakan

Implementasi: Membuat mesin kebijakan Pengaturan

Mirip dengan profil, mesin juga memerlukan objek pengaturan, mip::PolicyEngine::Settings. Objek ini menyimpan pengidentifikasi mesin unik, objek implementasi Anda mip::AuthDelegate , 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:

PolicyEngine::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:

PolicyEngine::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, id, harus menjadi sesuatu yang memungkinkan mesin untuk dengan mudah terhubung ke pengguna terkait, sebaiknya nama utama pengguna.

Implementasi: Tambahkan Mesin Kebijakan

Untuk menambahkan mesin, kita akan kembali ke pola future/promise yang digunakan untuk memuat profil. Alih-alih membuat janji untuk mip::Profile, kita akan menggunakan mip::PolicyEngine.


  // Auto profile will be std::shared_ptr<mip::Profile>.
  auto profile = profileFuture.get();

  // Create the delegate
  auto authDelegateImpl = std::make_shared<sample::auth::AuthDelegateImpl>(appInfo, userName, password);


  // Create the PolicyEngine::Settings object.
  PolicyEngine::Settings engineSettings("UniqueID", authDelegateImpl, "");

  // Create a promise for std::shared_ptr<mip::PolicyEngine>.
  auto enginePromise = std::make_shared<std::promise<std::shared_ptr<mip::PolicyEngine>>>();

  // 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::PolicyEngine>.
  auto engine = engineFuture.get();

Hasil akhir kode di atas adalah bahwa kami telah berhasil menambahkan mesin untuk pengguna yang diautentikasi ke profil.

Implementasi: Mencantumkan 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>.

Implementasi: ListSensitivityLabels()

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

Implementasi: Mencetak Label

//Iterate through all labels in the vector
for (const auto& label : labels) {
  //print the label name
  cout << label->GetName() << endl;
  //Iterate through all child labels
  for (const auto& child : label->GetChildren()) {
    //Print the label with some formatting
    cout << "->  " << child->GetName() << endl;
  }
}

Mencetak nama adalah cara mudah untuk menunjukkan bahwa kami berhasil menarik kebijakan dari layanan dan mampu mendapatkan label. Untuk menerapkan label, pengidentifikasi label diperlukan. Memodifikasi cuplikan di atas untuk mengembalikan hasil ID label di:

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 ListSensitivityLabels() dapat digunakan untuk menampilkan semua label yang tersedia untuk pengguna lalu, ketika dipilih, gunakan ID untuk menerapkan label ke file.