メインコンテンツにスキップ

Casbin RBAC vs. RBAC96

Casbin RBACとRBAC96

このドキュメントでは、Casbin RBACとRBAC96を比較します。

Casbin RBACはRBAC96のほぼすべての機能をサポートし、その上に新しい機能を追加します。

RBACバージョンサポートレベル説明
RBAC0完全にサポートRBAC0はRBAC96の基本バージョンです。 ユーザー、ロール、パーミッションの関係を明確にします。
RBAC1完全にサポートRBAC1はRBAC0の上にロール階層を追加します。 これは、alicerole1を持ち、role1role2を持つ場合、alicerole2を持ち、そのパーミッションを継承することを意味します。
RBAC2相互排他的な処理がサポートされています(このようにRBAC2はRBAC0に制約を追加します。 これにより、RBAC2は相互排他的なポリシーを処理できます。 ただし、数量制限はサポートされていません。
RBAC3相互排他的な処理がサポートされています(このようにRBAC3はRBAC1とRBAC2の組み合わせです。 RBAC1とRBAC2で見つかったロール階層と制約をサポートします。 ただし、数量制限はサポートされていません。

Casbin RBACとRBAC96の違い

  1. Casbinでは、ユーザーとロールの区別はRBAC96ほど明確ではありません。

    Casbinでは、ユーザーとロールの両方が文字列として扱われます。 例えば、次のポリシーファイルを考えてみてください:

    p, admin, book, read
    p, alice, book, read
    g, amber, admin

    Casbin Enforcerのインスタンスを使用してGetAllSubjects()メソッドを呼び出す場合:

    e.GetAllSubjects()

    戻り値は次の通りになります:

    [admin alice]

    これは、Casbinでは、主体がユーザーとロールの両方を含むためです。

    しかし、GetAllRoles()メソッドを呼び出すと:

    e.GetAllRoles()

    戻り値は次の通りになります:

    [admin]

    これから、Casbinではユーザーとロールの間に区別があることがわかりますが、RBAC96ほど鮮明ではありません。 もちろん、user::alicerole::adminのようにポリシーにプレフィックスを追加して、それらの関係を明確にすることもできます。

  2. CasbinのRBACは、RBAC96よりも多くの権限を提供します。

    RBAC96は、読み取り、書き込み、追加、実行、クレジット、デビット、および問い合わせの7つの権限のみを定義します。

    しかし、Casbinでは、権限を文字列として扱います。 これにより、あなたのニーズにより適した権限を作成することができます。

  3. CasbinのRBACはドメインをサポートしています。

    Casbinでは、ドメインに基づいた認証を行うことができます。 この機能により、アクセス制御モデルがより柔軟になります。