Bezeichnungsschutztypabfragen

In diesem Artikel wird beschrieben, wie Sie MIP SDK-APIs verwenden, um den Typ des auf einer Bezeichnung konfigurierten Schutzes zu identifizieren, damit Ihre Anwendung Verhalten und UI-Entscheidungen treffen kann, bevor Sie den Schutz anwenden. Außerdem werden die wichtigsten APIs und das erwartete Verhalten für jeden Schutztyp zusammengefasst.

Übersicht

Ab MIP SDK 1.18 macht die Label Klasse Methoden verfügbar, um zu bestimmen, welche Art von Schutz eine Bezeichnung zutrifft. Bisher konnten Anwendungen nur überprüfen HasRightsManagementPolicy() , ob eine Bezeichnung Schutz angewendet hat. Mit den neuen Methoden können Anwendungen zwischen den folgenden Schutztypen unterscheiden:

  • Nicht weiterleiten Schutz, der verhindert, dass der Empfänger den Inhalt weiterleiten, drucken oder kopieren kann.
  • Nur verschlüsseln Schutz, der den Inhalt verschlüsselt, aber die Aktionen des Empfängers nicht über die Entschlüsselung hinaus beschränkt.
  • Ad-hoc Schutz, in dem der Benutzer benutzerdefinierte Berechtigungen (benutzerdefinierte Rechte) zum Zeitpunkt der Anwendung definiert.

Mit diesen Methoden können Anwendungen intelligentere Entscheidungen darüber treffen, wie Bezeichnungen behandelt werden. Beispielsweise könnte eine E-Mail-Anwendung unterschiedliche UI-Optionen darstellen, je nachdem, ob eine Bezeichnung den Schutz "Nicht weiterleiten" im Vergleich zu "Nur verschlüsseln" anwendet.

Abfragen von Etikettenschutztypen

C++

Die mip::Label Klasse stellt die folgenden Methoden bereit:

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

Beispiel: Überprüfen von Bezeichnungsschutztypen

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)

Im .NET-Wrapper macht die Label Klasse übereinstimmende Eigenschaften verfügbar:

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

Beispiel: Überprüfen von Bezeichnungsschutztypen

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");
    }
}

Beziehung zu vorhandenen APIs

Diese neuen Methoden ergänzen die bestehende HasRightsManagementPolicy() Methode. Die Beziehung lautet:

  • Wenn HasRightsManagementPolicy()false zurückgibt, geben auch alle drei neuen Methoden false zurück.
  • Wenn HasRightsManagementPolicy()true zurückgibt, gibt mindestens eine der neuen Methoden true zurück, oder keine gibt true zurück, wenn das Label vorlagenbasierten Schutz verwendet.
  • Ein Label kann Ad-hoc-Berechtigungen (benutzerdefinierte Berechtigungen) mit "Nicht weiterleiten" oder "Nur verschlüsseln" kombinieren. In diesen kombinierten Fällen:
    • HasDoNotForwardProtection() gibt true zurück, wenn die Bezeichnung den Do Not Forward-Schutz verwendet, unabhängig davon, ob sie zusätzlich Ad-hoc-Verhalten einschließt.
    • HasEncryptOnlyProtection() gibt true zurück, wenn das Label den "Nur verschlüsseln"-Schutz anwendet, unabhängig davon, ob es auch Ad-hoc-Verhalten enthält.
    • HasAdhocProtection() gibt true nur zurück, wenn die Bezeichnung eigenständigen Ad-hoc-Schutz gilt (ohne Do Not Forward oder Encrypt Only).

Nächste Schritte