A method for controlling access to a data source includes steps of: storing a plurality of access control policies in a database; generating a plurality of tree-structured data from the policies; merging the plurality of tree-structured data; determining that a user is attempting to access part of the data source; determining whether or not to permit access; verify consistency of the determination; store the merged tree-structured data; and designate the part of the data source by a path expression.