【问题标题】:When should I use ACL in my application我什么时候应该在我的应用程序中使用 ACL
【发布时间】:2011-03-11 00:33:33
【问题描述】:

我很困惑何时应该在我的应用程序中实现 ACL(访问控制列表)系统,尽管我可以轻松地通过获取会话组 ID 并限制使用 Auth 组件访问。

ACL 解决方案比我上面讨论的方法(根据组 ID 限制组访问)更好吗?

在管理应用程序的访问权限时,实施 ACL 解决方案如何简化事情?

到目前为止,我已经了解到通过 ACL,可以在运行时授予和撤销权限,但是不使用 ACL 也可以实现此功能。

我对此非常困惑,请帮助我理解这个概念,何时使用 ACL 以及在您的 Web 应用程序中使用 ACL 的好处。

我更喜欢使用 cakePHP v1.3 进行编码,所以如果在 cakephp 的上下文中给出解释,那就太好了,但非常感谢与我的问题相关的任何帮助(独立于语言/技术)。

【问题讨论】:

    标签: security permissions acl


    【解决方案1】:

    如果您需要控制对动态变化的各个实体的访问,您必须使用 ACL(或等效的用户权限机制,例如文字数据库用户和权限表)而不是组。文件系统将 ACL 附加到单个文件,因为您不想为每个文件创建单独的组。出于同样的原因,数据库管理器将 ACL 附加到数据库、表、视图、存储过程等等。 Web 服务器以相同的方式处理 Web 应用程序。

    在处理业务实体的业务应用程序中,您可能希望对实体的访问进行分区,例如公司内不同的销售订单、客户、产品或部门,并非每个人都可以创建/更新甚至读取相同的实体。例如,当销售人员直接竞争奖金时,他们不希望其他人看到他们 CRM 存储的潜在客户的所有信息。

    不过,通常情况下,您希望访问机制尽可能粗粒度:组通常足够好。细粒度的访问控制机制有变得复杂、昂贵、不准确和难以正确使用的趋势。它们甚至可能降低安全性,因为管理上的挫败感会鼓励人们找到聪明的解决方法...

    【讨论】:

    • 关于保持访问尽可能粗粒度的好建议
    【解决方案2】:

    我认为用于保护用户访问资源的 ACL 技术仅对典型或中型应用程序有用。对于 CRM 或财务数据仓库等大型应用程序,ACL 将无法管理一组非常复杂的用户/资源对,当数据的大小、类型和数量增加时,为此目的创建的 ACL 表也会增加,这用 ACL 表使数据库服务器过载对我来说毫无意义。还有许多其他技术用于安装安全访问和权限和特权...使用 ACL 文件听起来不错,但这不是一个好主意,因为文件可能不时损坏,因此数据故障超过了风险无法访问包含 ACL 规则的文件或访问不存在的文件或丢失的文件... 玩权限的唯一方法是使用在上下文中使用的业务表或在应用程序的目的中使用它们之间的关系如果您在 MVC 架构或任何其他架构下,您的表和一些逻辑要添加到您的服务端脚本中......所以避免将 ACL 用于非常大的应用程序。

    【讨论】:

      猜你喜欢
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      • 2010-12-30
      • 2012-09-22
      • 1970-01-01
      相关资源
      最近更新 更多