ClickHouse/docs/zh/operations/settings/settings-users.md

164 lines
5.2 KiB
Markdown
Raw Normal View History

2020-04-03 13:23:32 +00:00
---
machine_translated: false
machine_translated_rev: 72537a2d527c63c07aa5d2361a8829f3895cf2bd
toc_priority: 63
toc_title: "\u7528\u6237\u8BBE\u7F6E"
2020-04-03 13:23:32 +00:00
---
# 用户设置 {#user-settings}
2020-04-03 13:23:32 +00:00
`user.xml` 中的 `users` 配置段包含了用户配置
2020-04-03 13:23:32 +00:00
!!! note "提示"
ClickHouse还支持 [SQL驱动的工作流](../access-rights.md#access-control) 用于管理用户。 我们建议使用它。
`users` 配置段的结构:
2020-04-03 13:23:32 +00:00
``` xml
<users>
<!-- If user name was not specified, 'default' user is used. -->
<user_name>
<password></password>
<!-- Or -->
<password_sha256_hex></password_sha256_hex>
<access_management>0|1</access_management>
2020-04-03 13:23:32 +00:00
<networks incl="networks" replace="replace">
</networks>
<profile>profile_name</profile>
<quota>default</quota>
<databases>
<database_name>
<table_name>
<filter>expression</filter>
<table_name>
</database_name>
</databases>
</user_name>
<!-- Other users settings -->
</users>
```
### user_name/password {#user-namepassword}
2020-04-03 13:23:32 +00:00
密码可以以明文或SHA256十六进制格式指定。
2020-04-03 13:23:32 +00:00
- 以明文形式分配密码 (**不推荐**),把它放在一个 `password` 配置段中。
2020-04-03 13:23:32 +00:00
例如, `<password>qwerty</password>`. 密码可以留空。
2020-04-03 13:23:32 +00:00
<a id="password_sha256_hex"></a>
- 要使用SHA256加密后的密码请将其放置在 `password_sha256_hex` 配置段。
2020-04-03 13:23:32 +00:00
例如, `<password_sha256_hex>65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5</password_sha256_hex>`.
2020-04-03 13:23:32 +00:00
从shell生成加密密码的示例:
2020-04-03 13:23:32 +00:00
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
结果的第一行是密码。 第二行是相应的SHA256哈希。
2020-04-03 13:23:32 +00:00
<a id="password_double_sha1_hex"></a>
- 为了与MySQL客户端兼容密码可以设置为双SHA1哈希加密, 请将其放置在 `password_double_sha1_hex` 配置段。
2020-04-03 13:23:32 +00:00
例如, `<password_double_sha1_hex>08b4a0f1de6ad37da17359e592c8d74788a83eb0</password_double_sha1_hex>`.
2020-04-03 13:23:32 +00:00
从shell生成密码的示例:
2020-04-03 13:23:32 +00:00
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
结果的第一行是密码。 第二行是相应的双SHA1哈希。
2020-04-03 13:23:32 +00:00
### access_management {#access_management-user-setting}
此设置可为用户启用或禁用 SQL-driven [访问控制和帐户管理](../access-rights.md#access-control) 。
可能的值:
- 0 — Disabled.
- 1 — Enabled.
默认值0。
### user_name/networks {#user-namenetworks}
2020-04-03 13:23:32 +00:00
用户访问来源列表
2020-04-03 13:23:32 +00:00
列表中的每个元素都可以具有以下形式之一:
2020-04-03 13:23:32 +00:00
- `<ip>` — IP地址或网络掩码
2020-04-03 13:23:32 +00:00
例: `213.180.204.3`, `10.0.0.1/8`, `10.0.0.1/255.255.255.0`, `2a02:6b8::3`, `2a02:6b8::3/64`, `2a02:6b8::3/ffff:ffff:ffff:ffff::`.
2020-04-03 13:23:32 +00:00
- `<host>` — 域名
2020-04-03 13:23:32 +00:00
示例: `example01.host.ru`.
2020-04-03 13:23:32 +00:00
为检查访问将执行DNS查询并将所有返回的IP地址与对端地址进行比较。
2020-04-03 13:23:32 +00:00
- `<host_regexp>` — 域名的正则表达式.
2020-04-03 13:23:32 +00:00
示例, `^example\d\d-\d\d-\d\.host\.ru$`
2020-04-03 13:23:32 +00:00
为检查访问,[DNS PTR查询](https://en.wikipedia.org/wiki/Reverse_DNS_lookup) 对对端地址执行,然后应用指定的正则表达式。 然后以PTR查询的结果执行另一个DNS查询并将所有接收到的地址与对端地址进行比较. 我们强烈建议正则表达式以$结尾.
2020-04-03 13:23:32 +00:00
DNS请求的所有结果都将被缓存直到服务器重新启动。
2020-04-03 13:23:32 +00:00
**例**
2020-04-03 13:23:32 +00:00
要开启任意来源网络的访问, 请指定:
2020-04-03 13:23:32 +00:00
``` xml
<ip>::/0</ip>
```
!!! warning "警告"
从任何网络开放访问是不安全的,除非你有一个正确配置的防火墙, 或者服务器没有直接连接到互联网。
2020-04-03 13:23:32 +00:00
若要限定本机访问, 请指定:
2020-04-03 13:23:32 +00:00
``` xml
<ip>::1</ip>
<ip>127.0.0.1</ip>
```
2020-10-13 17:23:29 +00:00
### user_name/profile {#user-nameprofile}
2020-04-03 13:23:32 +00:00
您可以为用户分配设置配置文件。 设置配置文件在`users.xml` 中有单独的配置段. 有关详细信息,请参阅 [设置配置文件](settings-profiles.md).
2020-04-03 13:23:32 +00:00
### user_name/quota {#user-namequota}
2020-04-03 13:23:32 +00:00
配额允许您在一段时间内跟踪或限制资源使用情况。 配额在`users.xml` 中的 `quotas` 配置段下.
2020-04-03 13:23:32 +00:00
您可以为用户分配配额。 有关配额配置的详细说明,请参阅 [配额](../quotas.md#quotas).
2020-04-03 13:23:32 +00:00
### user_name/databases {#user-namedatabases}
2020-04-03 13:23:32 +00:00
在本配置段中您可以限制ClickHouse中由当前用户进行的 `SELECT` 查询所返回的行,从而实现基本的行级安全性。
2020-04-03 13:23:32 +00:00
**示例**
2020-04-03 13:23:32 +00:00
以下配置使用户 `user1` 通过SELECT查询只能得到table1中id为1000的行
2020-04-03 13:23:32 +00:00
``` xml
<user1>
<databases>
<database_name>
<table1>
<filter>id = 1000</filter>
</table1>
</database_name>
</databases>
</user1>
```
`filter` 可以是[UInt8](../../sql-reference/data-types/int-uint.md)编码的任何表达式。 它通常包含比较和逻辑运算符, 当filter返回0时, database_name.table1 的该行结果将不会返回给用户.过滤不兼容 `PREWHERE` 操作并禁用 `WHERE→PREWHERE` 优化。
2020-04-03 13:23:32 +00:00
[原始文章](https://clickhouse.com/docs/en/operations/settings/settings_users/) <!--hide-->