[eggjs/egg]egg有数据库配置项加密的方法吗?

2025-10-27 986 views
0

很多配置项信息比较敏感,不应该明文存储,请问有人实现配置项加密的方法吗?

回答

0

一般这种是通过容器层的环境变量注入。

3

一般这种是通过容器层的环境变量注入。

将config文件设置gitignore还是,部署前直接覆盖呢

9

指的是 Docker 容器,在 config.prod.js 里面写入秘钥是 someKey = process.env.xxx 的方式。

至于线下其他环境的,可以在 CLI 启动脚本做一些事,但关键是加密逻辑不能只在本地,你们需要有一个可靠的手段来判断运行这段代码的人或机器,从而做私有的加密。(不一定需要做到这一步)

5

CI 上也是都有 环境变量 注入能力的。 本地的话,其实还好,都是开发数据库啥的,跟线上不是一套 key

1

CI 上也是都有 环境变量 注入能力的。 本地的话,其实还好,都是开发数据库啥的,跟线上不是一套 key

这种注入也是在运维层面来说明文的吧, https://eggjs.org/zh-cn/advanced/plugin.html#动态创建实例 通过这个实例化前去解密真正的账号密码,是不是更好的答案,不过也就是提高了门槛。

2
  1. 如果你部署后的源码都能被人接触到了,那任何安全措施都没有意义了。
  2. 手段不重要,关键在于秘钥要分环境隔离,并且同个秘钥跟应用、环境相关,即使被拿走秘钥,在其他应用中也无法解出来。
7
  1. 如果你部署后的源码都能被人接触到了,那任何安全措施都没有意义了。
  2. 手段不重要,关键在于秘钥要分环境隔离,并且同个秘钥跟应用、环境相关,即使被拿走秘钥,在其他应用中也无法解出来。

那可以提供一个读取config.yaml 这样的文件功能吗,因为如果环境变量里读和设置确实没有在容器中设置config map 方便

1

你直接在 config.default.js 里面去 require 这个文件然后赋值不就完了?

7

你直接在 config.default.js 里面去 require 这个文件然后赋值不就完了?

我也是这样做的,但是更希望能官方能提供这样的能力,因为官方可以约束require的方式,更方便debug