开始前准备
- 一个使用 Enterprise 套餐的组织。
- 一个运行 ClickHouse 26.4 或更高版本的服务。
- 一个拥有该服务
control-plane:service:manage权限的角色 (例如 Admin 或 Service admin) 。没有此权限的成员只能以只读方式查看此部分。 - 一个可从公网访问的 HTTPS JWKS URL,并且该 URL 至少发布一个 RSA 密钥 (
RS256),或者对于 26.8 或更高版本的服务,发布一个 EC 密钥 (ES256、ES384、ES512) 。
基于 JWKS 的提供商接受 RSA 密钥,以及从 26.8 版本起接受 P-256、P-384 和 P-521 曲线上的 EC 密钥。JWKS 文档可以包含其他类型的密钥,但必须至少包含一个可用的密钥。
工作原理
- ClickHouse 读取标记
kid(密钥 ID) 请求头,并从您的 JWKS 文档中选择匹配的密钥。 - 它使用该公钥验证标记签名,并根据您的提供商配置检查
iss(签发方) 和aud(受众) 声明。 - 验证成功后,连接将以临时用户身份运行;其访问权限来自标记中的
clickhouse:grants和clickhouse:roles声明,并受权限上限 (default用户) 约束。详见访问权限。
添加 JWT 提供商
1
打开服务安全设置
进入您的服务,打开设置,然后滚动到安全部分。找到 JWT 身份验证卡片。
2
打开提供商弹出面板
选择设置 JWT 提供商 (如果已有提供商,则选择管理 JWT 提供商) 。随即会打开弹出面板,其中显示可填写的新提供商表单。
3
填写提供商详细信息
填写提供商表单,然后选择保存。
4
按需添加更多提供商
使用添加另一个提供商配置更多提供商。每个服务最多可配置五个 JWT 提供商。
限制
- 每个服务最多可配置 五个 JWT 提供商。
- JWKS 提供商接受 RSA 密钥 (
RS256) ,并从 26.8 版本起接受 EC 密钥 (ES256、ES384、ES512) 。 - JWKS URL 必须是公网 HTTPS 端点。私网、内部或链路本地地址均会被拒绝。
- JWT 身份验证 — 标记声明、临时用户和客户端使用。