Chapter 6. How Difficult Is This?

You could be forgiven for thinking, given Veil2's capability and sophistication, that it would be difficult to set-up and use. But this is not the case. It is not trivial and it does require you to develop a deeper understanding of your data than you might choose, but the process is well documented and each individual step is simple enough.

The best way to get a grip on the complexity and amount of effort that would be required is to look at the demo apps.

In the spirit of expecting resistance, what follows is a list of imagined criticisms of Veil2 with appropriate responses. This is in place of a FAQ since, at the time of writing, no-one has asked any questions.

6.1. Frequently Imagined Criticisms (FIC)

It’s easy to criticize relational security systems and implementations as they are not widely used and are worryingly novel. Here are a few criticisms that have been directed at Veil2-like implementations.

  • It’s too difficult for our application developers to understand.

    Actually, it’s easier for them than having to implement application security for themselves. For the most part, they don’t need to understand the details. Also, they may be smarter than you think.

  • The users won’t understand.

    They don’t need to. The security implementation is almost entirely hidden. But they should be able to understand that assigning a role to a user in a given context, gives that user the ability to perform tasks appropriate to that role.

  • We’ll need a database specialist to do this.

    Yes, you will. And they had better be good at what they do. But the time that your database specialist spends on setting up your security system with Veil2 should be matched by the amount of time saved by your application developers who will no longer have to implement security mechanisms themselves.

    Furthermore, with a good database specialist available you should end up with a better overall database design as well as one that is well secured.

    If you’re not prepared to employ a database specialist then relational security is not for you.

  • No-one else does it this way.

    And how is that working out for them? The track record of everyone else does not look too good when you start looking closely.

  • It’s going to be expensive.

    Not necessarily. Your application developers should have an easier time of things. You should end up with a higher-quality, and easier-to-maintain application. There will be a need to do some careful thinking about access controls, and you will need to document your security model, but that is a good thing to do anyway.

  • We will be held hostage by our database/security expert.

    Only if you let them. Documenting your security model is essential. Documenting your administration processes is essential. You should be doing this anyway.

    If you have the documentation, and you have access to good developers who are prepared to read, then you should have no problems. You will need quality control but you have that anyway.

  • How do we know it’s going to work?

    Perhaps you could run some tests.

  • Won’t performance be a problem?

    Not in the author's experience but you may find otherwise. You may need to perform some data denormalizations and you will want to analyze some of your queries but there should be little performance impact.

    If you are concerned, and you should be, try modelling your use-case and test it. Find your biggest tables and implement a minimal test database that you aim to secure using Veil2. If the big tables perform adequately, then the rest should be a breeze.

  • There is no expertise available.

    Any Postgres specialist who can read this documentation should be able to cope and quickly become an expert. The underlying principles are all documented. The code is all documented. There are documented examples. There are even contact links.