角色/索赔访问控制系统的替代方案

时间:2016-04-18 23:18:20

标签: asp.net entity-framework-6 authorization access-control abac

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

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

如果我的用户能够更深入地控制访问权限,则会出现问题,如下图所示。这是系统的一个抽象示例。

User Types

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

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

显然很难维护,特别是如果我需要为系统带来另一个级别。

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

2 个答案:

答案 0 :(得分:10)

是的。有一个名为ABAC的模型 - 或基于属性的访问控制()就是这样做的。

ABAC简介

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

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

ABAC构造

在ABAC中,您可以获得两种类型的构造:

  • 属性。属性可以是任何人和任何人。它们往往分为4个不同的类别或功能(如语法功能)
    • 主题属性:描述尝试访问的用户的属性,例如年龄,清关,部门,角色,职称......
    • 动作属性:描述正在尝试的动作的属性,例如阅读,删除,查看,批准......
    • 资源(或对象)属性:描述被访问对象的属性,例如:对象类型(病历,银行账户......),部门,分类或敏感度,位置......
    • 上下文(环境)属性:处理访问控制方案的时间,位置或动态方面的属性
  • 策略是将属性汇集在一起​​以表达可能发生和不允许的内容的语句。 ABAC中的政策可以是授予或拒绝政策。例子包括:
    • 如果文档与用户位于同一部门,则用户可以查看文档
    • 如果文档是所有者,并且文档处于草稿模式,则用户可以编辑文档
    • 在上午9点之前拒绝访问

使用ABAC,您可以拥有任意数量的策略,以满足许多不同的情况。

ABAC架构

ABAC推荐的架构如下:

ABAC / XACML Architecture

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

ABAC实施

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

了解更多

网上有一些很好的资源可以转向

答案 1 :(得分: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