关键词:
【中文标题】分层数据方案中的实体级访问控制【英文标题】:Entity-level access control in a hierarchical data scheme 【发布时间】:2017-06-26 12:21:07 【问题描述】:坦率地说,我有一个实体级授权要求。我希望获得有关此权限结构的一些指导,我如何在 .NET 4.5 中实现它,以及是否有办法改进它。
这里是:
我有一组数据结构如下:
在哪里
Fleet
是零个或多个 Cars
的集合。
一个Fleet
可以包含其他Fleets
以后可以出于组织目的对舰队进行重组和移动。
我在系统中有几个角色具有与这些实体相关的权限:
车主:可以在车队中添加或移除汽车 经理:为汽车分配司机 司机:允许简单地驾驶汽车 技工:可以修车授权逻辑允许系统中的User
被授予对具有一个或多个角色的Fleet
或Car
的访问权限。
这里有一些场景可以帮助解释:
-
如果我授予
User
Jim 以Driver
的角色访问Fleet
#5,他就可以驾驶车队#2 下的任何汽车.由此产生的权限允许他驾驶 #4、5、6 号汽车
如果我授予用户 Maura 作为 Mechanic 访问 Car #1
的权限,则生成的权限仅允许她修理 #1 车。
如果我授予用户 Sarah 使用角色 Owner
和 Mechanic
访问 Fleet #2,则允许她向 Fleet #2、4、5 添加和删除汽车 并且她可以修理 #1、2、3、4、5、6 号车。
如果我授予用户 Jeremy 以 Owner
AND 以 Driver
身份访问 Fleet #6 的用户 Jeremy,则生成的权限允许他添加并将车辆移至所有车队并驾驶 7 号、8 号车。他不能驾驶除 7 号和 8 号车以外的任何其他车辆。
这种实体级授权的好方法是什么?
如果重要的话,我们使用 .NET 4.5.1 和 EF6 Code First,构建在 ASP.net Boilerplate 之上。
【问题讨论】:
我来晚了,但是这个细粒度的授权解决方案可以帮助你:zanzibar.academy 【参考方案1】:您要实现的细粒度授权让我想起了 CakePHP's Access Control List (ACL) description 中的访问控制对象(ACO - 想要的东西)和访问请求对象(ARO - 想要的东西),但有一些变化:
简而言之:
您有 ARO(车主、经理、司机、机械师)将要求的 ACO(车队和汽车)。如果您想知道请求者是否有权访问某个对象,您可以找到该对象的路径(Can John access "Car #3"?
:从根目录查找“Car #3”的路径:Fleet #1 > Fleet #2 > Car #3
),然后分配默认权限“拒绝”到每个节点,但如果该节点在请求者的允许节点列表中,则将其切换为“允许”。如果最后一个节点以“允许”结尾,那么,好吧......允许,否则拒绝。
首先理解逻辑是关键。任何语言的实施都排在第二位。
我希望它能为您指明正确的方向。
干杯,
【讨论】:
雪花中的行级访问控制
...】:我有一个客户拥有一家地毯清洁公司,我们在多租户数据库模型中拥有他所有不同加盟商的数据,我们希望将这些数据移动到雪花中的数据仓库中。我不想为每个客户建立一个单独的数据库,因为这样我就必须使每个数据库... 查看详情
ASP.Net 分层应用程序 - 在层之间共享实体数据模型
】ASP.Net分层应用程序-在层之间共享实体数据模型【英文标题】:ASP.NetLayeredapp-ShareEntityDataModelamongstlayers【发布时间】:2011-02-2011:28:20【问题描述】:如何在我的C#Web应用程序的所有层之间共享自动生成的实体数据模型(生成的... 查看详情
Apache Shiro 中的实例级访问控制
...安全性。我刚刚从Shiro网站复制了示例。以下权限存储在数据库中。printer:query:lp7200pr 查看详情
将实体框架放置在我们的解决方案中的啥位置?
...所以我们有一个包含以下项目的解决方案:业务逻辑实体数据访问实用程序单元测试用户界面这是一个非常大的企业级应用程序。我的问题是,我们将实体框架放在哪里?一方面,EF似乎是一种数据访问 查看详情
实体类数据访问类
1、在解决方案创建文件夹App_Code吧所有的数据类和实体类放到App_Code文件夹下面实体类:吧数据库的表抽象成程序中的类类名=表名属性名=列名usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceConsoleApplication1.... 查看详情
权限模块_整体方案说明_设计实体&映射实体_实现初始化权限数据的功能
...角色*----*权限与权限相关的功能具体有哪些: 初始化数据:... 分配权限:... 使用 查看详情
访问控制技术
学习大数据安全的过程中发现该部分内容,恰与操作系统中的访问控制技术存在关联,于是统而归结于此。AccessControl中的基本术语:主体:发起对资源的访问请求的主动实体,一般为系统的用户或进程客体... 查看详情
java的分层开发
既然是分层开发,首先我们需要知道的是分为那几个层,并且是干什么的?1.实体层(entity)对应数据库中的一张表,有了它可以降低耦合性,同时也是数据的载体. 2.数据访问对象(dataaccessobject)主要包含两个java源文件,一个是BaseBao,还... 查看详情
通过 JDBC 访问分层数据 [关闭]
】通过JDBC访问分层数据[关闭]【英文标题】:AccessinghierarchicaldataviaJDBC[closed]【发布时间】:2011-08-1316:26:53【问题描述】:我有一个包含列ID和父级的表菜单。我们可以使用普通的JDBC(无ORM)从数据库中加载分层数据吗?我们可... 查看详情
分层架构和实体框架的类命名约定
】分层架构和实体框架的类命名约定【英文标题】:ClassNamingConventionswithLayeredArchitectureandEntityFramework【发布时间】:2011-08-1201:23:36【问题描述】:我正在设计一个分层架构(服务/业务逻辑层、数据访问层),并且正在努力解决... 查看详情
javaweb(三层架构)(代码片段)
...JSP代码混在一起,不易于阅读,不易于代码维护2.分层结构的模式 (1)分层模式是最常见的一种架构模式 (2)分层模式是很多架构模式的基础3.分层 将解决方案的组件分... 查看详情
共享业务和数据访问实体的策略
...布时间】:2013-10-3005:56:58【问题描述】:我正在设计一个分层应用程序,其中90%的业务和数据访问实体具有相同的属性。基本上,为了分离关注点,为每个层(和地图)创建一组具有相同属性的类是没有意义的。我完全了解自动... 查看详情
BigQuery 中的 GA 实体店访问量?
...如果他们是一种在BigQuery中获取与GA360关联Beta功能相关的数据“商店访问量”的方法吗?当然考虑到该功能已为公司启用:)谢谢【问题讨论】:【参考方案1】:请参考officialdocumentation,在Lim 查看详情
如何使用核心数据访问保存在不同视图控制器中的数组?
】如何使用核心数据访问保存在不同视图控制器中的数组?【英文标题】:howcaniusecoredatatoaccessanarraysavedinadifferentviewcontroller?【发布时间】:2017-12-1901:16:41【问题描述】:我将一个数组保存到一个视图控制器中的核心数据中,我... 查看详情
核心数据:我应该为每个实体编写一个数据访问对象/管理器/控制器吗?
】核心数据:我应该为每个实体编写一个数据访问对象/管理器/控制器吗?【英文标题】:CoreData:shouldIwriteonedataaccessobject/manager/controllerperentity?【发布时间】:2013-11-1703:46:23【问题描述】:我的核心数据模型相当简单但层次分明... 查看详情
flinksql的行级权限解决方案及源码(代码片段)
...行级权限解决方案及源码,支持面向用户级别的行级数据访问控制,即特定用户只能访问授权过的行,隐藏未授权的行数据。此方案是实时领域Flink的解决方案,类似离线数仓Hive中RangerRow-levelFilter方案。序号作者... 查看详情
微服务中的授权 - 如何使用 ACL 处理域对象或实体级别的访问控制?
】微服务中的授权-如何使用ACL处理域对象或实体级别的访问控制?【英文标题】:Authorisationinmicroservices-howtoapproachdomainobjectorentitylevelaccesscontrolusingACL?【发布时间】:2017-04-3021:57:10【问题描述】:我目前正在javaSpringCloud上构建基... 查看详情
我如何从核心数据中的子实体访问子实体属性
】我如何从核心数据中的子实体访问子实体属性【英文标题】:HowicanaccessSub-EntityattributesfromSuber-EntityinCoredata【发布时间】:2012-01-3106:42:35【问题描述】:我在核心数据中有一个名为element的超级实体,并有两个名为(IsBoolean,IsGrade... 查看详情