|
2 | 2 | title: 网络策略 |
3 | 3 | --- |
4 | 4 |
|
5 | | -Databend 中的网络策略是一种配置机制,旨在管理和实施系统中用户的网络访问控制。它允许您定义一组规则,用于管理特定用户允许和阻止的 IP 地址范围,从而有效地控制其网络级访问。 |
| 5 | +网络策略用于基于客户端 IP 地址控制 Databend 的登录权限。即使提供了正确的凭证,如果连接请求的来源 IP 不符合策略要求,该请求也会被拒绝。这为用户名和密码认证之外增加了一层额外的安全保障。 |
6 | 6 |
|
7 | | -例如,假设您希望定义一个特定用户可用于访问 Databend 的不同 IP 地址范围。在这种情况下,如果用户尝试从超出预定义范围的 IP 地址与 Databend 建立连接,即使具有准确的登录凭据,Databend 也会拒绝该连接。这种机制保证了访问权限保持在指定的 IP 范围内,从而提高了安全性并在网络级别强制实施控制。 |
| 7 | +## 工作方式 |
8 | 8 |
|
9 | | -### 实施网络策略 |
| 9 | +- `ALLOWED_IP_LIST` 接受单个 IPv4 地址或 CIDR 网段(例如 `10.0.0.0/24`)。只有在列表中的地址才允许登录。 |
| 10 | +- `BLOCKED_IP_LIST`(可选)用于在允许的范围内明确排除某些 IP。Databend 会优先检查阻止列表,因此如果一个 IP 同时存在于两个列表中,它仍会被拒绝。 |
| 11 | +- 一个用户同一时间只能关联一个网络策略,但同一个策略可以被多个用户共享,便于统一管理。 |
| 12 | +- 如果服务器无法获取客户端 IP,或者 IP 不在允许列表里,Databend 会直接返回 `AuthenticateFailure` 并拒绝连接。 |
10 | 13 |
|
11 | | -要在 Databend 中实施网络策略,您需要创建一个网络策略,在其中指定要允许或限制的 IP 地址。之后,使用 [ALTER USER](/sql/sql-commands/ddl/user/user-alter-user) 命令将此网络策略与特定用户关联。重要的是要注意,单个网络策略可以与多个用户关联,只要它们符合相同的策略标准即可。有关用于管理 Databend 中掩码策略的命令,请参阅 [网络策略](/sql/sql-commands/ddl/network-policy/)。 |
| 14 | +## 操作示例 |
12 | 15 |
|
13 | | -### 使用示例 |
| 16 | +本示例将涵盖网络策略的典型生命周期:创建策略、绑定到用户、验证状态、集中更新以及最终的解绑和删除。 |
14 | 17 |
|
15 | | -此示例演示了如何创建具有指定允许和阻止的 IP 地址的网络策略,然后将此策略与用户关联以控制网络访问。该网络策略允许 192.168.1.0 到 192.168.1.255 范围内的所有 IP 地址,但特定 IP 地址 192.168.1.99 除外。 |
| 18 | +### 1. 创建并查看策略 |
16 | 19 |
|
17 | 20 | ```sql |
18 | | --- 创建网络策略 |
19 | | -CREATE NETWORK POLICY sample_policy |
20 | | - ALLOWED_IP_LIST=('192.168.1.0/24') |
21 | | - BLOCKED_IP_LIST=('192.168.1.99') |
22 | | - COMMENT='Sample'; |
| 21 | +CREATE NETWORK POLICY corp_vpn_policy |
| 22 | + ALLOWED_IP_LIST=('10.1.0.0/16', '172.16.8.12/32') |
| 23 | + BLOCKED_IP_LIST=('10.1.10.25') |
| 24 | + COMMENT='Only VPN ranges'; |
23 | 25 |
|
24 | 26 | SHOW NETWORK POLICIES; |
25 | 27 |
|
26 | | -Name |Allowed Ip List |Blocked Ip List|Comment | |
27 | | --------------+-------------------------+---------------+-----------+ |
28 | | -sample_policy|192.168.1.0/24 |192.168.1.99 |Sample | |
| 28 | +Name |Allowed Ip List |Blocked Ip List|Comment | |
| 29 | +----------------+--------------------------+---------------+-----------------+ |
| 30 | +corp_vpn_policy |10.1.0.0/16,172.16.8.12/32|10.1.10.25 |Only VPN ranges | |
| 31 | +``` |
29 | 32 |
|
30 | | --- 创建用户 |
31 | | -CREATE USER sample_user IDENTIFIED BY 'databend'; |
| 33 | +### 2. 绑定策略到用户 |
32 | 34 |
|
33 | | --- 将网络策略与用户关联 |
34 | | -ALTER USER sample_user WITH SET NETWORK POLICY='sample_policy'; |
35 | | -``` |
| 35 | +```sql |
| 36 | +CREATE USER alice IDENTIFIED BY 'Str0ngPass!' WITH SET NETWORK POLICY='corp_vpn_policy'; |
| 37 | +CREATE USER bob IDENTIFIED BY 'An0therPass!'; |
| 38 | + |
| 39 | +-- 给已存在的用户补充策略 |
| 40 | +ALTER USER bob WITH SET NETWORK POLICY='corp_vpn_policy'; |
| 41 | +``` |
| 42 | + |
| 43 | +### 3. 验证策略执行情况 |
| 44 | + |
| 45 | +```sql |
| 46 | +DESC USER alice; |
| 47 | + |
| 48 | +┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ |
| 49 | +│ name │ hostname │ auth_type │ default_role │ roles │ disabled │ network_policy │ password_policy │ must_change_password │ |
| 50 | +├────────┼──────────┼──────────────────────┼──────────────┼───────┼──────────┼───────────────────┼─────────────────┼──────────────────────┤ |
| 51 | +│ alice │ % │ double_sha1_password │ │ │ false │ corp_vpn_policy │ │ NULL │ |
| 52 | +└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ |
| 53 | + |
| 54 | +DESC NETWORK POLICY corp_vpn_policy; |
| 55 | + |
| 56 | +Name |Allowed Ip List |Blocked Ip List|Comment | |
| 57 | +----------------+--------------------------+---------------+----------------+ |
| 58 | +corp_vpn_policy |10.1.0.0/16,172.16.8.12/32|10.1.10.25 |Only VPN ranges | |
| 59 | +``` |
| 60 | + |
| 61 | +### 4. 更新并复用策略 |
| 62 | + |
| 63 | +借助 [ALTER NETWORK POLICY](/sql/sql-commands/ddl/network-policy/ddl-alter-policy) 可以直接修改允许或阻止的 IP 而无需逐个更新用户: |
| 64 | + |
| 65 | +```sql |
| 66 | +ALTER NETWORK POLICY corp_vpn_policy |
| 67 | + SET ALLOWED_IP_LIST=('10.1.0.0/16', '10.2.0.0/16') |
| 68 | + BLOCKED_IP_LIST=('10.1.10.25', '10.2.5.5') |
| 69 | + COMMENT='VPN + DR site'; |
| 70 | + |
| 71 | +DESC NETWORK POLICY corp_vpn_policy; |
| 72 | + |
| 73 | +Name |Allowed Ip List |Blocked Ip List |Comment | |
| 74 | +----------------+----------------------------+-------------------------+-----------------+ |
| 75 | +corp_vpn_policy |10.1.0.0/16,10.2.0.0/16 |10.1.10.25,10.2.5.5 |VPN + DR site | |
| 76 | +``` |
| 77 | + |
| 78 | +所有引用该策略的用户都会自动应用新的 IP 范围设置。 |
| 79 | + |
| 80 | +### 5. 解除绑定并清理 |
| 81 | + |
| 82 | +```sql |
| 83 | +ALTER USER bob WITH UNSET NETWORK POLICY; |
| 84 | +DROP NETWORK POLICY corp_vpn_policy; |
| 85 | +``` |
| 86 | + |
| 87 | +在删除策略之前,请确认没有用户正在使用该策略;否则,相关用户的登录将会失败。 |
| 88 | + |
| 89 | +--- |
| 90 | + |
| 91 | +完整语法与更多命令请参阅 [网络策略 SQL 参考](/sql/sql-commands/ddl/network-policy/),其中涵盖 `CREATE`、`ALTER`、`SHOW`、`DESC` 和 `DROP`。 |
0 commit comments