sam-it/abac

基于属性的访问控制

v4.1.1 2022-11-02 16:09 UTC

This package is auto-updated.

Last update: 2024-08-30 01:28:51 UTC


README

一个简单的框架,用于在您的应用程序中实现基于属性的访问控制(ABAC)。

规则

规则实现业务逻辑,规则执行的输入包括

  • source: 行动者,通常是当前用户
  • target: 主题,行动者希望作用的对象
  • permission: 行动者希望采取的操作
  • environment: 环境应包含业务规则可能需要的任何其他内容

鼓励规则进行递归访问检查。一个典型的规则可以是 WriteImpliesRead,因为对于大多数系统,当你可以写入一个对象时,你通常也可以读取它。实现可能看起来像这样

public function execute(
    object $source,
    object $target,
    string $permission,
    Environment $environment,
    AccessChecker $accessChecker
): bool {
    return $permission === 'read' && $accessChecker->check($source, $target, 'write');
}

环境

考虑一个只在办公时间允许访问的规则。那么当前时间应该设置在环境中。这样做的原因是,只有一个环境位置可以方便地进行测试,并且可以保持单一的真实来源。

无限循环

规则可能包含无限循环,我们通过跟踪递归深度来检测这些循环。

外部链接