What Is A Relational Security System? A Relational Security System is one in which your security model is part of your data model. Access to each piece of data or functionality is limited according to the user's relationships to that data or functionality. What this means is that access rights are contextual, based on relationships between that data and the connected user, and that each test for a specific access right is a test in a specific context. For example: You have access to the company accounts only for the company you work for. Your access rights to company accounts data applies only in the context of the company that employs you. You would not have access to company accounts for other companies. We say that you have been given those access rights in company-context for your company. You have access to employee data only for employees of your department. Your access to employee data applies only in the context of your department. You would not have access to employee data for other departments. We say you have been given those access rights in department-context for your department. You have access to see the postings of only your friends. You have access to postings only in the contexts of posters who are recorded as your friends. We say that you have those access rights in friend-context for each of your friends. Users acquire their access rights in various ways: all users may get a basic set of rights; some users may be members of teams or departments and their roles in those things may give them implied rights; and some users may be granted specific rights explicitly. Even with explicit assignments, those assignments may occur in different contexts giving the user access to greater or smaller subsets of data: you might be a given the manager role for a project, or for a department, or for a division, or company-wide. Contexts may be created from almost any definable subset of your data. Mostly they are based on the relationships of your users with their data, though they need not be. Typically, they are defined in terms of users and their relationships to specific artifacts described by your database. For example, a person's relationship to the company they work for, or their membership of a department or project team. Having contexts associated with each assigned access right means that the granularity of access controls can be as coarse or as fine as the data demands, and it means that there is rarely the need for more complex access checks than "do I have privilege X in context Y?". Instead of having rights which imply conditional rule checks, such as the right to maintain-a-project-if-the-user-is-a-member-of-the-project-team, rights can effectively contain their conditionality through their context.