@clickzetta/cz-cli-darwin-x64 0.3.17 → 0.3.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/bin/cz-cli +0 -0
  2. package/bin/skills/clickzetta-access-control/SKILL.md +243 -0
  3. package/bin/skills/clickzetta-access-control/eval_cases.jsonl +3 -0
  4. package/bin/skills/clickzetta-access-control/references/dynamic-masking.md +86 -0
  5. package/bin/skills/clickzetta-access-control/references/grant-revoke.md +103 -0
  6. package/bin/skills/clickzetta-access-control/references/role-management.md +66 -0
  7. package/bin/skills/clickzetta-access-control/references/user-management.md +61 -0
  8. package/bin/skills/clickzetta-ai-vector-search/SKILL.md +160 -0
  9. package/bin/skills/clickzetta-ai-vector-search/eval_cases.jsonl +4 -0
  10. package/bin/skills/clickzetta-ai-vector-search/references/vector-search.md +155 -0
  11. package/bin/skills/clickzetta-batch-sync-pipeline/SKILL.md +386 -0
  12. package/bin/skills/clickzetta-cdc-sync-pipeline/SKILL.md +548 -0
  13. package/bin/skills/clickzetta-data-ingest-pipeline/SKILL.md +220 -0
  14. package/bin/skills/clickzetta-data-ingest-pipeline/eval_cases.jsonl +5 -0
  15. package/bin/skills/clickzetta-data-retention/SKILL.md +160 -0
  16. package/bin/skills/clickzetta-data-retention/eval_cases.jsonl +5 -0
  17. package/bin/skills/clickzetta-data-retention/references/lifecycle-reference.md +175 -0
  18. package/bin/skills/clickzetta-dw-modeling/SKILL.md +259 -0
  19. package/bin/skills/clickzetta-dw-modeling/eval_cases.jsonl +4 -0
  20. package/bin/skills/clickzetta-dw-modeling/references/modeling-patterns.md +100 -0
  21. package/bin/skills/clickzetta-dynamic-table/SKILL.md +112 -0
  22. package/bin/skills/clickzetta-dynamic-table/best-practices/dimension-table-join-guide.md +257 -0
  23. package/bin/skills/clickzetta-dynamic-table/best-practices/medallion-and-stream-patterns.md +124 -0
  24. package/bin/skills/clickzetta-dynamic-table/best-practices/non-partitioned-merge-into-warning.md +96 -0
  25. package/bin/skills/clickzetta-dynamic-table/best-practices/performance-optimization.md +109 -0
  26. package/bin/skills/clickzetta-external-function/SKILL.md +203 -0
  27. package/bin/skills/clickzetta-external-function/eval_cases.jsonl +4 -0
  28. package/bin/skills/clickzetta-external-function/references/external-function-ddl.md +171 -0
  29. package/bin/skills/clickzetta-file-import-pipeline/SKILL.md +156 -0
  30. package/bin/skills/clickzetta-index-manager/SKILL.md +140 -0
  31. package/bin/skills/clickzetta-index-manager/eval_cases.jsonl +5 -0
  32. package/bin/skills/clickzetta-index-manager/references/bloomfilter-index.md +67 -0
  33. package/bin/skills/clickzetta-index-manager/references/index-management.md +73 -0
  34. package/bin/skills/clickzetta-index-manager/references/inverted-index.md +80 -0
  35. package/bin/skills/clickzetta-index-manager/references/vector-index.md +81 -0
  36. package/bin/skills/clickzetta-kafka-ingest-pipeline/SKILL.md +751 -0
  37. package/bin/skills/clickzetta-kafka-ingest-pipeline/eval_cases.jsonl +5 -0
  38. package/bin/skills/clickzetta-kafka-ingest-pipeline/references/kafka-pipe-syntax.md +324 -0
  39. package/bin/skills/clickzetta-monitoring/SKILL.md +199 -0
  40. package/bin/skills/clickzetta-monitoring/eval_cases.jsonl +5 -0
  41. package/bin/skills/clickzetta-monitoring/references/job-history-analysis.md +97 -0
  42. package/bin/skills/clickzetta-monitoring/references/show-jobs.md +48 -0
  43. package/bin/skills/clickzetta-oss-ingest-pipeline/SKILL.md +537 -0
  44. package/bin/skills/clickzetta-query-optimizer/SKILL.md +156 -0
  45. package/bin/skills/clickzetta-query-optimizer/eval_cases.jsonl +5 -0
  46. package/bin/skills/clickzetta-query-optimizer/references/explain.md +56 -0
  47. package/bin/skills/clickzetta-query-optimizer/references/hints-and-sortkey.md +78 -0
  48. package/bin/skills/clickzetta-query-optimizer/references/optimize.md +65 -0
  49. package/bin/skills/clickzetta-query-optimizer/references/result-cache.md +49 -0
  50. package/bin/skills/clickzetta-query-optimizer/references/show-jobs.md +42 -0
  51. package/bin/skills/clickzetta-realtime-sync-pipeline/SKILL.md +276 -0
  52. package/bin/skills/clickzetta-sql-pipeline-manager/SKILL.md +379 -0
  53. package/bin/skills/clickzetta-sql-pipeline-manager/evals/evals.json +166 -0
  54. package/bin/skills/clickzetta-sql-pipeline-manager/references/dynamic-table.md +185 -0
  55. package/bin/skills/clickzetta-sql-pipeline-manager/references/materialized-view.md +129 -0
  56. package/bin/skills/clickzetta-sql-pipeline-manager/references/pipe.md +222 -0
  57. package/bin/skills/clickzetta-sql-pipeline-manager/references/table-stream.md +125 -0
  58. package/bin/skills/clickzetta-table-stream-pipeline/SKILL.md +206 -0
  59. package/bin/skills/clickzetta-vcluster-manager/SKILL.md +212 -0
  60. package/bin/skills/clickzetta-vcluster-manager/references/vc-cache.md +54 -0
  61. package/bin/skills/clickzetta-vcluster-manager/references/vcluster-ddl.md +150 -0
  62. package/bin/skills/clickzetta-volume-manager/SKILL.md +292 -0
  63. package/bin/skills/clickzetta-volume-manager/references/volume-ddl.md +199 -0
  64. package/bin/skills/cz-cli/SKILL.md +1 -1
  65. package/bin/skills/cz-cli-inner/SKILL.md +8 -0
  66. package/package.json +1 -1
  67. /package/bin/skills/{dt-creator → clickzetta-dynamic-table/dt-creator}/SKILL.md +0 -0
  68. /package/bin/skills/{dt-creator → clickzetta-dynamic-table/dt-creator}/references/dt-declaration-strategy.md +0 -0
  69. /package/bin/skills/{dt-creator → clickzetta-dynamic-table/dt-creator}/references/incremental-config-reference.md +0 -0
  70. /package/bin/skills/{dt-creator → clickzetta-dynamic-table/dt-creator}/references/refresh-history-guide.md +0 -0
  71. /package/bin/skills/{dt-creator → clickzetta-dynamic-table/dt-creator}/references/sql-limitations.md +0 -0
  72. /package/bin/skills/{dynamic-table-alter → clickzetta-dynamic-table/dynamic-table-alter}/SKILL.md +0 -0
package/bin/cz-cli CHANGED
Binary file
@@ -0,0 +1,243 @@
1
+ ---
2
+ name: clickzetta-access-control
3
+ description: |
4
+ 管理 ClickZetta Lakehouse 的用户、角色和权限(RBAC),以及列级动态数据脱敏。
5
+ 覆盖用户创建/修改/删除、自定义角色管理、GRANT/REVOKE 细粒度授权、
6
+ SHOW GRANTS 权限查看、动态脱敏策略创建与绑定等完整安全治理工作流。
7
+ 当用户说"创建用户"、"添加用户"、"授权"、"GRANT"、"REVOKE"、"撤销权限"、
8
+ "创建角色"、"角色管理"、"RBAC"、"权限管理"、"查看权限"、"数据脱敏"、
9
+ "动态脱敏"、"列级安全"、"敏感数据保护"、"用户权限"、"网络策略"、
10
+ "IP 白名单"、"IP 黑名单"、"NETWORK POLICY"时触发。
11
+ Keywords: RBAC, GRANT, REVOKE, role, user, permission, masking policy, column-level security
12
+ ---
13
+
14
+ # ClickZetta 访问控制与数据安全
15
+
16
+ ## 权限体系概览
17
+
18
+ ```
19
+ 账户(Account)
20
+ └── 服务实例(Instance)
21
+ ├── 实例角色(instance_admin 等)
22
+ └── 工作空间(Workspace)
23
+ ├── 工作空间角色(workspace_admin / workspace_dev / workspace_analyst)
24
+ ├── 自定义角色(CREATE ROLE)
25
+ └── 用户(User)
26
+ ```
27
+
28
+ **推荐做法**:优先使用角色(RBAC)管理权限,而非直接对用户逐个授权(ACL)。
29
+
30
+ ## ⚠️ 关键注意事项
31
+
32
+ - `CREATE USER` **不是创建新账户**,而是将已有账户用户添加到当前工作空间。用户必须先在管理中心(账户管理系统)中创建,才能执行 `CREATE USER`
33
+ - 自定义角色只能通过 SQL 创建,Web 端暂不支持
34
+ - 动态脱敏功能当前处于受邀预览阶段,需联系技术支持开通
35
+
36
+ ---
37
+
38
+ 阅读 [references/user-management.md](references/user-management.md)
39
+
40
+ ```sql
41
+ -- 将已有账户用户添加到工作空间
42
+ CREATE USER alice DEFAULT_VCLUSTER = default_ap DEFAULT_SCHEMA = public;
43
+
44
+ -- 修改用户默认集群/Schema
45
+ ALTER USER alice SET DEFAULT_VCLUSTER = default_ap DEFAULT_SCHEMA = dw;
46
+
47
+ -- 查看所有用户
48
+ SHOW USERS;
49
+
50
+ -- 从工作空间移除用户
51
+ DROP USER IF EXISTS alice;
52
+ ```
53
+
54
+ ---
55
+
56
+ ## 步骤 2:角色管理
57
+
58
+ 阅读 [references/role-management.md](references/role-management.md)
59
+
60
+ ```sql
61
+ -- 查看所有角色(含预置角色)
62
+ SHOW ROLES;
63
+
64
+ -- 创建自定义角色
65
+ CREATE ROLE analyst_role COMMENT '数据分析师角色';
66
+
67
+ -- 将角色授予用户
68
+ GRANT ROLE analyst_role TO USER alice;
69
+
70
+ -- 从用户撤销角色
71
+ REVOKE ROLE analyst_role FROM USER alice;
72
+
73
+ -- 删除自定义角色
74
+ DROP ROLE IF EXISTS analyst_role;
75
+ ```
76
+
77
+ 系统预置角色:`instance_admin`、`workspace_admin`、`workspace_dev`、`workspace_analyst`
78
+
79
+ ---
80
+
81
+ ## 步骤 3:权限授予与撤销
82
+
83
+ 阅读 [references/grant-revoke.md](references/grant-revoke.md)
84
+
85
+ ### 常用授权场景
86
+
87
+ ```sql
88
+ -- 授予表查询权限
89
+ GRANT SELECT ON TABLE public.orders TO USER alice;
90
+ GRANT SELECT ON TABLE public.orders TO ROLE analyst_role;
91
+
92
+ -- 授予 Schema 下所有权限
93
+ GRANT ALL ON SCHEMA public TO ROLE dev_role;
94
+
95
+ -- 授予使用计算集群权限
96
+ GRANT USE ON VCLUSTER default_ap TO USER alice;
97
+
98
+ -- 授予创建表权限
99
+ GRANT CREATE TABLE ON SCHEMA public TO USER alice;
100
+ ```
101
+
102
+ ### 撤销权限
103
+
104
+ ```sql
105
+ REVOKE SELECT ON TABLE public.orders FROM USER alice;
106
+ REVOKE ALL PRIVILEGES ON WORKSPACE ws_name FROM USER alice;
107
+ ```
108
+
109
+ ### 查看权限
110
+
111
+ ```sql
112
+ -- 查看当前用户权限
113
+ SHOW GRANTS;
114
+
115
+ -- 查看指定用户权限
116
+ SHOW GRANTS TO USER alice;
117
+
118
+ -- 查看工作空间角色权限
119
+ SHOW GRANTS TO ROLE analyst_role;
120
+
121
+ -- 查看实例级角色权限
122
+ SHOW GRANTS TO INSTANCE ROLE instance_admin;
123
+ ```
124
+
125
+ ---
126
+
127
+ ## 步骤 4:动态数据脱敏(预览功能)
128
+
129
+ 阅读 [references/dynamic-masking.md](references/dynamic-masking.md)
130
+
131
+ > ⚠️ 当前处于受邀预览阶段,需联系技术支持开通。
132
+
133
+ ```sql
134
+ -- 1. 创建脱敏函数(管理员看原文,其他人看脱敏)
135
+ CREATE FUNCTION public.mask_phone(phone STRING)
136
+ RETURNS STRING
137
+ AS CASE
138
+ WHEN current_user() = 'admin' THEN phone
139
+ ELSE CONCAT(SUBSTR(phone, 1, 3), '****', SUBSTR(phone, 8, 4))
140
+ END;
141
+
142
+ -- 2. 绑定到列
143
+ ALTER TABLE customers
144
+ CHANGE COLUMN phone
145
+ SET MASK public.mask_phone;
146
+
147
+ -- 3. 解除脱敏
148
+ ALTER TABLE customers
149
+ CHANGE COLUMN phone
150
+ UNSET MASK;
151
+ ```
152
+
153
+ ---
154
+
155
+ ## 典型场景
156
+
157
+ ### 场景 A:新员工入职授权
158
+
159
+ ```sql
160
+ -- 1. 添加用户到工作空间
161
+ CREATE USER new_employee DEFAULT_VCLUSTER = default_ap;
162
+
163
+ -- 2. 授予分析师角色
164
+ GRANT ROLE workspace_analyst TO USER new_employee;
165
+
166
+ -- 3. 额外授予特定表的写入权限
167
+ GRANT INSERT ON TABLE public.reports TO USER new_employee;
168
+ ```
169
+
170
+ ### 场景 B:创建只读角色并批量授权
171
+
172
+ ```sql
173
+ -- 1. 创建只读角色
174
+ CREATE ROLE readonly_role COMMENT '只读访问角色';
175
+
176
+ -- 2. 授予 Schema 下所有表的查询权限
177
+ GRANT SELECT ON TABLE public.orders TO ROLE readonly_role;
178
+ GRANT SELECT ON TABLE public.customers TO ROLE readonly_role;
179
+ GRANT USE ON VCLUSTER default_ap TO ROLE readonly_role;
180
+
181
+ -- 3. 将角色授予多个用户
182
+ GRANT ROLE readonly_role TO USER alice;
183
+ GRANT ROLE readonly_role TO USER bob;
184
+ ```
185
+
186
+ ---
187
+
188
+ ## 常见问题
189
+
190
+ | 问题 | 原因 | 解决方案 |
191
+ |---|---|---|
192
+ | CREATE USER 报错用户不存在 | 用户未在账户管理系统中创建 | 先在管理中心创建账户用户,再执行 CREATE USER |
193
+ | GRANT 后用户仍无法查询 | 缺少 USE VCLUSTER 权限 | `GRANT USE ON VCLUSTER default_ap TO USER alice` |
194
+ | 自定义角色无法在 Web 端创建 | 产品限制 | 只能通过 SQL 创建自定义角色 |
195
+ | 脱敏函数不生效 | 功能未开通 | 联系技术支持开通动态脱敏预览功能 |
196
+
197
+ ---
198
+
199
+ ## 步骤 5:网络策略(IP 白名单/黑名单)
200
+
201
+ 通过网络策略控制对 Lakehouse 服务实例的 JDBC、SDK 及 Web 访问,支持白名单和黑名单模式。
202
+
203
+ ```sql
204
+ -- 创建网络策略(白名单模式:仅允许指定 IP 访问)
205
+ CREATE NETWORK POLICY office_only
206
+ ALLOWED_IP_LIST = ('10.0.0.0/8', '172.16.0.0/12')
207
+ COMMENT '仅允许办公网络访问';
208
+
209
+ -- 创建网络策略(黑名单模式:阻止指定 IP)
210
+ CREATE NETWORK POLICY block_external
211
+ BLOCKED_IP_LIST = ('203.0.113.0/24')
212
+ COMMENT '阻止外部 IP';
213
+
214
+ -- 同时设置白名单和黑名单(Deny 优先)
215
+ CREATE NETWORK POLICY mixed_policy
216
+ ALLOWED_IP_LIST = ('10.0.0.0/8')
217
+ BLOCKED_IP_LIST = ('10.0.1.100/32')
218
+ COMMENT '允许内网但阻止特定 IP';
219
+
220
+ -- 查看网络策略
221
+ SHOW NETWORK POLICY;
222
+
223
+ -- 删除网络策略
224
+ DROP NETWORK POLICY IF EXISTS office_only;
225
+ ```
226
+
227
+ > ⚠️ 网络策略遵循 **Deny 优先** 原则:同时出现在白名单和黑名单中的 IP 会被拒绝。
228
+
229
+ ---
230
+
231
+ ## 参考文档
232
+
233
+ - [访问控制概览](https://www.yunqi.tech/documents/access-control-general)
234
+ - [角色](https://www.yunqi.tech/documents/roles)
235
+ - [GRANT](https://www.yunqi.tech/documents/grant-user-privileges)
236
+ - [REVOKE](https://www.yunqi.tech/documents/revoke-user-privileges)
237
+ - [CREATE USER](https://www.yunqi.tech/documents/CREAREUSER)
238
+ - [ALTER USER](https://www.yunqi.tech/documents/alter-user)
239
+ - [DROP USER](https://www.yunqi.tech/documents/DROPUSER)
240
+ - [SHOW USERS](https://www.yunqi.tech/documents/SHOWUSERS)
241
+ - [动态脱敏](https://www.yunqi.tech/documents/dynamic-mask)
242
+ - [系统内置角色权限列表](https://www.yunqi.tech/documents/permissions-of-built-in-workspace-level-roles)
243
+ - [网络策略](https://www.yunqi.tech/documents/network_policy)
@@ -0,0 +1,3 @@
1
+ {"case_id":"002","type":"should_call","user_input":"怎么查看当前工作空间有哪些用户?","expected_skill":"clickzetta-access-control","expected_output_contains":["SHOW USERS"]}
2
+ {"case_id":"003","type":"should_call","user_input":"当前有哪些系统预置角色?各自有什么权限?","expected_skill":"clickzetta-access-control","expected_output_contains":["workspace_admin","workspace_dev"]}
3
+ {"case_id":"004","type":"should_call","user_input":"怎么给某个用户授予 public schema 下所有表的只读权限?","expected_skill":"clickzetta-access-control","expected_output_contains":["GRANT","SELECT"]}
@@ -0,0 +1,86 @@
1
+ # 动态数据脱敏参考
2
+
3
+ > 来源:https://www.yunqi.tech/documents/dynamic-mask
4
+ > ⚠️ 本功能当前处于**受邀预览发布**阶段,如需使用请联系技术支持。
5
+
6
+ ## 概述
7
+
8
+ 列级安全(Column-level Security)通过动态脱敏(Dynamic Data Masking)提供细粒度数据保护。系统仅存储原始数据,在查询时动态执行脱敏函数,根据用户身份或角色决定显示方式。
9
+
10
+ ## 步骤 1:创建脱敏策略函数
11
+
12
+ ```sql
13
+ CREATE FUNCTION [schema_name.]function_name (col_name column_type)
14
+ RETURNS output_type
15
+ AS expression_with_conditional_logic;
16
+ ```
17
+
18
+ 关键要素:
19
+ - 返回类型必须与原始列类型相同
20
+ - 使用安全上下文函数:
21
+ - `current_user()` — 获取当前用户名(注意大小写)
22
+ - `current_roles()` — 获取用户角色数组
23
+
24
+ 示例:手机号脱敏(管理员看全部,其他人看脱敏)
25
+
26
+ ```sql
27
+ CREATE FUNCTION public.mask_phone(phone STRING)
28
+ RETURNS STRING
29
+ AS CASE
30
+ WHEN current_user() = 'admin' THEN phone
31
+ ELSE CONCAT(SUBSTR(phone, 1, 3), '****', SUBSTR(phone, 8, 4))
32
+ END;
33
+ ```
34
+
35
+ 示例:基于角色的脱敏
36
+
37
+ ```sql
38
+ CREATE FUNCTION public.mask_salary(salary DECIMAL(10,2))
39
+ RETURNS DECIMAL(10,2)
40
+ AS CASE
41
+ WHEN array_contains(current_roles(), 'hr_role') THEN salary
42
+ ELSE 0.0
43
+ END;
44
+ ```
45
+
46
+ ## 步骤 2:绑定脱敏策略到列
47
+
48
+ ### 建表时指定
49
+
50
+ ```sql
51
+ CREATE TABLE employees (
52
+ emp_id INT,
53
+ name STRING,
54
+ phone STRING MASK public.mask_phone,
55
+ salary DECIMAL(10,2) MASK public.mask_salary
56
+ );
57
+ ```
58
+
59
+ ### 修改已有表的列
60
+
61
+ ```sql
62
+ ALTER TABLE employees
63
+ CHANGE COLUMN phone
64
+ SET MASK public.mask_phone;
65
+ ```
66
+
67
+ ### 添加新列时指定脱敏
68
+
69
+ ```sql
70
+ ALTER TABLE employees
71
+ ADD COLUMN id_card STRING MASK public.mask_id_card;
72
+ ```
73
+
74
+ ## 步骤 3:解除脱敏策略
75
+
76
+ ```sql
77
+ ALTER TABLE employees
78
+ CHANGE COLUMN phone
79
+ UNSET MASK;
80
+ ```
81
+
82
+ ## 注意事项
83
+
84
+ - 脱敏函数的返回类型必须与列类型完全一致
85
+ - `current_user()` 返回值区分大小写
86
+ - `current_roles()` 返回角色数组,用 `array_contains()` 判断
@@ -0,0 +1,103 @@
1
+ # GRANT / REVOKE 权限管理参考
2
+
3
+ > 来源:https://www.yunqi.tech/documents/grant-user-privileges 和 revoke-user-privileges
4
+
5
+ ## GRANT 语法
6
+
7
+ ### 授权给用户
8
+
9
+ ```sql
10
+ GRANT privilege_type ON object_type object_name TO USER user_name [WITH GRANT OPTION];
11
+ ```
12
+
13
+ ### 授权给角色
14
+
15
+ ```sql
16
+ GRANT privilege_type ON object_type object_name TO ROLE role_name;
17
+ ```
18
+
19
+ ## 权限类型速查
20
+
21
+ ### 工作空间级(ON WORKSPACE)
22
+
23
+ ```sql
24
+ -- 创建对象权限
25
+ GRANT CREATE SCHEMA ON WORKSPACE ws_name TO USER alice;
26
+ GRANT CREATE VCLUSTER ON WORKSPACE ws_name TO USER alice;
27
+ ```
28
+
29
+ ### 工作空间对象级(ON SCHEMA / VCLUSTER / ROLE / FUNCTION)
30
+
31
+ ```sql
32
+ -- Schema 权限
33
+ GRANT ALTER ON SCHEMA public TO USER alice;
34
+ GRANT DROP ON SCHEMA public TO USER alice;
35
+ GRANT READ METADATA ON SCHEMA public TO USER alice;
36
+ GRANT ALL PRIVILEGES ON SCHEMA public TO USER alice;
37
+
38
+ -- VCluster 权限
39
+ GRANT USE ON VCLUSTER default_ap TO USER alice;
40
+ GRANT ALTER ON VCLUSTER default_ap TO USER alice;
41
+ ```
42
+
43
+ ### Schema 级(ON SCHEMA,创建对象)
44
+
45
+ ```sql
46
+ GRANT CREATE TABLE ON SCHEMA public TO USER alice;
47
+ GRANT CREATE VIEW ON SCHEMA public TO USER alice;
48
+ GRANT CREATE MATERIALIZED VIEW ON SCHEMA public TO USER alice;
49
+ GRANT ALL ON SCHEMA public TO USER alice;
50
+ ```
51
+
52
+ ### 表/视图级(ON TABLE / VIEW / MATERIALIZED VIEW)
53
+
54
+ ```sql
55
+ -- 表权限
56
+ GRANT SELECT ON TABLE public.orders TO USER alice;
57
+ GRANT INSERT ON TABLE public.orders TO USER alice;
58
+ GRANT ALTER ON TABLE public.orders TO USER alice;
59
+ GRANT DROP ON TABLE public.orders TO USER alice;
60
+ GRANT ALL ON TABLE public.orders TO USER alice;
61
+
62
+ -- 授权给角色
63
+ GRANT SELECT ON TABLE public.orders TO ROLE analyst_role;
64
+ ```
65
+
66
+ ## REVOKE 语法
67
+
68
+ ```sql
69
+ REVOKE privilege_type ON object_type object_name FROM USER user_name;
70
+ REVOKE privilege_type ON object_type object_name FROM ROLE role_name;
71
+ ```
72
+
73
+ ## REVOKE 示例
74
+
75
+ ```sql
76
+ -- 撤销创建 VCluster 权限
77
+ REVOKE CREATE VCLUSTER ON WORKSPACE ws_name FROM USER alice;
78
+
79
+ -- 撤销表查询权限
80
+ REVOKE SELECT ON TABLE public.orders FROM USER alice;
81
+
82
+ -- 撤销 Schema 下所有权限
83
+ REVOKE ALL PRIVILEGES ON WORKSPACE ws_name FROM USER alice;
84
+
85
+ -- 从角色撤销权限
86
+ REVOKE CREATE VIEW ON SCHEMA sales FROM ROLE reporting_role;
87
+ ```
88
+
89
+ ## SHOW GRANTS(查看权限)
90
+
91
+ ```sql
92
+ -- 查看当前用户的权限
93
+ SHOW GRANTS;
94
+
95
+ -- 查看指定用户的权限
96
+ SHOW GRANTS TO USER user_name;
97
+
98
+ -- 查看工作空间角色的权限
99
+ SHOW GRANTS TO ROLE role_name;
100
+
101
+ -- 查看实例角色的权限
102
+ SHOW GRANTS TO INSTANCE ROLE role_name;
103
+ ```
@@ -0,0 +1,66 @@
1
+ # 角色管理参考
2
+
3
+ > 来源:https://www.yunqi.tech/documents/roles
4
+
5
+ ## 角色类型
6
+
7
+ | 类型 | 说明 |
8
+ |---|---|
9
+ | **预置角色** | 平台自动配置,不可修改权限或删除,可直接授予用户 |
10
+ | **自定义角色** | 在工作空间范围内创建,权限可随时修改,仅支持 SQL 操作 |
11
+
12
+ ## 角色级别
13
+
14
+ - **实例角色(Instance Role)**:用于实例级资源全局管控,或跨多工作空间授权
15
+ - **工作空间角色(Workspace Role)**:作用于特定工作空间,以工作空间为边界互不影响
16
+
17
+ ## 系统预置角色
18
+
19
+ | 角色名 | 级别 | 说明 |
20
+ |---|---|---|
21
+ | `instance_admin` | 实例 | 实例管理员,最高权限 |
22
+ | `workspace_admin` | 工作空间 | 工作空间管理员 |
23
+ | `workspace_dev` | 工作空间 | 开发者,可创建和管理数据对象 |
24
+ | `workspace_analyst` | 工作空间 | 分析师,只读权限 |
25
+
26
+ 详细权限列表参考:https://www.yunqi.tech/documents/permissions-of-built-in-workspace-level-roles
27
+
28
+ ## CREATE ROLE(创建自定义角色)
29
+
30
+ ```sql
31
+ -- 工作空间角色
32
+ CREATE ROLE [IF NOT EXISTS] role_name [COMMENT 'comment'];
33
+
34
+ -- 实例级角色(Instance Role,跨工作空间)
35
+ CREATE INSTANCE ROLE [IF NOT EXISTS] role_name [COMMENT 'comment'];
36
+ ```
37
+
38
+ 注意:自定义角色只能通过 SQL 创建,Web 端暂不支持。
39
+
40
+ ## GRANT ROLE(将角色授予用户)
41
+
42
+ ```sql
43
+ -- 将角色授予用户
44
+ GRANT ROLE role_name TO USER user_name;
45
+
46
+ -- 将角色授予另一个角色(角色继承)
47
+ GRANT ROLE role_name TO ROLE target_role_name;
48
+ ```
49
+
50
+ ## REVOKE ROLE(从用户撤销角色)
51
+
52
+ ```sql
53
+ REVOKE ROLE role_name FROM USER user_name;
54
+ ```
55
+
56
+ ## SHOW ROLES(列出所有角色)
57
+
58
+ ```sql
59
+ SHOW ROLES;
60
+ ```
61
+
62
+ ## DROP ROLE(删除自定义角色)
63
+
64
+ ```sql
65
+ DROP ROLE [IF EXISTS] role_name;
66
+ ```
@@ -0,0 +1,61 @@
1
+ # 用户管理参考
2
+
3
+ > 来源:https://www.yunqi.tech/documents/CREAREUSER、ALTER USER、DROP USER、SHOW USERS
4
+
5
+ ## CREATE USER(将用户添加到工作空间)
6
+
7
+ > ⚠️ `CREATE USER` 不是创建新账户,而是将已在账户管理系统中存在的用户添加到当前工作空间。
8
+ > 用户必须先在管理中心创建账户,才能执行此命令。
9
+
10
+ ```sql
11
+ CREATE USER [IF NOT EXISTS] user_name
12
+ [DEFAULT_VCLUSTER = vc_name]
13
+ [DEFAULT_SCHEMA = schema_name]
14
+ [COMMENT "comment"];
15
+ ```
16
+
17
+ 参数说明:
18
+ - `user_name`:必须是已在账户管理系统中创建的用户名
19
+ - `DEFAULT_VCLUSTER`:用户默认计算集群,未指定则使用全局默认
20
+ - `DEFAULT_SCHEMA`:用户默认 Schema,未指定则登录时需手动指定
21
+
22
+ 示例:
23
+ ```sql
24
+ -- 基础添加
25
+ CREATE USER alice;
26
+
27
+ -- 指定默认集群和 Schema
28
+ CREATE USER alice DEFAULT_VCLUSTER = default_ap DEFAULT_SCHEMA = public;
29
+
30
+ -- 带注释
31
+ CREATE USER alice COMMENT "数据分析师";
32
+ ```
33
+
34
+ ## ALTER USER(修改用户属性)
35
+
36
+ ```sql
37
+ ALTER USER user_name SET
38
+ [DEFAULT_VCLUSTER = vc_name]
39
+ [DEFAULT_SCHEMA = schema_name];
40
+ ```
41
+
42
+ 示例:
43
+ ```sql
44
+ ALTER USER alice SET DEFAULT_VCLUSTER = default_ap DEFAULT_SCHEMA = dw;
45
+ ```
46
+
47
+ ## DROP USER(从工作空间移除用户)
48
+
49
+ ```sql
50
+ DROP USER [IF EXISTS] user_name;
51
+ ```
52
+
53
+ 注意:移除后用户无法访问该工作空间的任何资源。
54
+
55
+ ## SHOW USERS(列出所有用户)
56
+
57
+ ```sql
58
+ SHOW USERS;
59
+ ```
60
+
61
+ 返回当前工作空间下所有用户的用户名和权限等级。