Admin user
ClickHouse Cloud services have an admin user,default, that is created when the service is created. The password is provided at service creation, and it can be reset by ClickHouse Cloud users that have the Admin role.
When you add additional SQL users for your ClickHouse Cloud service, they will need a SQL username and password. If you want them to have administrative-level privileges, then assign the new users the role default_role. For example, adding user clickhouse_admin:
default user. Instead, statements will be run as a user named sql-console:${cloud_login_email}, where cloud_login_email is the email of the user currently running the query.These automatically generated SQL Console users have the default role.Passwordless authentication
There are two roles available for SQL console:sql_console_admin with identical permissions to default_role and sql_console_read_only with read-only permissions.
Admin users are assigned the sql_console_admin role by default, so nothing changes for them. However, the sql_console_read_only role allows non-admin users to be granted read-only or full access to any instance. An admin needs to configure this access. The roles can be adjusted using the GRANT or REVOKE commands to better fit instance-specific requirements, and any modifications made to these roles will be persisted.
Granular access control
This access control functionality can also be configured manually for user-level granularity. Before assigning the newsql_console_* roles to users, SQL console user-specific database roles matching the namespace sql-console-role:<email> should be created. For example:
sql_console_sa_role and sql_console_pm_role, and granting them to specific users. For example:
Test admin privileges
Log out as the userdefault and log back in as user clickhouse_admin.
All of these should succeed:
Non-admin users
Users should have the privileges necessary, and not all be admin users. The rest of this document provides example scenarios and the roles required.Preparation
Create these tables and users to be used in the examples.Creating a sample database, table, and rows
Create a test database
Create a table
Populate the table with sample rows
Verify the table
Create column_user
Create row_user
Creating roles
With this set of examples:- roles for different privileges, such as columns and rows will be created
- privileges will be granted to the roles
- users will be assigned to each role
Create a role to restrict users of this role to only see column1 in database db1 and table1:
Set privileges to allow view on column1
Add the column_user user to the column1_users role
Create a role to restrict users of this role to only see selected rows, in this case, only rows containing A in column1
Add the row_user to the A_rows_users role
Create a policy to allow view on only where column1 has the values of A
Set privileges to the database and table
Grant explicit permissions for other roles to still have access to all rows
Verification
Testing role privileges with column restricted user
Log into the clickhouse client using the clickhouse_admin user
Verify access to database, table and all rows with the admin user.
Log into the ClickHouse client using the column_user user
Test SELECT using all columns
id and column1Verify SELECT query with only columns specified and allowed:
Testing role privileges with row restricted user
Log into the ClickHouse client using row_user
View rows available
B in column1 should be excluded.Modifying users and roles
Users can be assigned multiple roles for a combination of privileges needed. When using multiple roles, the system will combine the roles to determine privileges, the net effect will be that the role permissions will be cumulative. For example, if onerole1 allows for only select on column1 and role2 allows for select on column1 and column2 then the user will have access to both columns.
Using the admin account, create new user to restrict by both row and column with default roles
Remove prior privileges for A_rows_users role
Allow A_row_users role to only select from column1
Log into the ClickHouse client using row_and_column_user
Test with all columns:
Test with limited allowed columns:
Troubleshooting
There are occasions when privileges intersect or combine to produce unexpected results, the following commands can be used to narrow the issue using an admin accountListing the grants and roles for a user
List roles in ClickHouse
Display the policies
View how a policy was defined and current privileges
Example commands to manage roles, policies, and users
The following commands can be used to:- delete privileges
- delete policies
- unassign users from roles
- delete users and roles