Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 9 additions & 14 deletions zh_CN/admin/configuration-fields/server.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
17 changes: 15 additions & 2 deletions zh_CN/user-security/authentication/rbac.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 进行身份验证,仅允许在同一台机器上运行的进程进行访问。
Expand Down Expand Up @@ -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` 并重启系统
- 使用创建的帐号进行登陆

## 详细说明
Expand Down
4 changes: 2 additions & 2 deletions zh_CN/user-security/authentication/static.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,6 @@ jwt_secret = "871b3c2d706d875e9c6389fb2457d957"
```

::: tip
- 静态认证模式下,所有通过认证的用户都拥有系统完整权限
- 需将配置文件中 ```server.auth.type``` 设置为 `static` 方可启用静态认证
- 静态认证模式下,通过认证的用户将拥有系统完整权限
- 将配置文件中 ```server.auth.type``` 设置为 `static` 或删除该配置项可启用静态认证
:::
46 changes: 37 additions & 9 deletions zh_CN/user-security/rbac/privilege.md
Original file line number Diff line number Diff line change
Expand Up @@ -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] ...
```
Expand Down Expand Up @@ -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 所赋予的权限;<br> 如果是授予角色,需要满足以下条件之一:(1)具有 SUPER 权限(2)已经被授予过该角色,且 `WITH_GRANT_OPTION = true`|
| INCLUDE NODE | SUPER 权限 |
| REBALANCE | SUPER 权限 |
| REVOKE | 如果是收回权限,需要 GRANT 权限以及 REVOKE 所撤销的权限;<br> 如果是收回角色,需要 `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 权限;<br> 否则能够查看所有具备 `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` 授予该数据库的权限,但授权操作没有实际作用,不建议这样做。
:::
16 changes: 12 additions & 4 deletions zh_CN/user-security/rbac/role.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
由于目前角色不支持继承,只能收回用户身上的角色。
:::
10 changes: 9 additions & 1 deletion zh_CN/user-security/rbac/user.md
Original file line number Diff line number Diff line change
Expand Up @@ -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位字符。

**示例**:
Expand Down Expand Up @@ -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` 参数来设置防暴力破解密码的策略。