From 3cbd23ae22cf6a9ce68436c7a17782320d0582ea Mon Sep 17 00:00:00 2001
From: xiaopeng <13811678570@126.com>
Date: Sun, 2 Nov 2025 09:51:19 +0800
Subject: [PATCH] fix: by xiaopeng
---
zh_CN/admin/configuration-fields/server.md | 23 ++++------
zh_CN/user-security/authentication/rbac.md | 17 +++++++-
zh_CN/user-security/authentication/static.md | 4 +-
zh_CN/user-security/rbac/privilege.md | 46 ++++++++++++++++----
zh_CN/user-security/rbac/role.md | 16 +++++--
zh_CN/user-security/rbac/user.md | 10 ++++-
6 files changed, 84 insertions(+), 32 deletions(-)
diff --git a/zh_CN/admin/configuration-fields/server.md b/zh_CN/admin/configuration-fields/server.md
index 0b1a1276..40ac27d4 100644
--- a/zh_CN/admin/configuration-fields/server.md
+++ b/zh_CN/admin/configuration-fields/server.md
@@ -64,22 +64,17 @@ password = "public"
# Default: "87113c3d906df75e9c6389fbd457d957".
jwt_secret = "87212c3d906df71e9c6289fbd456d917"
-# Password strength requirements.
-# weak: no requirements, simple password.
-# moderate: at least 8 characters, including at least three types of the following:
-# uppercase letters, lowercase letters, digits, and special characters.
-# strong: at least 14 characters, including all types of the following:
-# uppercase letters, lowercase letters, digits, and special characters.
-# Default: "weak"
+# 密码强度,支持三种:
+# weak: 弱密码,没有特殊要求;
+# moderate: 一般密码,至少 8 位字符,至少包含大写、小写、数字和特殊字符中的三种;
+# strong: 强密码,至少 14 位字符,包含大写、小写、数字和特殊字符。
+# 默认:weak
#password_strength = "weak"
-# Password protection against brute-force attacks.
-# Form as "a/b/c", means:
-# Account locked for "b" minutes after "a" failed password attempts,
-# and locked for another "c" miniutes after the each failed attempt.
-# The maximum of a/b/c is 10/120/120 respectively, and will be set to 3/5/5 if too big.
-# 0/-/- means no lockout.
-# Default: "0/0/0"
+# 防暴力破解密码
+# 形式为 "a/b/c",a,b,c 都是整数,含义是连续失败 a 次后,b 分钟内禁止该用户重复尝试登录,之后每再失败一次,禁止时间延长 c 分钟。
+# a最大值为 10,b,c 最大值为 120 分钟。
+# 默认:0/0/0 表示不开启防暴力破解
#password_lockout = "3/5/5"
# The configurations of the Redis service.
diff --git a/zh_CN/user-security/authentication/rbac.md b/zh_CN/user-security/authentication/rbac.md
index 60f2be58..f889b771 100644
--- a/zh_CN/user-security/authentication/rbac.md
+++ b/zh_CN/user-security/authentication/rbac.md
@@ -21,10 +21,23 @@ type = "rbac"
# The provided JSON Web Token.
# Default: "871b3c2d706d875e9c6389fb2457d957".
jwt_secret = "871b3c2d706d875e9c6389fb2457d957"
+
+# 密码强度,支持三种:
+# weak: 弱密码,没有特殊要求;
+# moderate: 一般密码,至少 8 位字符,至少包含大写、小写、数字和特殊字符中的三种;
+# strong: 强密码,至少 14 位字符,包含大写、小写、数字和特殊字符。
+# 默认:weak
+#password_strength = "weak"
+
+# 防暴力破解密码
+# 形式为 "a/b/c",a,b,c 都是整数,含义是连续失败 a 次后,b 分钟内禁止该用户重复尝试登录,之后每再失败一次,禁止时间延长 c 分钟。
+# a最大值为 10,b,c 最大值为 120 分钟。
+# 默认:0/0/0 表示不开启防暴力破解
+#password_lockout = "3/5/5"
```
## 初始化用户
-安装 Datalayers 后,首次使用 rbac认证模式启动时,系统默认没有预置管理员账户。您需要手动初始化第一个管理员账户。本文提供两种初始化方法。
+安装 Datalayers 后,首次使用 rbac 认证模式启动时,系统默认没有预置管理员账户。您需要手动初始化第一个管理员账户。本文提供两种初始化方法。
### 基于 Peer 认证初始化
Peer 认证是一种基于操作系统进程间通信(IPC)的本地认证机制,它通过 Unix Domain Socket 进行身份验证,仅允许在同一台机器上运行的进程进行访问。
@@ -66,7 +79,7 @@ dlsql admin init-root --user admin@% --password public
基于静态认证,通过相应的授权语句进行创建用户来初始化系统用户。
- 配置为[静态认证](static.md),配置好后重启系统
- 参考 `rbac` 中的[用户管理](../rbac/user.md),并创建好帐号
-- 创建好后将认证 `server.auth.type`修改为 `rbac` 并重启系统
+- 创建好后将认证 `server.auth.type` 修改为 `rbac` 并重启系统
- 使用创建的帐号进行登陆
## 详细说明
diff --git a/zh_CN/user-security/authentication/static.md b/zh_CN/user-security/authentication/static.md
index 580c0d08..3a1fb669 100644
--- a/zh_CN/user-security/authentication/static.md
+++ b/zh_CN/user-security/authentication/static.md
@@ -26,6 +26,6 @@ jwt_secret = "871b3c2d706d875e9c6389fb2457d957"
```
::: tip
-- 静态认证模式下,所有通过认证的用户都拥有系统完整权限
-- 需将配置文件中 ```server.auth.type``` 设置为 `static` 方可启用静态认证
+- 静态认证模式下,通过认证的用户将拥有系统完整权限
+- 将配置文件中 ```server.auth.type``` 设置为 `static` 或删除该配置项可启用静态认证
:::
diff --git a/zh_CN/user-security/rbac/privilege.md b/zh_CN/user-security/rbac/privilege.md
index 1cf2c9ed..1a0d15b2 100644
--- a/zh_CN/user-security/rbac/privilege.md
+++ b/zh_CN/user-security/rbac/privilege.md
@@ -73,8 +73,7 @@ GRANT ALL PRIVILEGES ON *.* TO 'developer'@'127.0.0.1';
可以通过如下命令收回用户或角色的权限:
```sql
-REVOKE [IF EXISTS]
- priv_type [, priv_type] ...
+REVOKE priv_type [, priv_type] ...
ON priv_level
FROM user_or_role [, user_or_role] ...
```
@@ -122,31 +121,60 @@ SHOW PRIVILEGES;
| 操作 | 需要的权限 |
|-----------------------|------------|
+| SELECT | 表的 SELECT 权限 |
+| INSERT | 表的 INSERT 权限 |
+| UPDATE | 表的 UPDATE 权限 |
+| DELETE | 表的 DELETE 权限 |
| ALTER TABLE | 表的 ALTER 权限|
-| ANALYZE TABLE | 表的 INSERT 和 SELECT 权限 |
| COMPACT TABLE | 表的 INSERT 权限|
| CREATE DATABASE | 全局 CREATE 权限 |
-| CREATE INDEX | 表的 INDEX 权限 |
+| CREATE INDEX | 表的 ALTER 权限 |
| CREATE TABLE | 数据库的 CREATE 权限|
| CREATE ROLE | CREATE ROLE 权限 |
| CREATE USER | CREATE USER 权限 |
| DESC TABLE | 表的 SELECT 权限 |
| DROP DATABASE | 数据库的 DROP 权限 |
-| DROP INDEX | 表的 INDEX 权限 |
+| DROP INDEX | 表的 ALTER 权限 |
+| DROP NODE | SUPER 权限 |
| DROP TABLE | 表的 DROP 权限 |
| DROP ROLE | DROP ROLE 权限 |
| DROP USER | CREATE USER 权限 |
-| EXCLUDE NODE | SUPER 权限 |
+| EXCLUDE NODE | SUPER 权限 |
| EXPLAIN | 需要与 EXPLAIN 要分析的语句相同的权限 |
-| FLUSH | RELOAD 权限 |
+| EXPORT PARTITION | 表的 SELECT 权限 |
+| FLUSH | RELOAD 权限 |
| GRANT | 如果是授予权限,需要 GRANT 权限以及 GRANT 所赋予的权限;
如果是授予角色,需要满足以下条件之一:(1)具有 SUPER 权限(2)已经被授予过该角色,且 `WITH_GRANT_OPTION = true`|
| INCLUDE NODE | SUPER 权限 |
| REBALANCE | SUPER 权限 |
| REVOKE | 如果是收回权限,需要 GRANT 权限以及 REVOKE 所撤销的权限;
如果是收回角色,需要 `SUPER` 权限|
| SET PASSWORD | CREATE USER 权限 |
+| SHOW CLUSTER | 无权限要求 |
+| SHOW CURRENT NODE | 无权限要求 |
+| SHOW CREATE DATABASE | 数据库的 SELECT 权限 |
| SHOW CREATE TABLE | 表的 SELECT 权限 |
-| SHOW DATABASES | 能查看至少有一种权限的数据库,若具有 SHOW DATABASES 权限,则能查看所有数据库 |
-| SHOW GRANTS | `information_schema` 数据库的 SELECT 权限(查看当前用户则无需权限) |
+| SHOW DATABASES | 能查看至少有一种数据库权限或数据库内表权限,若具有 SHOW DATABASES 权限,则能查看所有数据库 |
+| SHOW GRANTS | SUPER 权限(查看当前用户则无需权限) |
+| SHOW LICENSE | SUPER 权限 |
+| SHOW MIGRATION | SUPER 权限 |
+| SHOW PARTITIONS | 如果指定了 `ON TABLE` 选项,则需要该表的 SELECT 权限;
否则能够查看所有具备 `SELECT` 权限的表的 parititons |
+| SHOW PRIVILEGES | 无权限要求 |
| SHOW TABLES | 能查看至少有一种权限的表 |
+| SHOW TASKS | SUPER 权限 |
+| SHOW VERSION | SUPER 权限 |
+| STOP MIGRATION | SUPER 权限 |
| TRIM DATABASE | 数据库的 DROP 权限|
| TRUNCATE TABLE | 表的 DROP 权限 |
+
+## 特定权限
+
+### INFORMATION SCHEMA 数据库的权限
+
+所有用户都直接获得对 `information_schema` 数据库的 `SELECT` 权限。
+
+不能通过 `REVOKE` 回收该数据库的权限。
+
+访问 `information_schema` 数据库中的表数据时,会根据用户具备的权限来展示数据,以 `tables` 表为例,用户只能查看到自己有权限访问表的信息。
+
+::: tip
+可以通过 `GRANT` 授予该数据库的权限,但授权操作没有实际作用,不建议这样做。
+:::
diff --git a/zh_CN/user-security/rbac/role.md b/zh_CN/user-security/rbac/role.md
index cfff61a7..1dba3a83 100644
--- a/zh_CN/user-security/rbac/role.md
+++ b/zh_CN/user-security/rbac/role.md
@@ -60,20 +60,28 @@ REVOKE ALL ON content_db.articles FROM 'editor';
角色的授予可以通过如下命令实现:
```sql
-GRANT user_or_role [, user_or_role] ...
- TO user_or_role [, user_or_role] ...
+GRANT role [, role] ...
+ TO user [, user] ...
[WITH ADMIN OPTION]
```
角色授予给用户后将立即生效,用户可以直接使用角色的权限。
+::: tip
+由于目前角色不支持继承,只能将角色授予给用户,而不能将角色授予给其他角色。
+:::
+
### 将角色从用户处收回
**基本语法**:
```sql
-REVOKE user_or_role [, user_or_role] ...
- FROM user_or_role [, user_or_role] ...
+REVOKE role [, role] ...
+ FROM user [, user] ...
```
收回后,用户将无法再使用该角色的权限。
+
+::: tip
+由于目前角色不支持继承,只能收回用户身上的角色。
+:::
diff --git a/zh_CN/user-security/rbac/user.md b/zh_CN/user-security/rbac/user.md
index 6b20afc7..97c45217 100644
--- a/zh_CN/user-security/rbac/user.md
+++ b/zh_CN/user-security/rbac/user.md
@@ -16,7 +16,7 @@ CREATE USER [IF NOT EXISTS] user IDENTIFIED BY 'password';
```
**说明**
- `user`:格式为`'user_name'@'host_name'`,例如 `'alice'@'127.0.0.1'`。
-- 主机名 `host_name` 支持使用 `%` 通配符,表示匹配任意网段。例如 `bob'@'%'` 表示允许用户 bob 从任意 IP 地址连接,`'bob'@'192.168.%'` 表示只允许从 `192.168.*.*` 网段连接
+- 主机名 `host_name` 支持使用 `%` 通配符,表示匹配任意网段。例如 `'bob'@'%'` 表示允许用户 bob 从任意 IP 地址连接,`'bob'@'192.168.%'` 表示只允许从 `192.168.*.*` 网段连接
- `password`:账户密码,最长为32位字符。
**示例**:
@@ -70,3 +70,11 @@ DROP USER 'alice'@'%';
```sql
SELECT USER();
```
+
+## 密码强度管理
+
+通过修改 [server 配置](../../admin/configuration-fields/server.md)中的 `password_strength` 参数来设置密码强度要求。
+
+## 防暴力破解密码
+
+通过修改 [server 配置](../../admin/configuration-fields/server.md)中的 `password_lockout` 参数来设置防暴力破解密码的策略。