用户和角色设置
users.xml
配置文件的 users
部分包含用户设置。
ClickHouse 还支持 基于 SQL 的工作流 来管理用户。我们推荐使用它。
users
部分的结构:
user_name/password
密码可以以明文或 SHA256(十六进制格式)指定。
-
要以明文分配密码(不推荐),请将其放在
password
元素中。例如,
<password>qwerty</password>
。密码可以留空。
-
要使用其 SHA256 哈希分配密码,请将其放在
password_sha256_hex
元素中。例如,
<password_sha256_hex>65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5</password_sha256_hex>
。从 Shell 生成密码的示例:
结果的第一行是密码。第二行是相应的 SHA256 哈希。
-
为了与 MySQL 客户端兼容,密码可以指定为双 SHA1 哈希。将其放在
password_double_sha1_hex
元素中。例如,
<password_double_sha1_hex>08b4a0f1de6ad37da17359e592c8d74788a83eb0</password_double_sha1_hex>
。从 Shell 生成密码的示例:
结果的第一行是密码。第二行是相应的双 SHA1 哈希。
username/ssh-key
此设置允许使用 SSH 密钥进行身份验证。
给定生成的 SSH 密钥(通过 ssh-keygen
生成)如下:
ssh_key
元素应为
将 ssh-ed25519
替换为 ssh-rsa
或 ecdsa-sha2-nistp256
,以使用其他支持的算法。
access_management
此设置启用或禁用用户的 SQL 驱动的 访问控制和帐户管理。
可能的值:
- 0 — 禁用。
- 1 — 启用。
默认值:0。
grants
此设置允许授予所选用户任何权限。
列表中的每个元素应为没有指定任何受赠人的 GRANT
查询。
示例:
此设置不能与 dictionaries
、access_management
、named_collection_control
、show_named_collections_secrets
和 allow_databases
设置同时指定。
user_name/networks
用户可以从中连接到 ClickHouse 服务器的网络列表。
列表中的每个元素可以具有以下形式之一:
-
<ip>
— IP 地址或网络掩码。示例:
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::
。 -
<host>
— 主机名。示例:
example01.host.ru
。为检查访问,将执行 DNS 查询,所有返回的 IP 地址将与对等地址进行比较。
-
<host_regexp>
— 主机名的正则表达式。示例:
^example\d\d-\d\d-\d\.host\.ru$
为检查访问,将对对等地址执行 DNS PTR 查询,然后应用指定的正则表达式。接着,会对 PTR 查询的结果执行另一个 DNS 查询,所有接收到的地址将与对等地址进行比较。我们强烈建议正则表达式以 $ 结尾。
所有 DNS 请求的结果会缓存,直到服务器重启。
示例
要允许来自任何网络的用户访问,请指定:
从任何网络开放访问是不安全的,除非您正确配置了防火墙或服务器不直接连接到互联网。
要仅允许来自本地主机的访问,请指定:
user_name/profile
您可以为用户分配设置配置文件。设置配置文件在 users.xml
文件的单独部分中配置。有关更多信息,请参见 设置配置文件。
user_name/quota
配额允许您跟踪或限制一段时间内的资源使用情况。配额在 users.xml
配置文件的 quotas
部分中配置。
您可以为用户分配一组配额。有关配额配置的详细说明,请参见 配额。
user_name/databases
在此部分中,您可以限制 ClickHouse 返回给当前用户的 SELECT
查询的行,从而实现基本的行级安全。
示例
以下配置强制用户 user1
只能在 SELECT
查询中看到 table1
的 id
字段值为 1000 的行。
filter
可以是任何结果为 UInt8 型值的表达式。它通常包含比较和逻辑运算符。对于此用户,来自 database_name.table1
的 filter
结果为 0 的行将不返回。过滤与 PREWHERE
操作不兼容,并禁用 WHERE→PREWHERE
优化。
角色
您可以使用 user.xml
配置文件的 roles
部分创建任何预定义角色。
roles
部分的结构:
这些角色也可以授予 users
部分的用户: