views:

62

answers:

1

I am pretty much confused as to when should I implement an ACL (access control list) system in my application though I can easily manage permission on groups simply by fetching the session group id and restricting access using the Auth component.

How is an ACL solution better then the approach I discussed above (restricting the group access based on group id) ?

How come implementing an ACL solution simplifies things when it comes to managing access rights in your application ?

Till now I have learned that through ACL permissions can be granted and revoked at runtime, but this functionality is also achievable without using an ACL.

I am very much confused about this, Please help me understand the concept, when to use ACL and the benefits of using ACL in your web application.

I prefer to code with cakePHP v1.3 so it would be great if the explanation is given in context of cakephp but any help (language/technology independent) related to my question is greatly appreciated.

Thanks

+2  A: 

You must use ACLs (or an equivalent user permission mechanism such as literal database User and Permission tables) rather than groups if you need to control access to individual entities which vary dynamically. File systems attach ACL's to individual files since you don't want to create a separate group for each file. Database managers attach ACL's to databases, tables, views, stored procedures and whatnot for the same reason. Web servers deal with web applications in the same manner.

In a business application dealing with business entities, you may want to partition access to entities such as e.g. different sales orders, customers, products or divisions within your company, where not everybody is allowed to create/update or even read the same entities. For instance, when sales staff are in direct competition for bonuses, they don't want everybody else to see all the information on their CRM-stored prospects.

Usually, though, you want to keep your access mechanisms as coarse-grained as is humanly possible: groups are usually good enough. Fine-grained access control mechanisms have a tendency to grow complex, expensive, inaccurate and hard to use correctly. They may even decrease security, since administrative frustration encourages people to find clever workarounds...

Pontus Gagge