Key principles
Understanding these core concepts is essential for managing permissions effectively:Permissions are granted to groups, not individuals
Permissions are granted to groups, not individuals
Users can belong to multiple groups
Users can belong to multiple groups
Most permissive access wins
Most permissive access wins
Block All Users group first
Block All Users group first
Accessing permissions settings
Permission types
Data permissions
Control access to databases, schemas, and tables.View data permissions
Determines what data people can see in questions, dashboards, models, and metrics. Permission levels:| Level | Description | Available at |
|---|---|---|
| Can view | Full access to all data in the source | Database, Schema, Table |
| Granular | Set permissions per schema or table | Database, Schema |
| Row and column security | Restrict specific rows/columns | Table only |
| Impersonated | Use database roles for permissions | Database only |
| Blocked | No access to the data | Database, Schema, Table |
Can view data permission
Can view data permission
- View questions and dashboards using that data
- See models and metrics built on that data
- Need additional “Create queries” permission to browse databases
Granular view data permission
Granular view data permission
Row and column security
Row and column security
- Multi-tenant analytics: Each customer sees only their data
- Regional restrictions: Users see only their region’s data
- Role-based filtering: Managers see their team’s data only
- User attributes configured for each person
- Table-level permission configuration
- Row filtering by column values
- Column hiding
- Custom SQL views of tables
Impersonated view data permission
Impersonated view data permission
- Centralize permission management in your database
- Leverage existing database security policies
- Simplify permission administration
Blocked view data permission
Blocked view data permission
- Users cannot view questions using that data, regardless of collection permissions
- Blocks all native SQL queries from the entire database (even if only one table is blocked)
- Other groups with Can view access can override the block
Create queries permissions
Controls whether users can create new questions and use the database browser. Permission levels:Query builder and native
Query builder and native
- Metabase’s visual query builder
- Native SQL/NoSQL editor
Query builder only
Query builder only
- Create questions with the visual query builder
- Drill through existing questions
- Cannot write native SQL queries
Granular
Granular
Download results permissions
- No: Cannot download results
- Granular: Set per-table or per-schema limits
- 10 thousand rows: Can download up to 10,000 rows
- 1 million rows: Can download up to 1 million rows
Manage table metadata permissions
- Descriptions
- Display names
- Field types
- Visibility settings
- Yes: Can edit all metadata for the data source
- No: Cannot edit any metadata
- Granular: Set per-table permissions
Manage database permissions
- Edit connection options
- Sync schemas manually
- Scan field values
- View database settings page
Transform permissions
- Can only be set at database level
- Requires “Can view” and “Query builder and native” permissions for all tables
Collection permissions
Control access to questions, dashboards, models, metrics, and other content.| Level | Can view | Can edit | Can save new items | Can manage permissions |
|---|---|---|---|---|
| View | ✅ | ❌ | ❌ | ❌ |
| Curate | ✅ | ✅ | ✅ | ❌ |
| Manage | ✅ | ✅ | ✅ | ✅ |
| No access | ❌ | ❌ | ❌ | ❌ |
Application permissions
Settings access
Settings access
- General settings
- Email configuration
- Slack integration
- Webhooks
- Maps
- Localization
- Appearance
- Public sharing
- Embedding
- Caching
Monitoring access
Monitoring access
- Performance tools
- Query logs
- Troubleshooting utilities
- Usage analytics
Subscriptions and alerts
Subscriptions and alerts
- Dashboard subscriptions
- Question alerts
Row and column security
How it works
Row and column security creates a filtered version of a table that replaces the original table everywhere in Metabase for specific groups.Types of security
Row-level security
Row-level security
Region column equals user’s region attribute.Users with region: "EMEA" see only EMEA rows.
Users with region: "Americas" see only Americas rows.Custom row and column security
Custom row and column security
- Multiple row filters
- Hidden columns
- Edited/transformed columns
- Hides the Email column
- Filters by multiple conditions
- Shows only specific date ranges
Setting up row and column security
Prepare prerequisites
- Create user attributes for affected users
- Create a group for the secured users
- (For column security) Create a SQL question in an admin-only collection
Multi-tenant analytics tools
Database routing
Build questions once and route queries to different databases based on the user. Use case: Each customer has their own database with identical schemas.Connection impersonation
Use database roles to manage permissions directly in your database. Use case: You prefer centralized permission management at the database level.Best practices
Start with All Users blocked
Common permission patterns
Executive dashboard access
Executive dashboard access
- Create “Executives” group
- Grant “Can view” data permissions
- Grant “View” collection permissions to Executive Dashboards collection
- Block “Create queries” to prevent ad-hoc analysis
Data analyst full access
Data analyst full access
- Create “Analysts” group (or use Data Analysts group on Pro/Enterprise)
- Grant “Can view” data permissions
- Grant “Query builder and native” create permissions
- Grant “Curate” collection permissions
- Grant “1 million rows” download permissions
Regional sales teams
Regional sales teams
- Add
regionuser attribute to each rep - Create “Sales” group
- Configure row-level security filtering Sales data by region
- Grant “Query builder only” create permissions
- Grant “View” collection permissions to Sales collection
Multi-tenant customer portals
Multi-tenant customer portals
- Add
customer_iduser attribute - Create per-customer groups or use single group with attributes
- Configure row and column security filtering by customer_id
- Grant “View” collection permissions to shared dashboards
- Block “Create queries” to prevent custom analysis
Troubleshooting permissions
User can't see expected data
User can't see expected data
- User’s group memberships
- All Users group permissions (might be blocking)
- Both data and collection permissions
- Whether data permissions are “Blocked” somewhere
- Row and column security filters
User has more access than expected
User has more access than expected
- All groups the user belongs to
- All Users group permissions (most permissive wins)
- Whether user is in Administrators group
- Collection inheritance from parent collections
Native SQL disabled unexpectedly
Native SQL disabled unexpectedly
Permission conflicts with row and column security
Permission conflicts with row and column security