SSL 证书

如果您想将 Metabase Cloud 或自托管实例连接到数据库,可以使用 SSL(安全套接层)加密和证书来保护连接。

为什么要这样做

  • 您正在使用 Metabase Cloud,并希望确保所连接的数据仓库(例如 PostgreSQL、MySQL)的身份。
  • 您正在自托管 Metabase,并希望确保由外部提供商托管的数据仓库的身份。您也可以使用此方法来确保在连接到应用程序数据库时使用最严格的连接参数。

如果您正在使用 Metabase Cloud,应用程序数据库由我们处理,因此您只需保护连接到您添加到 Metabase 的数据仓库。

先决条件

一个允许 JDBC 连接的数据库,因为您需要使用连接字符串来指定要使用的证书。

步骤 1:从您的提供商下载根证书

如果您通过 Docker 容器运行 Metabase,您应该已经拥有 AWS 和 Azure 的证书。

您可以在 Metabase 的 Docker 镜像中的 /app/certs/ 目录中找到证书

  • AWS RDS:/app/certs/rds-combined-ca-bundle.pem
  • Azure 证书:/app/certs/DigiCertGlobalRootG2.crt.pem

如果您需要其他证书,可以构建自己的 Docker 镜像。请访问您的数据库的外部提供商页面,查找下载连接数据库所需根证书的链接。

步骤 2:保存证书

自托管

将下载的证书保存在与您的 metabase.jar 文件相同的目录中。从技术上讲,您可以将证书存储在任何位置,但将其与 metabase.jar 文件放在同一目录中是最佳实践。您将在连接字符串中指定证书的路径。

Metabase 云

您需要首先完成步骤 3:添加您的数据库

完成此操作后,您可以转到管理 > 数据库并选择您的数据库。找到名为SSL 客户端证书的部分,然后点击选择文件以上传您下载的证书。

步骤 3:添加您的数据库

例如,假设您想保护与 PostgreSQL 数据库的连接。请按照应用程序中的说明添加数据库。有关设置数据库连接的更多信息,请查看我们关于添加数据库的文档。

步骤 4:启用“使用安全连接 (SSL)”选项

如果您的数据库支持 JDBC 连接,Metabase 将为您提供一个字段,用于输入连接字符串的其他参数。Metabase 将使用连接字符串中的参数来建立安全连接。

步骤 5:添加其他连接字符串选项

您需要指定证书在运行 Metabase 的服务器上的位置。

例如,连接到 PostgreSQL 数据库时,您需要添加两个参数

  • sslmode。您可以在 PostgreSQL 文档中查看选项的完整列表。我们建议您使用 verify-full;它是最安全的,并且开销最小。
  • sslrootcert。在此处您将指定证书的文件路径。

您将添加一个和号 (&) 来分隔每个参数。例如,在添加其他连接字符串选项字段中,您将添加类似以下内容:

sslmode=verify-full&sslrootcert=/path/to/certificate.pem

/path/to/certifcate.pem 替换为您从提供商下载的证书的完整路径。

您可以了解更多关于 PostgreSQL 的 SSL 支持

使用环境变量保护应用程序数据库连接

如果您是自托管 Metabase,您可以使用环境变量来保护到应用程序数据库的连接。

要使用的环境变量是 MB_DB_CONNECTION_URI

您需要在此处包含完整的连接字符串,包括数据库主机、端口、数据库名称和用户信息,以及包含证书的其他连接参数。例如,

jdbc:postgresql://db.example.com:port/mydb?user=dbuser&password=dbpassword&ssl=true&sslmode=verify-full&sslrootcert=/path/to/certificate.pem

两者都可以提供以支持相互身份验证场景。

信任库和密钥库

对于某些数据库(如 PostgreSQL 和 Oracle),您可以使用信任库和密钥库来保护连接。

信任库

如果提供信任库来验证凭据,客户端(您的 Metabase)可以验证服务器(数据库)并确保其身份符合预期。

密钥库

如果使用密钥库提供凭据,则服务器(数据库服务器)可以请求客户端(您的 Metabase)使用该密钥库进行身份验证。密钥库使用频率较低,在某些情况下无法使用密钥库(例如,Amazon 的 RDS 禁止使用密钥库)。但如果您在本地部署,您可能需要使用密钥库。

阅读其他 Metabase 版本的文档。

© . All rights reserved.