什么是支持会话
- 会话网关:嵌入故障排查工具、经过身份验证的 API,提供
enable、disable和status端点。每次调用网关都需要短期有效的 OIDC ID 标记,其电子邮件地址必须在您的操作员允许列表中。 - Linux VM 安装中的本地会话文件:可使用 root 权限直接写入主机。
kubectl port-forward 访问 (隧道使用 API server 的 TLS) ,也可通过使用 CA 签发的证书终止 TLS 的入口访问。
您可在执行 clicklink clctl init 时选择会话策略,包括操作员允许列表。
启用和禁用会话
- Kubernetes
- Linux VM
网关 监听 故障排查工具 pod (容器组) 的 8443 端口。如果你有集群访问权限,可通过端口转发访问它;该隧道使用 Kubernetes API server 的 TLS:然后,在另一个终端中启用会话:同样可以检查或结束会话:调用方的 OIDC 身份必须在 操作员 允许列表中;未经身份验证或不在允许列表中的调用方将收到 401 或 403,且此次尝试会被记录到日志中。如果不想要求集群凭据,chart 可通过选择性启用的入口公开 网关,并使用 CA 签发的证书终止 TLS;请参阅配置。
会话过期
session enable --duration 设置最长 24 小时的任意时长。会话过期后,或运行 session disable 后,故障排查工具将不再接受命令。禁用会话可立即撤销访问权限:无需重启,也无需与 ClickHouse 协调。
操作员允许列表
- **Kubernetes:**在配置值覆盖中设置
clctl.gateway.allowedOperators。该列表会渲染为 ConfigMap,网关每 30 秒重新读取一次,因此修改配置值后执行helm upgrade即可轮换允许列表,无需重启 pod (容器组) 。 - **Linux VM:**允许列表位于
/etc/clicklink/allowed-operators.txt,由clicklink clctl init根据您提供的操作员电子邮件写入。
操作员在会话期间可以执行的操作
- 以
pcm_troubleshooter用户身份对您的集群执行只读 SQL,且仅限访问明确指定的表允许列表。默认允许列表涵盖 ClickHousesystem表,例如system.parts、system.merges、system.replicas、system.metrics和system.settings;system.query_log和system.text_log始终被拒绝访问,因此查询历史记录不会离开您的环境。默认允许列表还包含system.processes,其query列会显示当时正在运行的语句文本;如果会话中绝不能显示实时查询文本,请将其从会话表允许列表中移除 (Helm 覆盖配置中的troubleshooter.allowedTables,或 VM 配置文件中的troubleshooter.allowed_tables) 。该用户仅拥有按表授予的SELECT权限,不具备写入、DDL 或管理特权。 - 对每个已预配的部署拥有只读 Kubernetes 视图 (两个安装目标的访问包均绑定到 Kubernetes ServiceAccount) :可在获授权的命名空间中,对 pod (容器组) 、pod 日志、服务、configmap、事件、PersistentVolumeClaim、部署、statefulset 和 replicaset 执行
get、list和watch操作。若未预配访问包,故障排查工具会直接拒绝 kubectl 类型的命令。
exec、delete 或 patch 权限,因此操作员无法在您的 pod (容器组) 中打开 shell,也无法通过连接器更改任何内容。完整的授权和 RBAC 列表请参阅特权模型参考文档。
审计日志
/var/log/clicklink/troubleshoot-audit.log。submitted_by 字段记录每个条目对应的身份,具体取决于条目的来源:网关调用记录经验证标记认证的电子邮件地址,绝不使用客户端提供的值;在 VM 上本地更改会话时,记录执行操作的主机用户;会话期间执行的命令则记录经身份验证的命令通道中携带的组织身份。网关会话启用条目如下所示:
clctl.session.enable、clctl.session.disable 和 clctl.session.status 命令类型。启用时传入的 --reason 会记录为 command_text;会话期间执行的命令也会以相同的 schema 记录。status 可区分成功调用与 unauthorized、forbidden 和 rate_limited 的尝试,因此被拒绝的访问也会记录在日志中。
在 VM 上,可使用 clicklink clctl troubleshoot audit tail 直接读取该文件。在 Kubernetes 上,日志位于 故障排查工具 pod (容器组) 中,且容器镜像不包含 shell,因此请通过 kubectl exec 调用该二进制文件自带的读取器:
脱敏
/etc/clicklink/redaction-patterns.yaml 中扩展或覆盖这些模式;与内置模式同名的条目会将其替换。模式文件无效时,守护进程会拒绝启动,clicklink clctl preflight 也会验证该文件,因此脱敏配置损坏时会明确报错,而不会悄无声息地让数据通过。
- Architecture:连接器 建立的所有连接,以及会话相关的数据流。
- Configuration:gateway、允许列表和脱敏设置。
- FAQ:简要解答有关吊销、审计和数据出站的问题。