这篇文章介绍 Clickhouse 的 users.xml 用户配置
相关文章:
Clickhouse 配置中文详细介绍 第一章 config.xml
Clickhouse 配置中文详细介绍 第二章 metrika.xml
<clickhouse>
<!-- 另请参阅 users.d/ 目录中的文件,其中的设置可以被覆盖。 -->
<!-- ================================================================================================================================================================ -->
<!--
profiles: 该标签用于定义一组用户或查询的配置文件。
-->
<profiles>
<!-- 这是默认的配置文件,未指定其他配置文件的用户或查询将使用此配置。 -->
<default>
<!-- 该参数设置查询的最大大小为 2097152 字节(约 2MB)。超过此大小的查询将被拒绝。 -->
<max_query_size>2097152</max_query_size>
</default>
<!-- 这是一个专门用于只读操作的配置文件 -->
<readonly>
<!-- 与默认配置文件相同,查询的最大大小为 2097152 字节(约 2MB)。 -->
<max_query_size>2097152</max_query_size>
<!-- 将该值设置为 1,表示该配置文件只能执行只读查询,如 SELECT 语句,而不允许执行写操作(如 INSERT、UPDATE 等)。 -->
<readonly>1</readonly>
</readonly>
</profiles>
<!-- ================================================================================================================================================================ -->
<!-- Users and ACL. 这里可以配置多个用户 -->
<users>
<!-- 如果没有指定用户名,用户是 'default' -->
<default>
<!--
另请参阅 users.d 目录中的文件,其中可以覆盖密码。
密码可以以明文或 SHA256(十六进制格式)指定。
如果您想以明文形式指定密码(不推荐),请将其放在<password>标签中。
示例:
<password>qwerty</password>。
密码可以为空。
如果要指定 SHA256,请将其放在<password_sha256_hex>元素中。
示例:
<password_sha256_hex>65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5</password_sha256_hex>
SHA256 的限制:无法使用 MySQL JS 客户端连接到 ClickHouse(截至 2019 年 7 月)。
如果要指定 double SHA1,请将其放在<password_double_sha1_hex>元素中。
示例:
<password_double_sha1_hex>e395796d6546b1b65db9d665cd43f0e858dd4303</password_double_sha1_hex>
如果您想指定先前定义的 LDAP 服务器(请参阅主配置中的<ldap_servers>)进行身份验证,
将其名称放在<ldap>元素内的<server>元素中。
示例:
<ldap>
<server>my_ldap_server</server>
</ldap>
如果您想通过 Kerberos 验证用户身份(假设 Kerberos 已启用,请参阅主配置中的<kerberos>),
放置<kerberos>元素而不是<password>(和类似)元素。
启动程序的规范主体名称的名称部分必须与用户名匹配,身份验证才能成功。
您还可以将<realm>元素放置在<kerberos>元素内,以进一步限制仅对这些请求进行身份验证
示例:<kerberos />
示例:<kerberos><realm>EXAMPLE.COM</realm></kerberos>
如何生成合适的密码,执行:
PASSWORD=$(base64 < /dev/urandom | head -c8);
echo "$PASSWORD";
echo -n "$PASSWORD" | sha256sum | tr -d '-'
第一行是密码,第二行是对应的 SHA256。
如何生成 double SHA1,执行:
PASSWORD=$(base64 < /dev/urandom | head -c8);
echo "$PASSWORD";
echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
第一行是密码,第二行是对应的 double SHA1。
-->
<password>pwd123456789</password>
<!--
networks 标签用于指定允许访问 ClickHouse 服务器的网络地址和主机
1. 开放访问,表示允许来自所有 IP 地址的访问,在生产环境中应该谨慎使用
<ip>::/0</ip>
2. 仅允许本地访问,如果你只想允许本地访问(即来自本机的访问)
<ip>::1</ip> IPv6 地址,表示本地环回地址。
<ip>127.0.0.1</ip> IPv4 地址,表示本地环回地址。
3. 允许特定 IP 地址或网络,如果你只想允许特定的 IP 地址或网络范围访问
<ip>213.180.204.3</ip>
<ip>10.0.0.1/8</ip>
<ip>10.0.0.1/255.255.255.0</ip>
4. 允许特定主机,可以通过主机名来指定允许的主机:
<host>server01.clickhouse.com</host>
5. 允许匹配特定正则表达式的主机,ClickHouse 会先执行 DNS PTR 查询获取主机名,然后使用正则表达式检查主机名是否符合规则。
<host_regexp>^server\d\d-\d\d-\d\.clickhouse\.com$</host_regexp>
样例:
允许来自 IP 范围 192.168.1.0/24 和主机名以 myserver 开头的所有请求
<networks>
<ip>192.168.1.0/24</ip>
<host_regexp>^myserver.*\.example\.com$</host_regexp>
</networks>
注意事项
DNS缓存:所有 DNS 请求的结果都会被缓存,直到服务器重启。这有助于提高性能,但也可能导致在主机名解析发生变化时出现延迟。
安全性:在生产环境中,应尽可能限制对 ClickHouse 的访问,仅允许可信的 IP 地址或网络访问,以提高安全性。
-->
<networks>
<ip>::/0</ip>
</networks>
<!-- 关联最上方的 <profile> 标签下的 <default> 标签中的配置,这个配置文件中的设置将应用于 default 用户的所有操作 -->
<profile>default</profile>
<!-- 关联最下方的 <quota> 标签下的 <default> 标签中的配置 -->
<quota>default</quota>
<!-- User can create other users and grant rights to them. -->
<!-- <access_management>1</access_management> -->
</default>
<!-- 自定义一个 Clickhouse 的用户 -->
<super_admin>
<!-- 密码,可以明文、SHA256(十六进制格式)、 double SHA1 等等 -->
<password>pw123456789</password>
<!--
<networks>: 该标签用于定义用户可以从哪些网络访问 ClickHouse 服务器。
incl="networks":表示从其他配置文件或某个配置段中引入名为 "networks" 的网络配置。
replace="replace":表示当前配置中的网络范围会替换掉引入的网络配置。
<ip>::/0</ip>:
该配置表示允许从任何 IPv6 地址访问 ClickHouse 服务器。::/0 是一个表示所有 IPv6 地址的通配符,类似于 IPv4 中的 0.0.0.0/0。
-->
<networks incl="networks" replace="replace">
<ip>::/0</ip>
</networks>
<!-- 关联最上方的 <profile> 标签下的 <default> 标签中的配置 -->
<profile>default</profile>
<!-- 关联最下方的 <quota> 标签下的 <default> 标签中的配置 -->
<quota>default</quota>
<!--
控制用户是否有权限创建其他用户并授予他们权限。如果设置为 1,表示当前用户可以管理其他用户,包括创建、修改和删除用户,以及分配或撤销权限。
启用后可能的操作:
创建用户: 具备该权限的用户可以创建新用户,并为这些新用户设置密码、配置文件、配额等。
管理权限: 该用户可以为其他用户分配数据库表的读写权限,甚至可以管理其他用户的访问级别。
删除用户: 如果某个用户不再需要访问 ClickHouse 系统,具有管理权限的用户可以删除该用户。
-->
<access_management>1</access_management>
</super_admin>
</users>
<!-- ================================================================================================================================================================ -->
<!--
quotas 根标签,用于定义所有配额策略。每个配额策略可以应用到不同的用户组或单个用户。
default 定义了一个名为 default 的配额策略。这个策略可以应用到用户配置中,用来限制用户的资源使用。
-->
<quotas>
<!-- Name of quota. -->
<default>
<!-- 时间间隔的限制。您可以指定许多具有不同限制的间隔. -->
<interval>
<!-- 配额时间间隔,单位为秒,此处为1小时. -->
<duration>3600</duration>
<!-- 每小时最多允许执行 N 个查询. -->
<queries>0</queries>
<!-- 每小时最多允许 N 个错误 -->
<errors>0</errors>
<!-- 每小时最多读取 N 行数据 -->
<result_rows>0</result_rows>
<!-- 每小时最多读取 N bytes 数据 -->
<result_bytes>0</result_bytes>
<!-- 每小时最多扫描 1 亿行 -->
<read_rows>0</read_rows>
<!-- 每小时最多使用 N 秒的查询执行时间 -->
<execution_time>0</execution_time>
</interval>
</default>
</quotas>
</clickhouse>