如何解决Apache Superset Invalid Decryption Key报错问题
问题根因
Invalid decryption key 报错的核心原因是Superset加密敏感数据(包括数据库连接凭据、OAuth密钥等)使用的密钥,和当前配置的密钥不一致。示例仪表板依赖预存储的示例数据库连接信息,读取时解密失败就会触发1011通用错误。
常见触发场景:
- 部署时未手动配置固定
SECRET_KEY,服务重启/重新部署时自动生成了新的临时密钥 - 手动修改过
SECRET_KEY配置,但没有对存量加密数据做重加密迁移 - 迁移Superset实例时没有同步原实例的
SECRET_KEY配置
修复方案
按以下步骤操作即可修复:
配置固定永久的
SECRET_KEY
定位Superset配置文件superset_config.py:原生部署一般在部署工作目录或/etc/superset/路径下,Docker部署一般挂载在容器内/app/pythonpath/superset_config.py路径。
在Linux终端执行命令生成符合安全要求的密钥:openssl rand -hex 32将生成的字符串写入配置文件,固定为永久密钥:
SECRET_KEY = '替换为上一步生成的十六进制字符串'如果是Docker Compose部署,需要同步修改部署目录下
.env文件里的SUPERSET_SECRET_KEY值,和上面配置的密钥保持一致,不要留空。处理存量加密数据
根据自身数据情况二选一操作:- 新部署环境、无自定义数据库连接/自建资产需要保留:直接重新初始化示例数据即可,执行命令:
Docker部署可在宿主机通过# 原生部署需先激活Superset对应的Python虚拟环境,切换到superset运行用户 superset db upgrade superset load_examples superset initdocker exec -it <你的superset_web容器名>前缀执行上述命令,执行完成后重启所有Superset相关服务(web服务、celery worker、定时任务节点)。 - 有存量自定义配置、需要保留已有数据:如果记得之前服务使用的旧
SECRET_KEY,直接执行密钥轮转命令完成存量数据重加密即可,无需清空数据:
执行完成后重启所有Superset相关服务。superset rotate-secret-key -p <替换为之前使用的旧SECRET_KEY>
- 新部署环境、无自定义数据库连接/自建资产需要保留:直接重新初始化示例数据即可,执行命令:
验证效果
重启完成后重新登录Superset,访问示例仪表板即可正常加载,后续不要随意修改SECRET_KEY配置即可避免问题复现。
内容的提问来源于stack exchange,提问作者Muditha
相关产品推荐
相关产品推荐

