Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

JWT 身份验证设置

Beta 版功能
自版本 26.4 起可用
Enterprise 计划功能

通过自定义身份提供商进行 JWT 身份验证 可在 Enterprise 计划中使用。如需升级,请前往 Cloud Console 的套餐页面。

ClickHouse Cloud 支持使用 JSON Web Token (JWT) 对服务连接进行身份验证,并根据您自己的 JSON Web Key Set (JWKS) 端点验证这些 JWT。您无需管理数据库凭据;身份提供商会签发短期有效的标记,ClickHouse 则会使用您配置的 JWKS URL 中发布的公钥对其进行验证。

您可以在 ClickHouse Cloud 控制台的 设置 → 安全 中,按服务自行配置这些 JWKS 提供商。

开始前准备

要为服务配置 JWT 提供商,您需要:

  • 一个使用 Enterprise 套餐的组织。
  • 一个运行 ClickHouse 26.4 或更高版本的服务。
  • 一个拥有该服务 control-plane:service:manage 权限的角色 (例如 AdminService admin) 。没有此权限的成员只能以只读方式查看此部分。
  • 一个可从公网访问的 HTTPS JWKS URL,并且该 URL 至少发布一个 RSA 密钥 (RS256),或者对于 26.8 或更高版本的服务,发布一个 EC 密钥 (ES256ES384ES512) 。

工作原理

客户端 (您的身份提供商或应用程序) 生成 JWT,并使用其私钥对其签名。标记必须符合预期的标记格式。随后,ClickHouse 会使用您 JWKS URL 上发布的公钥验证该标记:

  1. ClickHouse 读取标记 kid (密钥 ID) 请求头,并从您的 JWKS 文档中选择匹配的密钥。
  2. 它使用该公钥验证标记签名,并根据您的提供商配置检查 iss (签发方) 和 aud (受众) 声明。
  3. 验证成功后,连接将以临时用户身份运行;其访问权限来自标记中的 clickhouse:grantsclickhouse:roles 声明,并受权限上限 (default 用户) 约束。详见访问权限

添加或更新提供商时,ClickHouse 会验证并拉取 JWKS URL,因此会预先拒绝配置错误或无法访问的 URL。

添加 JWT 提供商

打开服务安全设置

进入您的服务,打开设置,然后滚动到安全部分。找到 JWT 身份验证卡片。

服务安全设置中的 JWT 身份验证部分

打开提供商弹出面板

选择设置 JWT 提供商 (如果已有提供商,则选择管理 JWT 提供商) 。随即会打开弹出面板,其中显示可填写的新提供商表单。

填写提供商详细信息

填写提供商表单,然后选择保存

字段 描述
名称 此服务中该提供商的唯一名称。创建后无法更改。
签发方 传入标记中预期的 iss 声明。
受众 传入标记中预期的 aud 声明。
JWKS URL 用于发布验证标记签名所需公钥的公开 HTTPS URL。
角色声明 (可选) 用于从标记中读取 ClickHouse 角色的声明。留空以使用默认声明名称 clickhouse:roles。标记中指定的角色必须已存在于该服务中。

按需添加更多提供商

使用添加另一个提供商配置更多提供商。每个服务最多可配置五个 JWT 提供商。

限制

  • 每个服务最多可配置 五个 JWT 提供商。
  • JWKS 提供商接受 RSA 密钥 (RS256) ,并从 26.8 版本起接受 EC 密钥 (ES256ES384ES512) 。
  • JWKS URL 必须是公网 HTTPS 端点。私网、内部或链路本地地址均会被拒绝。
Navigation