Overview
Casbin は、幅広い範囲で認可を実施するための様々なアクセス制御モデルをサポートする強力で効率的なオープンソースのアクセス制御ライブラリです。
一連のルールを適用することは、ポリシー ファイルにサブジェクト、オブジェクト、および望ましい許可されたアクション(または必要に応じて他の形式)をリストするのと同じくらい簡単です。 これは、Casbin が使用されるすべてのフローで同義です。 開発者/管理者は、モデル ファイルを介して設定される認可のレイアウト、実行、および条件を完全に制御できます。 Casbin は、与えられたポリシーおよびモデルファイルに基づいて着信要求を検証するための エンフォーサー を提供します。
Casbin がサポートするプログラミング言語
Casbin は、あらゆるプロジェクトやワークフローに統合できるように、様々なプログラミング言語をサポートしています。
Casbin | jCasbin | node-Casbin | PHP-Casbin |
本番環境対応 | 本番環境対応 | 製品化準備完了 | 製品化準備完了 |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
本番環境対応 | 本番環境対応 | 本番環境対応 | 本番環境対応 |
異なる言語向けの機能セット
私たちは常に最善を尽くし、Casbinがすべての言語で同じ機能セットを持つようにしています。 しかし、現実はそれほど美しくありません。
機能 | Go | Java | Node.js | PHP | Python | C# | Delphi | Rust | C++ | Lua | Dart | Elixir |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Enforcement | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ABAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Scaling ABAC (eval() ) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
Management API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Batch API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Filtered Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Watcher | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Role Manager | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
Multi-Threading | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
'in' of matcher | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
ノート - ✅はウォッチャーまたはロールマネージャーのみがコアライブラリにインターフェースを持っていることを意味します。 これは、ウォッチャーやロールマネージャの実装が利用可能かどうかを示すものではありません。
Casbinとは何ですか?
Casbinは、特定のオブジェクト
またはエンティティが特定のユーザーまたはサブジェクト
によってアクセスされることを望むフローで使用できる認可ライブラリです。 アクセスのタイプ、つまりアクション
は、読み取り、書き込み、削除、または開発者が設定したその他のアクションです。 これがCasbinが最も広く使用されている方法であり、「標準」またはクラシックな{サブジェクト、オブジェクト、アクション}
フローと呼ばれます。
Casbinは、標準フロー以外の多くの複雑な認可シナリオを処理することができます。 ロール(RBAC)、属性(ABAC)などの追加が可能です。
Casbinの機能
- 定義したクラシックな
{サブジェクト、オブジェクト、アクション}
形式またはカスタマイズされた形式でポリシーを適用します。 許可と拒否の両方の認可がサポートされています。 - アクセス制御モデルとそのポリシーのストレージを管理します。
- ロールとユーザーのマッピング、およびロールとロールのマッピング(RBACにおけるロール階層とも呼ばれる)を管理します。
root
やadministrator
のような組み込みのスーパーユーザーをサポートします。 スーパーユーザーは明示的な権限なしに何でもできます。- ルールマッチングをサポートするための複数の組み込み演算子を提供します。 例えば、
keyMatch
はリソースキー/foo/bar
をパターン/foo*
にマップできます。
Casbinがしないこと
- 認証(ユーザーがログインする際の
username
とpassword
の確認) - ユーザーまたはロールのリストを管理します。
プロジェクトがユーザー、ロール、パスワードのリストを管理する方が便利です。 ユーザーは通常自分のパスワードを持っており、Casbinはパスワードコンテナとして設計されていません。 しかし、CasbinはRBACのシナリオでユーザーとロールのマッピングを保存します。