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

ACL解决方案如何比我上面讨论的方法更好(基于组ID限制组访问)?

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

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

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

我更喜欢使用cakePHP v1.3进行编码,因此,如果在cakephp的上下文中进行解释,那将是很棒的,但是,与我的问题相关的任何帮助(与语言/技术无关)都将受到极大的赞赏。

最佳答案

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

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

通常,尽管如此,您还是希望尽可能地保持访问机制的粗粒度:组通常足够好。细粒度的访问控制机制趋向于变得复杂,昂贵,不准确且难以正确使用。它们甚至可能降低安全性,因为行政上的挫败感鼓励人们找到聪明的解决方法。

08-06 05:05
查看更多