Kerberos
此页面不适用于 ClickHouse Cloud。此处记录的功能在 ClickHouse Cloud 服务中不可用。有关更多信息,请参阅 ClickHouse Cloud 兼容性 指南。
现有且配置正确的 ClickHouse 用户可以通过 Kerberos 身份验证协议进行身份验证。
目前,Kerberos 只能用作现有用户的外部认证器,这些用户在 users.xml
或本地访问控制路径中定义。这些用户只能使用 HTTP 请求,并且必须能够使用 GSS-SPNEGO 机制进行身份验证。
对于这种方法,必须在系统中配置 Kerberos,并且必须在 ClickHouse 配置中启用。
在 ClickHouse 中启用 Kerberos
要启用 Kerberos,应在 config.xml
中包含 kerberos
部分。此部分可能包含其他参数。
参数:
-
principal
- 规范的服务主体名称,将在接受安全上下文时获取和使用。- 此参数是可选的,如果省略,将使用默认主体。
-
realm
- 域,将用于限制身份验证,仅限于发起者的域与之匹配的请求。- 此参数是可选的,如果省略,则不会应用额外的按域过滤。
-
keytab
- 服务 keytab 文件的路径。- 此参数是可选的,如果省略,则必须在
KRB5_KTNAME
环境变量中设置服务 keytab 文件的路径。
- 此参数是可选的,如果省略,则必须在
示例(放入 config.xml
)
<clickhouse>
<!- ... -->
<kerberos />
</clickhouse>
带有主体规范
<clickhouse>
<!- ... -->
<kerberos>
<principal>HTTP/[email protected]</principal>
</kerberos>
</clickhouse>
带有按域过滤
<clickhouse>
<!- ... -->
<kerberos>
<realm>EXAMPLE.COM</realm>
</kerberos>
</clickhouse>
您只能定义一个 kerberos
部分。存在多个 kerberos
部分将强制 ClickHouse 禁用 Kerberos 身份验证。
principal
和 realm
部分不能同时指定。同时存在 principal
和 realm
部分将强制 ClickHouse 禁用 Kerberos 身份验证。
Kerberos 作为现有用户的外部认证器
Kerberos 可以用作验证本地定义用户身份的方法(在 users.xml
或本地访问控制路径中定义的用户)。目前,只有 通过 HTTP 接口的请求可以被 kerberized(通过 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>
请注意,Kerberos 身份验证不能与任何其他身份验证机制一起使用。如果 kerberos
部分旁边存在任何其他部分(如 password
),将强制 ClickHouse 关闭。
请注意,现在,一旦用户 my_user
使用 kerberos
,必须如前所述在主 config.xml
文件中启用 Kerberos。
使用 SQL 启用 Kerberos
当 SQL 驱动的访问控制和帐户管理 在 ClickHouse 中启用时,也可以使用 SQL 语句创建通过 Kerberos 识别的用户。
CREATE USER my_user IDENTIFIED WITH kerberos REALM 'EXAMPLE.COM'
...或者,不按域过滤
CREATE USER my_user IDENTIFIED WITH kerberos