提高 TiDB Dashboard 安全性

    尽管访问 TiDB Dashboard 需要登录,但它被设计为默认供可信的用户实体访问。当你希望将 TiDB Dashboard 提供给外部网络用户或不可信用户访问时,需要注意采取以下措施以避免安全漏洞。

    TiDB Dashboard 的账号体系与 TiDB SQL 用户一致。默认部署情况下,TiDB 的 root 用户没有密码,因而访问 TiDB Dashboard 也不需要密码验证。这将会给恶意访问者极大的集群权限,包括执行特权 SQL 等。

    建议的措施:

    • 为 TiDB 用户设置一个强密码。请参见 了解详情。

    TiDB Dashboard 通过 PD Client 端口提供服务,默认为 http://IP:2379/dashboard/。尽管 TiDB Dashboard 需要验证身份,但 PD Client 端口上承载的其他 PD 内部特权接口不需要验证身份,且能进行特权操作,例如 。因此,将 PD Client 端口直接暴露给外部网络具有极大的风险。

    建议的措施:

    1. 参见通过反向代理使用 TiDB Dashboard 了解如何配置反向代理将 TiDB Dashboard 服务在另一个端口上安全地提供给外部网络。

    在测试环境中,您可能需要配置防火墙开放 TiDB Dashboard 端口供外部访问。

    当部署了多个 PD 实例时,其中仅有一个 PD 实例会真正运行 TiDB Dashboard,访问其他 PD 实例时会发生浏览器重定向,因此需要确保防火墙配置了正确的 IP 地址。关于该机制的详情,可参阅 章节。

    使用 TiUP 部署工具时,可使用以下命令查看实际运行 TiDB Dashboard 的 PD 实例地址(将 CLUSTER_NAME 替换为集群名称):

    注意:

    该功能在 TiUP Cluster v1.0.3 或更高版本部署工具中提供。

    升级 TiUP Cluster 步骤 shell tiup update --self tiup update cluster --force

    以下是一个样例输出:

    在这个样例中,需要为防火墙配置开放 IP 192.168.0.1232379 端口入站访问,并通过 http://192.168.0.123:2379/dashboard/ 访问 TiDB Dashboard。

    如前文所述,PD Client 端口下提供的服务不仅有 TiDB Dashboard(位于 ),还有其他 PD 内部特权接口(如 http://IP:2379/pd/api/v1/members)。因此,使用反向代理将 TiDB Dashboard 提供给外部网络时,应当确保仅提供 前缀下的服务,而非该端口下所有服务,避免外部网络能通过反向代理访问到 PD 内部特权接口。

    建议的措施:

    • 参见 了解安全且推荐的反向代理配置。

    请参阅 NGINX 文档或 了解如何为它们开启 TLS。