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` 参数来设置防暴力破解密码的策略。