Casbin RBAC vs. RBAC96
Casbin RBACとRBAC96
このドキュメントでは、Casbin RBACとRBAC96を比較します。
Casbin RBACはRBAC96のほぼすべての機能をサポートし、その上に新しい機能を追加します。
RBACバージョン | サポートレベル | 説明 |
---|---|---|
RBAC0 | 完全にサポート | RBAC0はRBAC96の基本バージョンです。 ユーザー、ロール、パーミッションの関係を明確にします。 |
RBAC1 | 完全にサポート | RBAC1はRBAC0の上にロール階層を追加します。 これは、alice がrole1 を持ち、role1 がrole2 を持つ場合、alice もrole2 を持ち、そのパーミッションを継承することを意味します。 |
RBAC2 | 相互排他的な処理がサポートされています(このように) | RBAC2はRBAC0に制約を追加します。 これにより、RBAC2は相互排他的なポリシーを処理できます。 ただし、数量制限はサポートされていません。 |
RBAC3 | 相互排他的な処理がサポートされています(このように) | RBAC3はRBAC1とRBAC2の組み合わせです。 RBAC1とRBAC2で見つかったロール階層と制約をサポートします。 ただし、数量制限はサポートされていません。 |
Casbin RBACとRBAC96の違い
Casbinでは、ユーザーとロールの区別はRBAC96ほど明確ではありません。
Casbinでは、ユーザーとロールの両方が文字列として扱われます。 例えば、次のポリシーファイルを考えてみてください:
p, admin, book, read
p, alice, book, read
g, amber, adminCasbin Enforcerのインスタンスを使用して
GetAllSubjects()
メソッドを呼び出す場合:e.GetAllSubjects()
戻り値は次の通りになります:
[admin alice]
これは、Casbinでは、主体がユーザーとロールの両方を含むためです。
しかし、
GetAllRoles()
メソッドを呼び出すと:e.GetAllRoles()
戻り値は次の通りになります:
[admin]
これから、Casbinではユーザーとロールの間に区別があることがわかりますが、RBAC96ほど鮮明ではありません。 もちろん、
user::alice
やrole::admin
のようにポリシーにプレフィックスを追加して、それらの関係を明確にすることもできます。CasbinのRBACは、RBAC96よりも多くの権限を提供します。
RBAC96は、読み取り、書き込み、追加、実行、クレジット、デビット、および問い合わせの7つの権限のみを定義します。
しかし、Casbinでは、権限を文字列として扱います。 これにより、あなたのニーズにより適した権限を作成することができます。
CasbinのRBACはドメインをサポートしています。
Casbinでは、ドメインに基づいた認証を行うことができます。 この機能により、アクセス制御モデルがより柔軟になります。