14

我正在为不断增长的系统开发 REST API。一般来说,角色/声明访问控制就像这样完美地工作。

[HttpGet]
[Route("settings")]
[Authorization(Type = AuthorizationType.Admin, Permission = Permission.StoreSettings)]
public IHttpActionResult GetSettings() { /*...*/ }

例如,当我的用户可以更深入地控制访问权限时,就会出现问题,如下图所示。这是系统的一个抽象示例。

用户类型

如果我需要查询某个区域中的某些内容,这很简单,但是当我需要从中获取所有内容时ItemsDepartments我必须编写相同的丑陋代码,我无法真正重用。不是真正的代码,但看起来像这样。

Db.Items.Where(i =>
    i.Stores.Any(s => s.CityId == User.CityId) &&
    Db.UserDepartmentRights.Any(udr => udr.UserId == User.UserId && i.DepartmentId == udr.DepartmentId));

它显然很难看而且很难维护,尤其是当我需要在系统中引入另一个级别时。

是否有任何框架可以处理这个问题或我可以实现的正式架构?

4

2 回答 2

25

就在这里。有一个称为 ABAC 或基于属性的访问控制 ( ) 的模型可以做到这一点。

ABAC简介

ABAC 是 RBAC(基于角色的访问控制)的演进。您使用的基于声明的模型是一种 RBAC 形式,您可以在其中为用户分配角色和权限。RBAC 在小型、简单的部署中运行良好,但在您需要扩大规模或建立关系时往往会失败。在您的情况下,您希望根据用户和商店之间的关系来表达访问控制。

ABAC 和 RBAC 都是由美国国家科学技术研究院 NIST 定义的模型。

ABAC 构造

在 ABAC 中,您会得到 2 种类型的构造:

  • 属性。属性可以是关于任何事物和任何人的。它们倾向于分为 4 种不同的类别或功能(如语法功能)
    • 主题属性:描述尝试访问的用户的属性,例如年龄、权限、部门、角色、职位……
    • 动作属性:描述正在尝试的动作的属性,例如读取、删除、查看、批准...
    • 资源(或对象)属性:描述被访问对象的属性,例如对象类型(病历、银行账户……)、部门、分类或敏感性、位置……
    • 上下文(环境)属性:处理访问控制场景的时间、位置或动态方面的属性
  • 策略是集合属性以表达可能发生和不允许发生的情况的语句。ABAC 中的策略可以是授予或拒绝策略。示例包括:
    • 如果文档与用户在同一部门,则用户可以查看文档
    • 如果用户是所有者并且文档处于草稿模式,则用户可以编辑文档
    • 早上 9 点前拒绝访问

使用 ABAC,您可以拥有尽可能多的策略来满足许多不同的场景。

ABAC架构

ABAC 带有一个推荐的架构,如下所示:

ABAC / XACML 架构

  • PEP 或策略执行点负责保护您想要应用 ABAC 的应用程序和数据。在您的情况下,您可能会使用拦截器(例如 .NET MessageHandler)。PEP 检查请求并从中生成授权请求,然后将其发送给 PDP。
  • PDP 或策略决策点是架构的大脑。这是根据已配置的策略评估传入请求的部分。PDP 返回许可/拒绝决定。PDP 也可以使用 PIP 来检索丢失的元数据
  • PIP 或策略信息点将 PDP 桥接到外部属性源,例如 LDAP 或数据库。

ABAC 实施

今天实现 ABAC 的主要标准是 XACML,即可扩展访问控制标记语言 ( )。它是一种技术中立的细粒度访问控制方法。今天有几种 XACML 的实现:

学到更多

网上有一些很好的资源,你可以求助

于 2016-04-19T12:26:19.020 回答
0

是的,有现成的框架,它适用于所有 .net 和非 .net 应用程序,你可以在这里查看,VisualGuard,我为它工作,它在你不需要的地方非常容易地完成所有你需要的事情需要编写任何代码,只需插入它,您就可以即时创建您的限制(权限)。

每个权限对应一个或多个将激活、停用或修改应用程序功能的操作。

使用动态权限,这些操作仅在框架中定义和存储。在运行时,Visual Guard 将动态加载和应用它们。结果,应用程序代码与安全代码完全分离。

你可以在这里查看

http://www.visual-guard.com/EN/net-powerbuilder-application-security-authentication-permission-access-control-rbac/sso-iam-identity-authorization-entitlement-audit-features.php-source_soforum。 html

于 2016-04-22T13:30:57.687 回答