现有且已正确配置的 ClickHouse 用户可通过 Kerberos 身份验证协议进行验证。
目前,Kerberos 只能作为现有用户的外部身份验证器使用;这些用户定义在 users.xml 或本地访问控制配置中。这些用户只能使用 HTTP 请求,并且必须能够通过 GSS-SPNEGO 机制完成身份验证。
要采用这种方式,必须先在系统中配置 Kerberos,并在 ClickHouse config 中启用它。
在 ClickHouse 中启用 Kerberos
要启用 Kerberos,需要在 config.xml 中添加 kerberos 部分。该部分还可包含其他参数。
参数
-
principal- 接受安全上下文时将获取并使用的规范服务主体名称。- 此参数为可选项;如果省略,将使用默认主体。
-
realm- 领域,用于将身份验证限制为仅接受发起方领域与其匹配的请求。- 此参数为可选项;如果省略,则不会按领域进行额外过滤。
-
keytab- 服务 keytab 文件的路径。- 此参数为可选项;如果省略,则必须在
KRB5_KTNAME环境变量中设置服务 keytab 文件路径。
- 此参数为可选项;如果省略,则必须在
示例 (添加到 config.xml 中) :
<clickhouse>
<!- ... -->
<kerberos />
</clickhouse>指定主体时:
<clickhouse>
<!- ... -->
<kerberos>
<principal>HTTP/clickhouse.example.com@EXAMPLE.COM</principal>
</kerberos>
</clickhouse>按领域筛选:
<clickhouse>
<!- ... -->
<kerberos>
<realm>EXAMPLE.COM</realm>
</kerberos>
</clickhouse>Kerberos 作为现有用户的外部身份验证器
Kerberos 可用作验证本地定义用户身份的一种方法 (即在 users.xml 或本地访问控制配置中定义的用户) 。目前,只有通过 HTTP 接口发出的请求才能使用 Kerberos (通过 GSS-SPNEGO 机制) 。
Kerberos 主体名称格式通常遵循以下模式:
- primary/instance@REALM
/instance 部分可以出现零次或多次。要使身份验证成功,发起方规范主体名称中的 primary 部分应与进行 Kerberos 身份验证的用户名匹配。
在 users.xml 中启用 Kerberos
要为该用户启用 Kerberos 身份验证,请在用户定义中指定 kerberos 部分,而不要使用 password 或类似部分。
参数:
realm- 用于将身份验证限制为仅接受发起者领域与其匹配的请求。- 此参数为可选;如果省略,则不会按领域进行额外过滤。
示例 (添加到 users.xml 中) :
<clickhouse>
<!- ... -->
<users>
<!- ... -->
<my_user>
<!- ... -->
<kerberos>
<realm>EXAMPLE.COM</realm>
</kerberos>
</my_user>
</users>
</clickhouse>通过 SQL 启用 Kerberos
当 ClickHouse 启用了 通过 SQL 实现的访问控制与账户管理 时,也可以使用 SQL 语句创建由 Kerberos 识别的用户。
CREATE USER my_user IDENTIFIED WITH kerberos REALM 'EXAMPLE.COM'…或者,不按领域筛选:
CREATE USER my_user IDENTIFIED WITH kerberos