dotenvx JetBrains IDE插件
dotenvx命令虽然小巧快速,但是在一些场景中,还是不够便捷。我在IDE已经打开了代码,突然不能确认某一个配置项是否正确,
这个时候最直接的方式可能就是在IDE中查看.env
文件的内容,但是.env
文件是加密的,又查看不了,只能回到命令行模式,
然后输入dotenvx get KEY
来查看配置项的值,虽然简单,但是还是有点麻烦。
为了解决这个问题,我们提供了一个JetBrains IDE的插件:dotenvx JetBrains Plugin
目前插件的功能也比较全,包括文件创建、加密变量的inlay hint提示、加密变量的添加、Run Configuration with Dotenvx等。
创建.env
文件
你可以通过右键菜单选择New -> Dotenvx file
来创建一个新的.env
或者properties
文件,该文件会自动添加必要的元信息,
如UUID、name、group等信息,并且会自动生成一对秘钥用于加密配置项。
如果你已经有一个.env
文件了,你可以通过macOS: ⌘N
或Windows/Linux: Alt+Insert
快捷键,弹出Generate
菜单,
然后选择Insert Public Key
为当前.env
文件添加公钥,这样就可以使用dotenvx的加密功能了。
为何要以Inlay Hints
的方式查看加密项对应的明文信息?直接转换为普通文本查看不就可以了吗?
我们知道目前开发人员使用的编辑器或IDE基本上都是支持AI的,所以你打开某一文件进行编辑时,AI Agent会将当前编辑的内容提交到云上进行AI推理,
然后再返回对应的代码提示、Review结果等,如果你的.env
文件是明文的,那么AI就可以直接读取到你的敏感配置项。
通过JetBrains提供的Inlay Hints
功能,我们不需要将.env
文件转换为明文,而是通过Inlay Hints
的方式将加密的配置项对应的明文信息显示出来,
这样既能看到配置项的明文信息,又不会将敏感信息暴露给AI。
添加加密变量
还是上述的问题,如果你想在.env
文件中添加一个变量,如果你直接使用key=value
的方式添加,这个时候信息处于明文状态,
会被AI Agent读取到。 你需要使用dotenvx set KEY -
的方式添加加密变量,这样才会比较安全。
但是在IDE和命令行中切换还是有点麻烦,所以我们提供了一个添加加密变量的功能。右击.env
文件,选择Add Encrypted Variable
,
然后输入变量名和变量值,点击确认后,插件会自动将加密后的内容添加到.env
文件末尾,这样AI Agent就没有机会读取到配置中的敏感信息。
如果你想加密一个已有的明文变量,将光标移动到要加密的变量值上,然后按下Alter + Enter
快捷键,调用出Intention Actions
菜单,
然后选择Encrypt value with DOTENV_PUBLIC_KEY
即可加密明文变量。
同样,你在已经加密的变量值上,按下Alter + Enter
快捷键,调用出Intention Actions
菜单,选择Edit encrypted value
即可编辑加密变量,
插件会自动解密变量值,然后编辑,最后再加密更新会原来的变量位置。
粘贴(paste)即加密(encrypt)
在一些场景中,我们需要copy粘贴一些敏感信息到.env
文件中,比如各种云服务的access key,API token等,这些厂商都会提供对应的Key和Token的拷贝操作,
当你copy后,很可能在.env
文件中直接粘贴,如果你使用AI编辑器,那么很有肯能会导致敏感信息泄露的问题,这些AI编辑器都有文件变更监听机制。
这个时候,你只需要先输入Key名称,如下:
XXX_API_KEY=
然后Ctrl+V
粘贴你的API Key,插件会自动将其加密,并生成如下内容:
XXX_API_KEY=encrypted:xxxx
当然并不是所有的粘贴数据操作都会进行加密,只有当key的名称包含password
, secret
, key
, private
, token
, credential
时,
才会进行加密操作,避免误操作。
Run Configuration with Dotenvx
考虑到测试的方便,有的时候我们需要在运行时加载.env
文件中的配置项,这些之前通常是由命令行工具等完成的,但是现在这些.env文件都被加密啦,
我还是希望能够将.env文件中的配置项加载到运行时环境中,这样就可以在运行时使用这些配置项了,这就是Run Configuration with
Dotenvx的功能。
目前Run configuration with Dotenvx支持的语言包括:Java, Node.js, Python, PHP, Ruby, Go,后续会考虑多增加。
Terminal支持
如果你在JetBrains IDE中使用内置的Terminal终端,如果监测到.env
文件的存在,dotenvx插件会自动加载.env
文件中的配置项,
然后转换为环境变量,这样你就可以在终端中直接使用这些配置项了。