An access control system for providing a unified access control for data stored in federated databases, the access control system comprising a central access controller configured to: receive a federated query from a user; parse the federated query received to fetch table-associated information from the federated query, the table associated information comprising one or more tables and associated column names; generate a query plan, based on the table associated information fetched from the received federated query; verify the generated query plan by using a user right pre-stored in a central authorization metadata table and the one or more tables and associated column names; and, based on the verification, fail the federated query if, according to the user right, any of the one or more tables are restricted to the user, otherwise, fail the query if, according to the user right, at least one of the columns of the query plan is restricted, otherwise, update the generated query plan, wherein the update comprises: for each column name associated with the one or more tables in the query plan: if the column name is an asterisk, replace the asterisk with all column names for columns of the associated table not restricted according to the user right; and after all columns in the query plan have been checked and the query did not fail: if, according to the user right, there are any restricted rows associated with the one or more tables in the query plan, add a filter to exclude the restricted rows from the generated query plan. receive a federated query from a user; parse the federated query received to fetch table-associated information from the federated query, the table associated information comprising one or more tables and associated column names; generate a query plan, based on the table associated information fetched from the received federated query; verify the generated query plan by using a user right pre-stored in a central authorization metadata table and the one or more tables and associated column names; and, based on the verification, fail the federated query if, according to the user right, any of the one or more tables are restricted to the user, otherwise, fail the query if, according to the user right, at least one of the columns of the query plan is restricted, otherwise, update the generated query plan, wherein the update comprises: for each column name associated with the one or more tables in the query plan: if the column name is an asterisk, replace the asterisk with all column names for columns of the associated table not restricted according to the user right; and after all columns in the query plan have been checked and the query did not fail: if, according to the user right, there are any restricted rows associated with the one or more tables in the query plan, add a filter to exclude the restricted rows from the generated query plan. fail the federated query if, according to the user right, any of the one or more tables are restricted to the user, otherwise, fail the query if, according to the user right, at least one of the columns of the query plan is restricted, otherwise, update the generated query plan, wherein the update comprises: for each column name associated with the one or more tables in the query plan: if the column name is an asterisk, replace the asterisk with all column names for columns of the associated table not restricted according to the user right; and after all columns in the query plan have been checked and the query did not fail: if, according to the user right, there are any restricted rows associated with the one or more tables in the query plan, add a filter to exclude the restricted rows from the generated query plan. if the column name is an asterisk, replace the asterisk with all column names for columns of the associated table not restricted according to the user right; and after all columns in the query plan have been checked and the query did not fail: if, according to the user right, there are any restricted rows associated with the one or more tables in the query plan, add a filter to exclude the restricted rows from the generated query plan.