加密您的数据库连接

Metabase 在 Metabase 应用数据库中存储您添加的各种数据库的连接信息。为了防止恶意行为者访问应用程序数据库时获取这些详细信息,Metabase 可以在保存时自动使用 AES256 + SHA512 加密它们,并在需要时实时解密。

创建加密密钥

  1. 生成一个至少16个字符的密钥(越长越好)。我们建议使用安全的随机密钥生成器,例如 openssl

    没有这个密钥,您无法解密连接详细信息。如果您丢失(或更改)了密钥,您必须在管理员面板中重置使用该密钥加密的所有连接详细信息。

  2. 将您的密钥设置为环境变量 MB_ENCRYPTION_SECRET_KEY。在自托管的 专业版和企业版 计划中,您也可以使用 配置文件 设置此变量。

创建和添加密钥的示例命令

  1. 您可以使用 openssl 生成一个32字符的、密码学安全的、随机生成的密钥。
    openssl rand -base64 32
    
  2. 将密钥复制到剪贴板。它应该看起来像这样
    IYqrSi5QDthvFWe4/WdAxhnra5DZC3RKx3ZSrOJDKsM=
    
  3. 将密钥作为环境变量设置,并像往常一样启动 Metabase。
    MB_ENCRYPTION_SECRET_KEY="IYqrSi5QDthvFWe4/WdAxhnra5DZC3RKx3ZSrOJDKsM=" java -jar metabase.jar
    

一旦设置了 MB_ENCRYPTION_SECRET_KEY 值,Metabase 将自动加密并存储您添加的每个新数据库的连接详细信息。要加密现有连接,请参阅下一节。

某些 Linux 版本对于环境变量值中的单引号(')和双引号(")有不同的解释。如果您升级到 Linux 的新版本,并且原始密钥使用了单引号,您可能需要将密钥用双引号括起来,以便将单引号解释为字面意思。例如,MB_ENCRYPTION_SECRET_KEY='IYq...sM=' 将变为 MB_ENCRYPTION_SECRET_KEY="'IYq...sM='"

加密现有连接

如果您在设置 MB_ENCRYPTION_SECRET_KEY 值之前添加了数据库,您可以通过在 管理员设置 > 数据库 中访问每个这些数据库并点击 保存 按钮,来加密连接详细信息。带有未加密详细信息的现有数据库将继续正常工作。

轮换加密密钥

  1. 在进行密钥轮换之前,我们建议您 备份 数据。
  2. 停止运行您的 Metabase 应用程序。
  3. 运行 CLI 命令 rotate-encryption-key
    • 将当前加密密钥设置为 MB_ENCRYPTION_SECRET_KEY
    • 将新加密密钥作为参数设置。

轮换密钥的示例命令

MB_ENCRYPTION_SECRET_KEY=your-current-key java -jar metabase.jar rotate-encryption-key new-key

禁用加密密钥

要禁用加密密钥,请按照 轮换加密密钥 的步骤操作,但使用空字符串("")作为新密钥。

禁用密钥的示例命令

MB_ENCRYPTION_SECRET_KEY="your-current-key" java -jar metabase.jar rotate-encryption-key ""

阅读有关其他 Metabase 版本 的文档。

想要改进这些文档吗? 提出更改。