Class CsvRulesManager
java.lang.Object
org.kawanfw.sql.api.server.firewall.DefaultSqlFirewallManager
org.kawanfw.sql.api.server.firewall.CsvRulesManager
- All Implemented Interfaces:
SqlFirewallManager
- Direct Known Subclasses:
CsvRulesManagerNoReload
public class CsvRulesManager extends DefaultSqlFirewallManager implements SqlFirewallManager
Firewall manager that checks each SQL request against the content of a CSV
File. The CSV file is loaded in memory at AceQL server startup.
The name of the CSV file that will be used by a database is:
The file must be located in the same directory as the
The CSV file contains the rules for accessing the tables, with semicolon for separator:
Note that:
Note that updating the CSV file will reload the rules. If you prefer to disallow dynamic reloading, use a
See an example of CSV file: sampledb_rules_manager.csv
The name of the CSV file that will be used by a database is:
<database>_rules_manager.csv, where database is
the name of the database declared in the aceql.properties files.The file must be located in the same directory as the
aceql.properties file used when starting the AceQL server.The CSV file contains the rules for accessing the tables, with semicolon for separator:
- First line contains the element names:
username;table;delete;insert;select;update;optional comments - Subsequent lines contain the rules, with the values for each element:
username: AceQL username of the connected client.table: the table name to access. Name must not include dots and prefixes.delete:trueif the username has the right to delete rows of the table, elsefalse.insert:trueif the username has the right to insert rows in the table, elsefalse.select:trueif the username has the right to select rows of the table, elsefalse.update:trueif the username has the right to update rows of the table, elsefalse.- Optional comments for the rule.
Note that:
publicvalue may be used for theusernamecolumn and means any username. At execution time: if a rule withpublicreturns true for a CSV column, the rule supersedes other declared rules declared for specific users for the same CSV column.allvalue is allowed fortablecolumn and means any table. At execution time: If a rule withallreturns true for a CSV column, the rule supersedes other specific rules declared for specific tables for the same CSV column.
Note that updating the CSV file will reload the rules. If you prefer to disallow dynamic reloading, use a
CsvRulesManagerNoReload
implementation. See an example of CSV file: sampledb_rules_manager.csv
- Since:
- 4.1
- Author:
- Nicolas de Pomereu
-
Constructor Summary
Constructors Constructor Description CsvRulesManager() -
Method Summary
Modifier and Type Method Description booleanallowSqlRunAfterAnalysis(SqlEvent sqlEvent, Connection connection)Allows the execution of the statement if an allowing rules exists in the:<database>_rules_manager.csvfile.Methods inherited from class org.kawanfw.sql.api.server.firewall.DefaultSqlFirewallManager
allowExecute, allowMetadataQuery, allowStatementClassMethods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.kawanfw.sql.api.server.firewall.SqlFirewallManager
allowExecute, allowMetadataQuery, allowStatementClass
-
Constructor Details
-
CsvRulesManager
public CsvRulesManager()
-
-
Method Details
-
allowSqlRunAfterAnalysis
public boolean allowSqlRunAfterAnalysis(SqlEvent sqlEvent, Connection connection) throws IOException, SQLExceptionAllows the execution of the statement if an allowing rules exists in the:<database>_rules_manager.csvfile.- Specified by:
allowSqlRunAfterAnalysisin interfaceSqlFirewallManager- Overrides:
allowSqlRunAfterAnalysisin classDefaultSqlFirewallManager- Parameters:
sqlEvent- the SQL event asked by the client side. Contains all info about the SQL call (client username, database name, IP Address of the client, and SQL statement details)connection- The current SQL/JDBCConnection- Returns:
true. No analysis is done so all SQL statements are authorized.- Throws:
IOException- if an IOException occursSQLException- if a SQLException occurs
-