概要
Casbinは強力で効率的なオープンソースのアクセス制御ライブラリです。さまざまなアクセス制御モデルに基づく認証処理をサポートしています。
Casbinがサポートする言語:
Casbin | jCasbin | node-Casbin | PHP-Casbin |
production-ready | production-ready | production-ready | production-ready |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
production-ready | production-ready | production-ready | production-ready |
言語ごとの機能
機能 | Go | Java | Node.js | PHP | Python | C# | Delphi | Rust | C++ | Lua | Dart | Elixir |
---|---|---|---|---|---|---|---|---|---|---|---|---|
実行 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ABAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Scaling ABAC (eval() ) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
Management API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Batch API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Filtered Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Watcher | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Role Manager | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
Multi-Threading | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
'in' of matcher | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
Casbinがすべての言語で同じ機能を備えることができるように、私たちは常に最善を尽くしています。 しかし、現実はそれほど簡単ではありません。 現在の進行状況は上記の表の通りです。 WatcherまたはRole Managerに✅がある場合のみ、コアライブラリにインターフェイスを持つことを意味します。 WatcherまたはRole Managerの利用可能な実装があるかどうかは別の問題です。
Casbinとは?
Casbinが行うこと:
{subject, object, action}
の形式や独自定義のカスタマイズされた形式のポリシーを適用します。allowとdenyの両方がサポートされています。- アクセス制御モデルとそのポリシーの保存をハンドリングします
- ロール・ユーザー間のマッピングとロール・ロール間のマッピング(RBACのロール階層)を管理します。
root
やadministrator
のようなスーパーユーザをサポートします。スーパーユーザは明示的な権限なしでいかなる操作も行うことができます。- ルールのマッチングをサポートする複数の組み込み演算子もサポートします。 例えば、
keyMatch
はリソース キー/foo/bar
をパターン/foo*
にマップできます。
Casbinが行わないこと:
- 認証 (ログイン時の
ユーザー名
とパスワード
の検証) - ユーザーまたはロールのリスト管理。 プロジェクト自体がこれらのエンティティを管理する方が利便性が高いと考えています。 パスワードは通常ユーザが保持しており、Casbinはパスワードを保管するものとして設計されていません。 しかし、CasbinはRBACシナリオのユーザー・ロール間のマッピングについては保存を行います。