什么时候应该在我的应用程序中使用ACL

Gau*_*rma 11 security permissions acl

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

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

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

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

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

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

Pon*_*gge 11

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

在业务应用程序处理的业务实体,你可能要分区访问实体,如您的公司,不是所有人被允许创建/更新,甚至读取相同的实体内例如不同的销售订单,客户,产品或部门.例如,当销售人员都在为奖金直接竞争,他们不希望别人看到自己的CRM存储的前景所有信息.

但是,通常,您希望将访问机制保持为尽可能粗糙的访问机制:组通常足够好.细粒度的访问控制机制具有复杂,昂贵,不准确和难以正确使用的趋势.他们甚至可能会降低安全性,因为行政挫折鼓励人们找到聪明的解决方法......