ラベルの保護タイプに関するクエリ

この記事では、MIP SDK API を使用してラベルに構成されている保護の種類を識別し、アプリケーションが保護を適用する前に動作と UI の決定を行えるようにする方法について説明します。 また、各保護の種類に対する主要な API と予期される動作の概要も示します。

概要

MIP SDK 1.18 以降、 Label クラスは、ラベルが適用される保護の種類を決定するメソッドを公開します。 以前は、アプリケーションでは、ラベルが保護を適用したかどうかを判断するために、 HasRightsManagementPolicy() のみを確認できました。 新しいメソッドを使用すると、アプリケーションは次の保護の種類を区別できます。

  • 転送しない 受信者がコンテンツを転送、印刷、またはコピーできないようにする保護。
  • 暗号化のみ コンテンツを暗号化するが、復号化を超えて受信者のアクションを制限しない保護。
  • アドホック アプリケーション時にユーザーがカスタム アクセス許可 (ユーザー定義権限) を定義する保護。

これらのメソッドを使用すると、アプリケーションはラベルの処理方法に関するよりインテリジェントな決定を行うことができます。 たとえば、電子メール アプリケーションでは、ラベルが転送不可保護と暗号化のみの保護のどちらを適用するかに応じて、さまざまな UI オプションを表示できます。

ラベル保護の種類のクエリ

C++

mip::Label クラスには、次のメソッドがあります。

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

例: ラベル保護の種類の検査

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)

.NET ラッパーでは、 Label クラスは一致するプロパティを公開します。

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

例: ラベル保護の種類の検査

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

既存の API との関係

これらの新しいメソッドは、既存の HasRightsManagementPolicy() メソッドを補完します。 リレーションシップは次のとおりです。

  • HasRightsManagementPolicy()falseを返す場合、3 つの新しいメソッドもすべてfalse返します。
  • HasRightsManagementPolicy()trueを返す場合、少なくとも 1 つの新しいメソッドがtrueを返すか、ラベルがテンプレート ベースの保護を使用している場合はtrueを返しません。
  • ラベルは、アドホック (ユーザー定義のアクセス許可) と転送不可または暗号化のみを組み合わせることができます。 これらの組み合わせの場合:
    • HasDoNotForwardProtection() は、アドホック動作も含まれているかどうかにかかわらず、ラベルが転送不可保護を適用するときに true を返します。
    • HasEncryptOnlyProtection() は、ラベルがアドホック動作も含まれているかどうかにかかわらず、暗号化のみの保護を適用する場合に true を返します。
    • HasAdhocProtection() は、ラベルがスタンドアロンのアドホック保護を適用する場合にのみ true を返します (転送不可または暗号化のみなし)。

次のステップ