Query sui tipi di protezione delle etichette

Questo articolo descrive come usare le API DI MIP SDK per identificare il tipo di protezione configurato in un'etichetta in modo che l'applicazione possa prendere decisioni relative al comportamento e all'interfaccia utente prima di applicare la protezione. Riepiloga anche le API chiave e il comportamento previsto per ogni tipo di protezione.

Informazioni generali

A partire da MIP SDK 1.18, la Label classe espone i metodi per determinare il tipo di protezione applicato da un'etichetta. In precedenza, le applicazioni potevano controllare HasRightsManagementPolicy() solo se un'etichetta applicava qualsiasi protezione. I nuovi metodi consentono alle applicazioni di distinguere tra i tipi di protezione seguenti:

  • Non inoltrare Protezione che impedisce al destinatario di inoltrare, stampare o copiare il contenuto.
  • Solo crittografia Protezione che crittografa il contenuto, ma non limita le azioni del destinatario oltre la decrittografia.
  • Ad hoc Protezione in cui l'utente definisce autorizzazioni personalizzate (diritti definiti dall'utente) al momento dell'applicazione.

Questi metodi consentono alle applicazioni di prendere decisioni più intelligenti su come gestire le etichette. Ad esempio, un'applicazione di posta elettronica potrebbe presentare diverse opzioni dell'interfaccia utente a seconda che un'etichetta applichi la protezione Non inoltrare rispetto alla protezione Solo crittografia.

Esecuzione di query sui tipi di protezione delle etichette

C++

La mip::Label classe fornisce i metodi seguenti:

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

Esempio: Controllo dei tipi di protezione delle etichette

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)

Nel wrapper .NET la Label classe espone le proprietà corrispondenti:

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

Esempio: Controllo dei tipi di protezione delle etichette

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

Relazione con le API esistenti

Questi nuovi metodi integrano il metodo esistente HasRightsManagementPolicy() . La relazione è:

  • Se HasRightsManagementPolicy() restituisce false, tutti e tre i nuovi metodi restituiscono falseanche .
  • Se HasRightsManagementPolicy() restituisce true, almeno uno dei nuovi metodi restituisce trueo nessuna restituisce true se l'etichetta usa la protezione basata su modello.
  • Un'etichetta può combinare "ad-hoc" (autorizzazioni definite dall'utente) con "Non inoltrare" o "Solo crittografia". In questi casi combinati:
    • HasDoNotForwardProtection() restituisce true quando l'etichetta applica la protezione Non inoltrare, indipendentemente dal fatto che includa anche un comportamento ad hoc.
    • HasEncryptOnlyProtection() restituisce true quando l'etichetta applica la protezione Encrypt Only, anche se include un comportamento ad hoc.
    • HasAdhocProtection() restituisce true solo quando l'etichetta applica una protezione ad hoc indipendente (senza Non inoltrare o Solo crittografare).

Passaggi successivi