Google Zanzibarに着想を得たオープンソースの認可サービス。アプリのコード外で、きめ細かなRBAC、ReBAC、ABACによるアクセス制御を構築できます。
apache/casbin
ACL、RBAC、ABACの認可ポリシーをモデルとポリシーファイルで設定して適用する、Go向けアクセス制御ライブラリ。
- スター
- 20,482
- フォーク
- 1,767
- 未解決の Issue
- 39
- 最終コミット
- 3 日前
これは何?
Apache Casbinは、Goプロジェクト向けの認可ライブラリです。設定ファイルで定義したアクセス制御モデルとポリシールールに基づいて、サブジェクトがオブジェクトに対してアクションを実行できるかを判定します。モデルは設定ファイルに置かれるため、認可方式を変更するときは通常、アプリケーションコードを書き換えるのではなく設定を編集します。
ACL、RBAC(ロール階層、リソースロール、ドメインまたはテナントごとのロールを含む)、リソース属性を使ったABAC、RESTfulなパスとメソッドの照合、deny-overrideルール、優先度をサポートします。ポリシーはファイルから読み込めるほか、アダプター経由でデータベースから読み込むこともできます。また、実行時管理APIとRBAC専用APIを使って、アプリケーションを再起動せずに権限を変更できます。Casbinが担うのはアクセス判定とポリシーの保存であり、ユーザー、パスワード、認証の管理は行いません。
このプロジェクトはApache Software Foundationの一部です。Java、Node.js、PHP、Python、.NET、C++、Rust向けの姉妹実装があり、モデルやポリシーを記述できるオンラインエディターも提供しています。
主な機能
- 01ACL、RBAC、ABAC、RESTful、deny-override、優先度ベースのアクセス制御モデルをサポートします。
- 02PERMメタモデルに基づき、設定ファイルでアクセス制御モデルを定義します。
- 03データベースなど、差し替え可能なアダプター経由でポリシーを読み込み、保存します。
- 04実行時に権限を変更するための管理APIとRBAC APIを提供します。
- 05リソースパスのパターンに使えるkeyMatchなどの照合演算子を標準で備えています。
- 06並行利用に対応した同期版のenforcerを提供します。
ユースケース
- Go製のWebサービスやAPIに、ロールベースの権限チェックを追加する。
- ユーザーがテナントごとに異なるロールを持つ、マルチテナント向けのルールを適用する。
- リソースの所有者だけが編集できるようにするなど、属性ベースのルールを表現する。
- 実行時にポリシーを更新する管理画面から、権限を管理する。
クイックスタート
- 1
Go modulesを使ってライブラリをインストールします
go get github.com/casbin/casbin/v3 - 2
モデルファイルとポリシーファイルからEnforcerを作成します
- 3
リクエストをチェックするため、アクセスのたびにコード内でEnforceを呼び出します
使う前に知っておきたいこと
- Enforcerは並行利用に安全ではありません。そのため、実行時に変更されるEnforcerを共有する場合は、同期版を使用する必要があります。
- このライブラリは認証やユーザー・ロールの管理を行いません。これらはアプリ側で用意する必要があります。
トピック
よくある質問
- casbin とは?
- ACL、RBAC、ABACの認可ポリシーをモデルとポリシーファイルで設定して適用する、Go向けアクセス制御ライブラリ。 Apache Casbinは、Goプロジェクト向けの認可ライブラリです。設定ファイルで定義したアクセス制御モデルとポリシールールに基づいて、サブジェクトがオブジェクトに対してアクションを実行できるかを判定します。モデルは設定ファイルに置かれるため、認可方式を変更するときは通常、アプリケーションコードを書き換えるのではなく設定を編集します。
- casbin は無料で使えますか?ライセンスは?
- casbin は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- casbin は今もメンテナンスされていますか?
- 活発にメンテナンス中。casbin の最終コミットは 2026年11月4日 です。
- casbin は何に使えますか?
- Go製のWebサービスやAPIに、ロールベースの権限チェックを追加する。 ユーザーがテナントごとに異なるロールを持つ、マルチテナント向けのルールを適用する。 リソースの所有者だけが編集できるようにするなど、属性ベースのルールを表現する。 実行時にポリシーを更新する管理画面から、権限を管理する。
- casbin のインストール方法は?
- Go modulesを使ってライブラリをインストールします: go get github.com/casbin/casbin/v3 モデルファイルとポリシーファイルからEnforcerを作成します リクエストをチェックするため、アクセスのたびにコード内でEnforceを呼び出します
- casbin はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/apache/casbin
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
ユーザー、ロール、権限をデータベースに保存し、LaravelのGateを通じて確認できるLaravelパッケージです。
YAMLポリシーを評価し、誰がどのリソースに対してどの操作を実行できるかを判定する、セルフホスト型の認可エンジン(PDP)。
Regoで認可やコンプライアンスのルールを記述し、サービスやKubernetesなどから評価できる汎用ポリシーエンジンです。
Prisma互換ORM、組み込みのアクセス制御、自動生成されるCRUD APIとTanStack Query hooksを備えたTypeScriptデータレイヤー。
Postgresクエリ、認証、ストレージ、Realtime、Edge Functionsに対応するSupabase公式Pythonクライアントライブラリのモノレポ。