Kueri jenis perlindungan label

Artikel ini menjelaskan cara menggunakan MIP SDK API untuk mengidentifikasi jenis perlindungan yang dikonfigurasi pada label sehingga aplikasi Anda dapat membuat perilaku dan keputusan UI sebelum menerapkan perlindungan. Ini juga meringkas API utama dan perilaku yang diharapkan untuk setiap jenis perlindungan.

Ikhtisar

Mulai dari MIP SDK 1.18, Label kelas mengekspos metode untuk menentukan jenis perlindungan apa yang diterapkan label. Sebelumnya, aplikasi hanya dapat memeriksa HasRightsManagementPolicy() untuk menentukan apakah label menerapkan perlindungan apa pun. Metode baru memungkinkan aplikasi untuk membedakan antara jenis perlindungan berikut:

  • Jangan Teruskan Perlindungan yang mencegah penerima meneruskan, mencetak, atau menyalin konten.
  • Enkripsi Saja Perlindungan yang mengenkripsi konten tetapi tidak membatasi tindakan penerima di luar dekripsi.
  • Ad-hoc Perlindungan di mana pengguna menentukan izin kustom (hak yang ditentukan pengguna) pada saat aplikasi.

Metode ini memungkinkan aplikasi membuat keputusan yang lebih cerdas tentang cara menangani label. Misalnya, aplikasi email dapat menyajikan opsi UI yang berbeda tergantung pada apakah label berlaku Jangan Teruskan versus Perlindungan Enkripsi Saja.

Mengkueri jenis perlindungan label

C++

Kelas ini mip::Label menyediakan metode berikut:

// Returns true if the label applies any protection.
bool HasRightsManagementPolicy() const;

// Returns true if the label applies Do Not Forward protection.
bool HasDoNotForwardProtection() const;

// Returns true if the label applies Encrypt Only protection.
bool HasEncryptOnlyProtection() const;

// Returns true if the label applies ad-hoc (user-defined) protection.
bool HasAdhocProtection() const;

Contoh: Memeriksa jenis perlindungan label

for (const auto& label : engine->ListSensitivityLabels()) {
    std::cout << "Label: " << label->GetName() << std::endl;

    if (label->HasRightsManagementPolicy()) {
        if (label->HasDoNotForwardProtection()) {
            std::cout << "  Protection type: Do Not Forward" << std::endl;
        } else if (label->HasEncryptOnlyProtection()) {
            std::cout << "  Protection type: Encrypt Only" << std::endl;
        } else if (label->HasAdhocProtection()) {
            std::cout << "  Protection type: Ad-hoc (user-defined permissions)" << std::endl;
        } else {
            std::cout << "  Protection type: Template-based" << std::endl;
        }
    } else {
        std::cout << "  No protection" << std::endl;
    }
}

C# (.NET)

Dalam pembungkus .NET, kelas Label mengekspos properti yang cocok:

label.HasRightsManagementPolicy  // bool
label.HasDoNotForwardProtection  // bool
label.HasEncryptOnlyProtection   // bool
label.HasAdhocProtection         // bool

Contoh: Memeriksa jenis perlindungan label

foreach (var label in engine.SensitivityLabels)
{
    Console.WriteLine($"Label: {label.Name}");

    if (label.HasRightsManagementPolicy)
    {
        if (label.HasDoNotForwardProtection)
            Console.WriteLine("  Protection type: Do Not Forward");
        else if (label.HasEncryptOnlyProtection)
            Console.WriteLine("  Protection type: Encrypt Only");
        else if (label.HasAdhocProtection)
            Console.WriteLine("  Protection type: Ad-hoc (user-defined permissions)");
        else
            Console.WriteLine("  Protection type: Template-based");
    }
    else
    {
        Console.WriteLine("  No protection");
    }
}

Hubungan dengan API yang ada

Metode baru ini melengkapi metode yang HasRightsManagementPolicy() ada. Hubungannya adalah:

  • Jika HasRightsManagementPolicy() mengembalikan false, ketiga metode baru juga mengembalikan false.
  • Jika HasRightsManagementPolicy() mengembalikan true, setidaknya salah satu metode baru mengembalikan true, atau tidak ada pengembalian true jika label menggunakan perlindungan berbasis templat.
  • Label dapat menggabungkan ad-hoc (izin yang ditentukan pengguna) dengan Jangan Teruskan (Do Not Forward) atau Hanya Enkripsi. Dalam kasus gabungan ini:
    • HasDoNotForwardProtection() true mengembalikan nilai ketika label menerapkan perlindungan "Do Not Forward", apakah label tersebut juga menyertakan perilaku ad-hoc atau tidak.
    • HasEncryptOnlyProtection() mengembalikan true ketika label menerapkan perlindungan Enkripsi Saja, apakah label tersebut juga menyertakan perilaku ad-hoc atau tidak.
    • HasAdhocProtection() true hanya mengembalikan ketika label menerapkan perlindungan ad-hoc yang berdiri sendiri (tanpa Jangan Teruskan atau Enkripsi Saja).

Langkah berikutnya