Veil2 based relational security implementation
has the following advantages over a more traditional security
by implementing data access controls in the database, your data can be protected even in the event of a breach of, or bugs in, your application or its server;
new functionality can be added to your application, without risk of impact to the underlying data security;
if you have multiple applications, the same restrictions can be applied universally, without having multiple implementations;
by building the security into the database relations themselves, access controls can be managed in a more natural way;
fine degrees of access control can be implemented without increasing the complexity of your application;
you will be able to implement a security model that is complete and about which you can reason;
most of the details of the access controls can be hidden from your application developers, potentially making their jobs easier
Veil2much of the hard work of dealing with scopes, contexts, roles and privileges has already been developed for you;
Veil2you have complete control of your security implementation: you can customize and extend it in any way you see fit.
Note that even though you no longer have to
implement access controls in your applications, your application
should be written to avoid any access that the database would
prevent. This is simply good practice. You should not allow
Veil2's presence to make your developers lazy.