问题标签 [rbac]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 最佳基于角色的访问控制 (RBAC) 数据库模型
跟踪 Web 应用程序基于角色的访问控制的最佳数据库模式是什么?
我正在使用 Rails,但是 Google 链接的 RBAC 插件看起来没有维护(只有 300 次提交到 SVN;最新的是差不多一年前)。
这个概念很简单,可以从头开始实施,但又足够复杂和重要,值得一试。
那么其他人如何构建和实现他们的 RBAC 模型呢?
asp.net - 用于asp.net的rbac?
是否有用于 asp.net 的开放式 rbac 框架?Rails 有一些解决方案,但我找不到用于 asp.net 的简单 rbac 系统。有什么可以使用和扩展的吗?
.net - 如何检索用户所属的所有角色(组)?
有没有办法在不通过方法明确检查的情况下获取 Windows 身份验证用户所在的角色列表WindowsPrincipal.IsInRole
?
ldap - 在 LDAP 中表示 RBAC 参与者
当使用 LDAP 存储实现 RBAC 模型时(我使用 Apache Directory 1.0.2 作为测试平台),一些参与者显然可以映射到特定的对象类:
- 资源 - 我没有看到一个清晰的映射。applictionEntity 似乎只是为了这个目的而切线
- 权限 - 权限可以被视为单一用途的角色;显然我没有考虑 LDAP 权限,因为它们管理对 LDAP 对象和属性的访问,而不是对资源的 RBAC 权限
- 角色 - 直接映射到 groupOfNames 或 groupOfUniqueNames,对吗?
- 用户 - 人
在过去,我看到过在目录中不以任何方式处理资源的模型,并且权限和角色被映射到 Active Directory 组。
有没有更好的方式来代表这些演员?讨论模式的良好映射和意图的文档怎么样?
.net - 角色检查应该在调用堆栈的哪个位置进行?
在我的典型应用程序中,用户单击 aspx 页面中的按钮,调用 C# 业务对象,然后运行存储过程。
角色检查应该在堆栈顶部、堆栈底部还是在每个级别进行?似乎如果恶意用户可以调用一个方法,他可以调用任何方法,因此为了有效的安全性,您需要检查每个方法(并且要编写很多额外的代码)。
这是一个典型的调用堆栈来说明我的问题:
database-design - 基于角色的访问控制数据库设计
这个问题不是关于 RBAC 系统本身的数据库设计,而是当 Web 应用程序允许其用户提交内容时,如何将此数据库与特定于应用程序的数据库一起使用。
就目前而言,我的 RBAC 应该可以轻松地用于简单的后端管理应用程序,员工可以在其中添加和更新记录——例如,在线商店通常没有用户提交的内容。这两个数据库可以保持独立。但是,我不确定如何将我的 RBAC 设计用于允许其用户提交内容的网站/应用程序。我将在两个数据库中有两个用户表,它们需要添加/更新记录的权限。
我是否将我的 RBAC 数据库合并到网站数据库中并共享用户表?
我要把这两个分开吗?
做点别的吗?
如果选项 2 我这样做:
(A) 将网站数据库中的用户复制到 RBAC 用户表中
(B) 在网站数据库中创建与用户表的关系
(C) 在网站数据库中为网站用户创建一个新的 RBAC 系统,并为管理员用户提供单独的 RBAC?
A 似乎很糟糕,因为我正在复制数据,但似乎很容易实现。B 似乎很难与两个单独的用户表建立关系。C 也是重复的,但我可以在不影响“管理员”RBAC 的情况下大量自定义此 RBAC。
我基本上想让我的 RBAC 系统尽可能地可重用,并且让特定于应用程序的用户能够提交内容让我有点难以理解。
我的这个小 RBAC 系统主要是我学习的一种方式,所以请不要通用“你应该使用框架 x/y/z”。使用我最近发现的一个术语,我有点像一个车轮书呆子,每当我好奇的时候就喜欢重新发明它们!:)
我将在我的网站上使用 MySQL 和 PHP,但这无关紧要,因为这是我在这里询问的数据库设计。
如果我的问题不清楚,请告诉我,我会进一步解释。谢谢大家的时间。
oracle - 通过 Solaris RBAC 执行 Oracle RAC 集群命令?
执行Oracle RAC集群管理命令等$ORA_CRS_HOME/bin/crs_start
需要 root 权限。
使用Solaris RBAC(基于角色的访问控制),可以授予非root
用户执行这些命令的权限,但这些命令仍然在内部失败。例子:
是否有适用于 Oracle RAC 的完整 RBAC 解决方案,或者执行程序是否需要root
?
编辑:请注意,我的原件/etc/security/exec_attr
包含:
正如Martin在下面建议的那样,需要将其更改为添加gid=0
为:
windows-server-2003 - 以编程方式将角色分配给 Microsoft AzMan 中的范围?
我AzMan
在 Windows Server 2003 上使用,并且我编写了一个管理应用程序,该应用程序完全隐藏AzMan
在MMC
安全团队之外。
但是,我很难实现MMC
.
我有一个名为 的角色User
,以及一个名为 的角色Branch User
,它只包含User
角色。我想User
在所有数据(Role Assignments
)级别分配角色Branch User
,在范围级别分配角色。
但是,我找不到以编程方式将Branch User
角色分配给范围而不丢失其定义的方法。我可以分配角色(通过调用CreateRole
范围),但它似乎只是创建了一个新的空白角色。当我在 中右键单击它MMC
,单击属性,然后单击Show Definition,它没有任何内容。
此外,如果我尝试调用AddTask
该IAzRole
对象来添加User
它,它不会像预期的那样工作。它会将角色中的所有任务添加User
到我的Branch User
角色中,但不会添加角色本身。
有没有办法做到这一点?
language-agnostic - 访问控制列表
我一直在为即将到来的项目阅读(基于角色的)访问控制列表,并且在弄清楚它将如何为我工作时遇到了一些麻烦。
在我看到的示例中,他们总是谈论允许和拒绝访问控制器/模型的特定操作。例如:组“访客”可以read
发帖,“会员”可以read
和edit
,“管理员”可以create, read, update, delete
。
这些事情对我来说似乎有点太全球化了。在我自己的情况下(为这个例子调整它),会有大量的组,每个组只能edit
发布属于某个类别(或其他一些标准)的帖子。
我认为让它对我有用的唯一方法是为每个类别的帖子创建一个新的 ACO:
然后分别授予每个人的访问权限(对于需要访问所有权限的管理员来说,这可能是一个皇家 PITA)
ACL 模式如何涵盖这样的情况?有没有更好的方法?
我最终将在 PHP 中使用 Cake 实现这一点,因此欢迎使用 PHP 的示例,但不是必需的!
design-patterns - 访问控制设计模式
我正在开发一个 PHP 应用程序,我想为我的一些对象添加访问控制。我没有将这个问题标记为 PHP,因为我觉得这个问题不是特定于语言的。
假设我有一个“服务类”
许多服务使用它作为基类。一个伪示例是:
后来我想添加访问控制。示例“getCompanyInfoById”方法是“读取”操作,因此需要“读取”权限。
此时我可以通过以下方式实现它:
- 将访问控制添加到服务类。每个方法(例如 getCompanyInfoById)都必须在内部调用“hasPrivilege”方法,然后才能完成操作并返回结果。
- 将所有服务对象包装在某种代理对象中,该对象将在调用内部对象中的方法之前检查权限。
- 完全分离访问控制,并强制“调用者”在调用方法之前检查权限。
每个选项的缺点:
- 这需要更改所有服务,并要求它们了解访问控制。我觉得这违背了关注点的分离。
- 这破坏了 OOP 特性,例如多态性。调用者不再知道任何服务支持哪些接口。
- 这是最灵活的,但最大的缺点是检查权限现在是隐式的。开发人员可能会“忘记”或复杂的代码路径会导致调用未经授权的服务。
有没有更好的方法来解决这个问题?