In ToolJet you can configure dynamic access rules to build secure, role-based applications. You can configure permissions at the page level, query level, component level, and row level to ensure users only access the features and data they're authorized to use.
## When To Use
1.**Multi-role applications**: When your app serves different user types (leadership, managers, executives, etc.) who need access to different features, data, or functionality based on their role.
2.**Sensitive data protection**: When your application handles confidential information like financial data, personal records, or business-critical operations that should only be accessible to authorized personnel.
3.**Compliance and security requirements**: When your organization has regulatory requirements, audit trails, or security policies that mandate controlled access to specific features, data, or administrative functions.
## Permission Types
| <divstyle={{width:"150px"}}> Permission Level </div> | <divstyle={{width:"200px"}}> Description </div> | <divstyle={{width:"200px"}}> Use When </div> |
| [Page Level](/docs/app-builder/dynamic-access-rule/page-level) | Control which users can access specific pages in your application | Entire page should be hidden from certain roles |
| [Query Level](/docs/app-builder/dynamic-access-rule/query-level) | Restrict which users can execute particular queries or API calls | Sensitive data operations need protection |
| [Component Level](/docs/app-builder/dynamic-access-rule/component-level) | Hide or show specific UI components based on access permission | Users can view a page but shouldn't interact with all elements |
| [Row Level Security](/docs/app-builder/dynamic-access-rule/row-level-security) | Control which records a user can see or interact with in database queries | Different users need access to different subsets of data from the same table |