Skip to main content

dotenvx这种模式和KMS的Secret管理有什么区别?

让我们看一个最典型的KMS Secret管理样例,截屏如下:

KMS Secret管理

从上述截屏可以看出:

  • KMS Secret通常是以project进行管理的,在项目中可以保护多个环境,不同的环境对应的secret值可能不相同
  • KMS中的Secret是集中进行加密的,如有一个全局的加密密钥,会对所有的Secret进行加密

回到dotenvx,你会发现有类似之处,如一个项目保护多个环境配置文件,如.env.dev, .env.prod等, 不同的环境对应的配置项可能不相同。 每一个.env文件有自己的元信息,如可以包含UUID、name、group等, 这些元信息可以帮助我们更好地管理和跟踪.env文件。

对比KMS的Secret管理,dotenvx的.env文件有以下特点:

  • 不需要特定的管理系统:dotenvx完全基于.env文件,这个和代码仓库一起的,打包的时候也会一起打包。记得以前KMS产品规划时,领导一直要求KMS产品要非常稳定,不然会影响到整个系统的稳定性, 如项目在启动时,如果访问KMS失败,那么整个项目就无法启动了,所以一些KMS的SDK还会进行配置项的本地缓存,还要解决容器化漂移问题,总之非常复杂。Dotenvx则不需要这样的担忧,就需要一个private key环境变量即可。
  • .env文件和代码是一起管理的:程序员是比较喜欢代码就近原则,如文档最好和代码放在一起,这样编辑起来更方便,AI助手也可以直接读取和处理这些文件。 dotenvx的.env文件就是和代码一起管理的,使用起来非常方便,这样很少出现配置项遗漏的问题。如果使用KMS外包系统,程序员需要频繁切换到KMS系统中去查找配置项。
  • .env文件的加密和解密:.env文件加密通常是基于文件的,而且是非堆成的,如果出现密钥泄露问题,只有相关的.env 文件会受到影响,而KMS的Secret管理如果密钥泄露,那么所有的Secret都可能被泄露,爆炸半径非常大。
  • SDK对接:不同的KMS有不同SDK,验证方式也不一样,而dotenvx采用的是.env文件,可以说非常简单,完全开放的,任何语言都可以对接。

在没有解决.env文件的加密和解密问题之前,.env的这种模式是无法替代KMS的Secret管理的,关键的私密数据加密和解密是最重要的。 但是借助dotenvx,加解密不在是问题了,那么.env模式就可以替代KMS的Secret管理了,而且更简单、方便和稳定,并且更安全啦。