基於 PHP-Casbin 的 ABAC 許可權控制

JonLee發表於2019-09-12

PHP-Casbin 是一個強大的、高效的開源訪問控制框架,它支援基於各種訪問控制模型(RBAC ABAC ACL)的許可權管理。

ABAC基於屬性的訪問控制,可以使用主體、客體或動作的屬性,而不是字串本身來控制訪問。

ABAC的官方例項如下:

[request_definition]
r = sub, obj, act

[policy_definition]
p = sub, obj, act

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

[matchers]
m = r.sub == r.obj.owner

這是r.obj類的定義:

$data1 = new \stdClass();
$data1->name = 'data1';
$data1->owner = 'alice';

$data2 = new \stdClass();
$data2->name = 'data2';
$data2->owner = 'bob';

然後使用決策器進行決策:

$e->enforce('alice', $data1, 'read');  // true
$e->enforce('alice', $data2, 'read');  // false

$e->enforce('bob', $data1, 'read');  // false
$e->enforce('bob', $data2, 'read');  // true
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章