Skip to main content

Dotenvx Cloud版本介绍

Dotenvx命令行、IDE插件等,可以很好帮助开发者在本地进行配置项的加密和解密,而且可以发现大胆地提交这些配置文件到代码仓库中, 这样配置项存储和版本控制等问题就可以得到很好的解决,要知道在没有Dotenvx之前你需要一个昂贵的KMS系统才能完成,而且浪费服务器、运维和开发者的时间。

那么Dotenvx还需要一个云端版本吗?答案是肯定的。一些场景中,我们可能需要做.env文件的集中管理,如安全审计的需求、同时也可以通过该系统进行配置的动态推送和更新等, 这些都需要一个云端的系统来支持。

目前云端版本主要提供以下功能:

  • .env文件的备份
  • .env.keys.json.aes文件备份
  • .ennv的集中管理

文件备份

首先讨论一下文件备份。 并不是所有的.env文件都保存在git仓库中,如一些全局的.env.github, .env.aws等, 这些文件通常是放在用户目录下的.dotenvx目录中,所以需要一个云端系统来进行数据备份。 当然你也可以选择将这些.env文件全部保存在一个私有git仓库中,这个也没有问题,如果你是专业开发人员,我也是这么建议。

你不用担心这些.env文件的安全性,首先.env文件是加密的,没有你的私钥是无法解密的,包括Dotenvx云端系统也是无法解密的。 此外这些.env文件的只有你才能访问,其他人是无法访问的,这点和GitHub上的私有仓库是有区别的。 GitHub上的私有仓库,在一些情况下,可能还是为被第三方访问的,如你使用第三方的CI/CD系统,或者第三方AI编辑器、或者第三方Code Review工具等, 可能都会访问你的私有仓库,这样就有可能泄露你的敏感配置项,相反Dotenvx Cloud就没有这个问题。

再说一下Dotenvx Cloud的安全设计,和普通的系统的用户名密码登录方式不同,Dotenvx Cloud采用Passkey的方式进行登录, 也就是说Dotenvx命令行会生成一对公私钥,公钥会上传到Dotenvx Cloud,私钥则保存在本地的$HOME/.env.keys文件中。 在访问Dotenvx Cloud时,Dotenvx命令行会使用私钥进行签名,Dotenvx Cloud会根据公钥验证签名的正确性, 这样就可以确保只有从你的设备上才能访问Dotenvx Cloud,其他设备是无法访问的。

Dotenvx Cloud还也提供web登录界面,但是是需要TOTP二次验证的,全方面保护你的账号安全。

另外如果你想备份.dotenvx/.env.keys.json文件,也可以通过Dotenvx Cloud来完成,这个也是通过AES 256进行加密的, 主要的目的是防止设备故障等,导致.env.keys.json文件丢失,或者被误删除等。

配置审计

Dotenvx Cloud还提供了配置审计的功能,其实就是从全局的角度来审视你的配置文件,如以下规则:

  • 不同的.env文件不能包含同样的UUID,这样可以确保每个.env文件都是唯一的。
  • 不同文件的.env文件的公钥不能相同,这样可以确保每个.env文件的公钥都是唯一的,减少配置泄露带来的爆炸半径。
  • 加密值审计:不同文件的加密值不能相同,即便原始的配置项相同,也要确保加密后的值不一样,主要防止各种错误拷贝操作,保证配置项的真正意义上的准确性。
  • 签名验证:可以验证.env文件的签名是否正确,确保文件没有被篡改。

配置推送

在同步本地.env到远端时,Dotenvx Cloud会自动触发配置推送功能,可以将最新的.env文件推送到系统上, 可以非常容易地实现Config Server的动态推送功能。

团队协作

如果你想给你的同事或者团队发送一些私密配置,如线上的数据库密码、API密钥等,你可以通过微信、Email等进行发送, 但是这并不安全,可能会被第三方截获,这也是为何大点的互联网公司都要有自己的IM工具,并不是微信不好用,而是有安全隐患。

借助Dotenvx Cloud,你可以使用你同时的公钥对私密数据进行加密,然后再通过dotenvx cloud send命令将数据发送给你的同事, 你的同事可以通过dotenvx cloud receive命令来接收加密后的数据,然后调用自己的私钥进行解密, 这个和PGP的工作原理类似,不用再担心私密数据的传输泄露问题。