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

2020-07-16 10:05:44
PHP-Casbin 是一個強大的、高效的開源存取控制框架,它支援基於各種存取控制模型(RBAC ABAC ACL)的許可權管理。

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

推薦:《PHP教學

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

以上就是基於 PHP-Casbin 的 ABAC 許可權控制的詳細內容,更多請關注TW511.COM其它相關文章!