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的工作原理类似,不用再担心私密数据的传输泄露问题。