Junhyeog Lee
06/02/2026, 1:22 AMRocky
06/02/2026, 1:22 AMusername@'host') that logs into the system.
* Role: A container for a set of privileges.
* Relationship:
* Many-to-Many: A User can be assigned multiple Roles, and a Role can be assigned to multiple Users.
* Inheritance: Roles can be assigned to other Roles, creating a hierarchy where a "parent" role inherits all privileges of its "child" roles.
* Default Role: You can set a default role for a user so they automatically have those privileges upon login.
2. User/Role and Database (Object Privileges)
This relationship defines who can see or modify what data.
* Database: A logical container for tables, views, and other data objects.
* Relationship:
* Privileges (like SELECT, INSERT, DROP) are granted on a Database (or specific tables within it) to a Role or a User.
* Recommended practice is to grant privileges to a Role (e.g., analyst_role) and then assign that role to the User.
3. Resource Group (Workload Management)
Resource Groups isolate computing resources (CPU, memory, concurrency) to prevent one user's heavy query from impacting others.
* Relationship to User/Role/Database: This is handled via Classifiers. When a query is submitted, StarRocks uses classifiers to decide which Resource Group should handle it.
* User/Role Classifier: You can map all queries from a specific User or Role to a specific Resource Group.
* Database Classifier: You can map all queries accessing a specific Database to a Resource Group.
* Privilege Relationship: To manage the Resource Group itself (e.g., ALTER or DROP), a User or Role must be granted specific administrative privileges on that resource group object.
Summary Table
Entity | Primary Function | Relationship to Others
User | Identity | Owns Roles; executes queries; mapped to Resource Groups via Classifiers.
Role | Privilege Bundle | Assigned to Users; granted permissions on Databases; used as a Classifier for Resource Groups.
Database | Data Container | Target of privileges granted to Users/Roles; used as a Classifier to route queries to Resource Groups.
Resource Group | Resource Isolation | Governs the hardware resources used by queries initiated by specific Users, Roles, or targeting specific Databases.
In short: Users use Roles to get permission to access Databases, and Resource Groups ensure that those users don't consume more than their fair share of cluster resources based on their identity or the database they are querying.
References
• administration/management/resource_management/resource_group.md
• faq/resource_isolation_faq.md
• administration/user_privs/authorization/privilege_item.mdJunhyeog Lee
06/02/2026, 1:27 AMRocky
06/02/2026, 1:27 AMSELECT access to the same 10 databases, you would have to execute 50 separate GRANT statements. If a new database is added, you must manually grant access to all 50 users individually. With Roles, you grant the permission once to the analyst role, and all 50 users inherit it instantly.
2. Difficulty in Auditing and Visibility
When privileges are scattered across individual users, it becomes difficult to verify who has access to what.
* With Roles: You can simply check the analyst role to see the standard permission set for that job function.
* Without Roles: You must inspect every single user identity to find "hidden" or inconsistent permissions, increasing the risk of over-privileging users.
3. Error-Prone Offboarding and Role Changes
When an employee's responsibilities change (e.g., moving from Marketing to Finance), you have to manually REVOKE specific permissions and GRANT new ones. It is very common to miss a "revoke" step, leaving users with "permission creep" (access they no longer need). With roles, you simply swap their assigned role.
4. Fragmented Resource Group Classifiers
StarRocks uses Classifiers to map queries to Resource Groups. You can create a classifier based on a ROLE.
_ If you use roles, you can set a rule that says: _"Any query from a user with the heavy_user role goes to the Large Resource Group."*
* If you don't use roles, you must create individual classifiers for every single user, making your resource management configuration bloated and hard to maintain.
5. Lack of Hierarchy and Inheritance
Roles in StarRocks support Inheritance. For example, a senior_analyst role can inherit all privileges from a junior_analyst role plus additional ones. Direct user grants have no such structure; you cannot make "User B inherit from User A," forcing you to duplicate the entire privilege set manually.
Recommendation
The StarRocks documentation recommends a hybrid approach:
* Use Roles for standard, long-term permissions tied to job functions or service types.
* Use Direct User Grants only for temporary or highly specific exceptions (e.g., giving one specific user access to a single sensitive table for 24 hours).
References
• administration/user_privs/authorization/user_privs.md
• administration/user_privs/authorization/User_privilege.md
References
• administration/user_privs/authorization/user_privs.md
• administration/user_privs/authorization/User_privilege.md