Casbin

Casbin

  • ドキュメント
  • API
  • エディター
  • IDE プラグイン
  • Single Sign-On (SSO)
  • フォーラム
  • ヘルプ
  • ブログ
  • Pricing
  • Contact Sales
  • Languages icon日本語
    • English
    • 中文
    • 한국어
    • Русский
    • Français
    • Deutsch
    • 翻訳に協力する
  • GitHub

›基本

基本

  • 概要
  • はじめよう
  • 仕組み
  • チュートリアル

モデル

  • サポートされるモデル
  • モデルの構文
  • エフェクト
  • 関数
  • RBAC
  • RBAC with Pattern
  • ドメイン付きRBAC
  • Casbin RBAC v.s. RBAC96
  • ABAC
  • 優先モデル
  • スーパー管理者

ストレージ

  • モデル ストレージ
  • ポリシーストレージ
  • ポリシーサブセットの読み込み

拡張

  • Enforcers
  • アダプター
  • Watchers
  • 派遣者
  • ロールマネージャー
  • ミドルウェア
  • GraphQL Middlewares
  • Cloud Native Middlewares

API

  • API の概要
  • 管理API
  • RBAC API
  • Domains API による RBAC
  • RoleManager API
  • データ権限

高度な使い方

  • マルチスレッド
  • Benchmarks
  • パフォーマンス最適化
  • Kubernetes の承認
  • Envoyによるサービスメッシュの承認

管理

  • 管理者ポータル
  • カスビンサービス
  • ログとエラー処理
  • フロントエンドの使用法

エディター

  • オンラインエディター
  • IDE プラグイン

もっと見る

  • Adopters
  • コントリビューション
  • プライバシーポリシー
  • 利用規約
Translate

仕組み

Casbin では、アクセス制御モデルは PERM メタモデル (Policy, Effect, Request, Matchers) に基づいて CONF ファイルに抽象化されます。 そのため、プロジェクトの承認メカニズムの切り替えやアップグレードは、構成を変更するのと同じくらい簡単です。 利用可能なモデルを組み合わせることで、独自のアクセス制御モデルをカスタマイズできます。 たとえば、RBACロールとABAC属性を1つのモデル内にまとめて、1つのポリシールールを共有できます。

PERMモデルは、リソースとユーザの関係を記述する4つの基礎(ポリシー、エフェクト、リクエスト、マッチャ)で構成されています。

リクエスト

リクエストパラメータを定義します。基本的なリクエストはタプルオブジェクトです。少なくとも件名(アクセスされたエンティティ)、オブジェクト(アクセスされたリソース)、アクション(アクセスメソッド)

例えば、リクエスト定義は以下のようになります: r={sub,obj,act}

実際には、アクセス制御マッチング関数のために提供すべきパラメータ名と順序を定義します。

ポリシー

アクセス戦略のモデルを定義します。実際には、ポリシー ルール ドキュメントのフィールドの名前と順序を定義します。

例えば: p={sub, obj, act} または p={sub, obj, act, eft}

Note: eft (ポリシー結果) が定義されていない場合、ポリシーファイル内の result フィールドは読み込まれません。 一致するポリシーの結果はデフォルトで許可されます

Matcher

リクエストとポリシーの一致ルール。

For example: m = r.sub == p.sub && r.act == p.act && r.obj == p.obj This simple and common matching rule means that if the requested parameters (entities, resources, and methods) are equal, that is, if they can be found in the policy, then the policy result (p.eft) is returned. 戦略の結果は p.eftに保存されます。

効果

マッチング結果に対して再び論理的な組み合わせ判断を行うモデルとして理解することができる。

例: e = some(where(p.eft == allow))

この文は、マッチング戦略結果p.eftが(ある程度)許可されている場合、最終結果はtrueになることを意味します。

Let's look at another example: e = some(where (p.eft == allow)) && !some(where (p.eft == deny)) The logical meaning of this example combination is: if there is a strategy that matches the result of allow and no strategy that matches the result of deny, the result is true. 言い換えれば、否定があれば、マッチング戦略がすべて許容されている場合、それは真実です。 両方ともfalseです (より簡単に言えば、allowとdenyが同時に存在する場合はdenyが優先されます)

Casbinで最も基本的で最も簡単なモデルはACLです。 ACLのモデルCONFは次のとおりです。

# Request definition
[request_definition]
r = sub, obj, act

# Policy definition
[policy_definition]
p = sub, obj, act

# Policy effect
[policy_effect]
e = some(where (p.eft == allow))

# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act

ACL モデルのポリシー例:

p, alice, data1, read
p, bob, data2, write

それは以下のことを意味します。

  • alice can read data1
  • ボブはデータ2を書き込むことができます

最後に「\」を追加することでマルチラインモードもサポートします:

# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj \ 
  && r.act == p.act == p.act

さらに、ABACを使用している場合。 では、 で以下のように演算子 を試すことができます。 版 (jCasbin と Node-Casbin はまだサポートされていません):

# Matchers
[matchers]
m = r.obj == p.obj && r.act == p.act || r.obj in ('data2', 'data3')

しかし、 **** は、配列の長さが **** 1より長くなることを確認する必要があります。 そうしないとパニックを引き起こすでしょう

他の演算子については、 govaluate を参照してください。

← はじめようチュートリアル →
Casbin
Docs
Getting StartedManagement APIRBAC APIMiddlewares
Community
Who's using Casbin?Stack Overflow
Casbin          jCasbin
Node-Casbin   PHP-CasbinPyCasbin          Casbin.NETCasbin-CPP        Casbin-RS
Follow @casbinHQ
Copyright © 2022 Casbin Organization