Consultas de tipo de protección de etiquetas

En este artículo se describe cómo usar las API del SDK de MIP para identificar el tipo de protección configurado en una etiqueta para que la aplicación pueda tomar decisiones de comportamiento e interfaz de usuario antes de aplicar la protección. También resume las API clave y el comportamiento esperado para cada tipo de protección.

Visión general

A partir del SDK de MIP 1.18, la Label clase expone métodos para determinar qué tipo de protección se aplica una etiqueta. Anteriormente, las aplicaciones solo podían comprobar HasRightsManagementPolicy() si una etiqueta aplicaba alguna protección. Los nuevos métodos permiten a las aplicaciones diferenciar entre los siguientes tipos de protección:

  • No reenviar Protección que impide que el destinatario reenvíe, imprima o copie el contenido.
  • Cifrar solo Protección que cifra el contenido, pero no restringe las acciones del destinatario más allá del descifrado.
  • Ad hoc Protección en la que el usuario define permisos personalizados (derechos definidos por el usuario) en el momento de la aplicación.

Estos métodos permiten a las aplicaciones tomar decisiones más inteligentes sobre cómo controlar las etiquetas. Por ejemplo, una aplicación de correo electrónico podría presentar diferentes opciones de interfaz de usuario en función de si una etiqueta aplica la protección de No reenviar frente a Protegido solo con cifrado.

Consulta de tipos de protección de etiquetas

C++

La mip::Label clase proporciona los métodos siguientes:

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

Ejemplo: Inspección de tipos de protección de etiquetas

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)

En el contenedor de .NET, la Label clase expone las propiedades coincidentes:

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

Ejemplo: Inspección de tipos de protección de etiquetas

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

Relación con las API existentes

Estos nuevos métodos complementan el método existente HasRightsManagementPolicy() . La relación es:

  • Si HasRightsManagementPolicy() devuelve false, los tres métodos nuevos también devuelven false.
  • Si HasRightsManagementPolicy() devuelve true, al menos uno de los nuevos métodos devuelve trueo ninguno true si la etiqueta usa protección basada en plantillas.
  • Una etiqueta puede combinar permisos ad hoc (permisos definidos por el usuario) con No reenviar o sólo cifrar. En estos casos combinados:
    • HasDoNotForwardProtection() devuelve true cuando la etiqueta aplica la protección No reenviar, sin importar si incluye comportamiento ad hoc.
    • HasEncryptOnlyProtection() devuelve true cuando la etiqueta aplica la protección Cifrar solo, independientemente de si también incluye o no el comportamiento ad hoc.
    • HasAdhocProtection() devuelve true solo cuando la etiqueta aplica protección ad hoc independiente, sin Do Not Forward o Encrypt Only.

Pasos siguientes