管理员用户
default,会在服务创建时自动创建。密码会在创建服务时提供,并且拥有 Admin 角色的 ClickHouse Cloud 用户可以重置该密码。
当你为 ClickHouse Cloud 服务添加额外的 SQL 用户时,他们需要提供 SQL 用户名和密码。如果你希望他们拥有管理员级别的特权,请为这些新用户分配 default_role 角色。例如,添加用户 clickhouse_admin:
使用 SQL 控制台时,你的 SQL 语句不会以
default 用户身份执行。相反,这些语句会以名为 sql-console:${cloud_login_email} 的用户身份执行,其中 cloud_login_email 是当前运行查询的用户的电子邮件地址。这些自动生成的 SQL 控制台用户具有 default 角色。无密码身份验证
sql_console_admin,其 权限 与 default_role 完全一致;以及 sql_console_read_only,具有只读权限。
Admin 用户默认会被分配 sql_console_admin 角色,因此对他们来说无需做任何更改。不过,sql_console_read_only 角色使非 Admin 用户也可以被授予任意 instance 的只读或完全访问权限。此类访问需要由 Admin 配置。可以使用 GRANT 或 REVOKE 命令调整这些角色,以更好地满足特定 instance 的需求,并且对这些角色所做的任何修改都会被保留。
细粒度访问控制
sql_console_* 角色之前,应先创建与命名空间 sql-console-role:<email> 对应的 SQL 控制台用户专用数据库角色。例如:
sql_console_sa_role 和 sql_console_pm_role 这类角色,并将其授予特定用户。例如:
测试管理员权限
default 用户登录,然后使用 clickhouse_admin 用户重新登录。
以下所有操作都应成功:
非管理员用户
准备工作
创建示例数据库、表和行
1
创建测试数据库
2
创建表
3
向表中插入示例行
4
验证表
查询
响应
5
创建 column_user
创建一个普通用户,用于演示对某些列的访问限制:6
创建 row_user
创建一个普通用户,用于演示对具有特定值的行实施访问限制:创建角色
- 创建具有不同权限的角色,例如针对列和行的角色
- 为角色授予权限
- 将用户分配给各个角色
1
创建一个角色,将该角色的用户限制为只能查看数据库 db1 中 table1 表的 column1:
2
设置权限,允许查看 column1
3
将用户 column_user 添加到角色 column1_users
4
创建一个角色,将该角色的用户限制为只能查看选定的行;在本例中,仅能查看 column1 中包含 A 的行
5
将 row_user 添加到角色 A_rows_users
6
创建一条策略,仅允许查看 column1 值为 A 的行
7
为数据库和表设置权限
8
为其他角色授予显式权限,使其仍可访问所有行
将策略附加到表后,系统会应用该策略,只有策略中定义的用户和角色才能对该表执行操作,其他所有用户和角色都将被拒绝执行任何操作。为了避免将这种限制性的行策略应用到其他用户,必须另外定义一条策略,以允许其他用户和角色保留常规访问权限或其他类型的访问权限。
验证
使用列受限用户测试角色权限
1
使用 clickhouse_admin 用户登录 ClickHouse 客户端
2
验证管理员用户对数据库、表和所有行的访问权限。
3
使用 column_user 用户登录 ClickHouse 客户端
4
测试使用所有列执行 SELECT
由于查询指定了所有列,而该用户仅有对
id 和 column1 的访问权限,因此访问被拒绝。5
验证仅查询已指定且允许访问的列的 SELECT 查询:
使用行级受限用户测试角色权限
1
使用 row_user 登录 ClickHouse 客户端
2
查看可访问的行
确认只返回上述两行,
column1 中值为 B 的行应被排除。修改用户和角色
role1 只允许查询 column1,而 role2 允许查询 column1 和 column2,那么该用户将有权访问这两列。
1
使用管理员账户,创建一个按行和列限制且带默认角色的新用户
2
移除 A_rows_users 角色先前的权限
3
仅允许 A_row_users 角色查询 column1
4
使用 row_and_column_user 登录 ClickHouse 客户端
5
使用所有列进行测试:
6
使用受限的允许列进行测试:
故障排查
列出用户的授权和角色
查看 ClickHouse 中的角色
查看策略
查看策略定义及当前权限
管理角色、策略和用户的示例命令
- 删除权限
- 删除策略
- 将用户从角色中移除
- 删除用户和角色