加密您的数据库连接
Metabase 将您添加的各种数据库的连接信息存储在 Metabase 应用程序数据库中。为防止恶意行为者在获取应用程序数据库访问权限后访问这些详细信息,Metabase 可以在保存时自动使用 AES256 + SHA512 加密这些信息,并在需要时即时解密。
创建加密密钥
- 生成一个至少 16 个字符(越长越好!)的密钥。我们建议使用安全的随机密钥生成器,例如
openssl
。如果没有此密钥,您将无法解密连接详细信息。如果您丢失(或更改)了密钥,您将必须在管理面板中重置所有已使用该密钥加密的连接详细信息。
- 将您的密钥设置为环境变量
MB_ENCRYPTION_SECRET_KEY
。对于自托管的 Pro 和 Enterprise 计划,您也可以使用配置文件进行设置。
创建和添加密钥的示例命令
- 您可以使用
openssl
生成一个加密安全的、随机生成的 32 字符密钥。openssl rand -base64 32
- 将密钥复制到剪贴板。它看起来应该像这样
IYqrSi5QDthvFWe4/WdAxhnra5DZC3RKx3ZSrOJDKsM=
- 将密钥设置为环境变量并照常启动 Metabase。
MB_ENCRYPTION_SECRET_KEY="IYqrSi5QDthvFWe4/WdAxhnra5DZC3RKx3ZSrOJDKsM=" java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar
设置 MB_ENCRYPTION_SECRET_KEY
值后,Metabase 将自动加密并存储您添加的每个新数据库的连接详细信息。要加密现有连接,请参阅下一节。
加密现有连接
如果您在设置 MB_ENCRYPTION_SECRET_KEY
值之前添加了数据库,您可以通过进入管理设置 > 数据库中的每个数据库并点击保存按钮来加密连接详细信息。具有未加密详细信息的现有数据库将继续正常工作。
轮换加密密钥
- 我们建议您在进行密钥轮换之前备份您的数据。
- 停止运行您的 Metabase 应用程序。
- 运行 CLI 命令
rotate-encryption-key
。- 将当前加密密钥设置为
MB_ENCRYPTION_SECRET_KEY
。 - 将新加密密钥设置为参数。
- 将当前加密密钥设置为
轮换密钥的示例命令
MB_ENCRYPTION_SECRET_KEY=your-current-key java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar rotate-encryption-key new-key
禁用加密密钥
要禁用加密密钥,请按照轮换加密密钥的步骤操作,但将空字符串 (""
) 用作新密钥。
禁用密钥的示例命令
MB_ENCRYPTION_SECRET_KEY="your-current-key" java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar rotate-encryption-key ""
阅读其他 Metabase 版本的文档。