高压
以更简单的心理模式和0个依赖性替代转动式管
为什么是Galacrypt?
- 推出.env文件只是不适合我(在犯罪前在苍蝇上传送加密/解密.env文件)
- 我认为,承诺.env 增加了一个精神上的指控,即确保转录器在推进你的.env(反直觉动作)前配置良好
- 事实上,我认为 转动的方式 "看起来像一个黑客", 做什么 与你看到的不同: 例如:你可以看到一个清晰的.env,但在git文件中,它是加密的.
三角洲:在处理秘密时,我更喜欢WYSIWYG
Galacrypt是做什么的呢? (美国英语)?
您在配置中定义了一组输入/输出文件
{
"files": [
{
"input": ".env",
"output": ".env.galacrypt"
}
]
}
执行时(或运行时) yarn galacrypt encrypt它会使用存储在文件中的 AES 256 密钥加密这些文件 .galacryptkey
打开 git pull, (中文(简体) ), git rebase (或运行时) yarn galacrypt decrypt它会解密这些文件
: bulb: 通过这个方法,您会输入自动文件, 但保留输入文件 gignored . 你所看到的加密将被加密,你所看到的清晰文本将保留在清晰文本中(并且应当被 gitignored)
当您在设置 AES 密钥后将工程复制
yarn galacrypt use <key>
您可以通过运行恢复您的文件
yarn galacrypt decrypt --all
安装
yarn add -D @galadrim/galacrypt
设置
新建项目的设置
运行 yarn galacrypt init
这将做以下工作:
- 将.galacryptkey添加到您的.gitignore
- 创建 galacrypt 密钥, 存储在. galacryptkey (您必须 gitignore this file 并保存密钥到安全的地方, 例如您的密码管理器)
- 创建将运行的预承诺钩
galacrypt encrypt - 创建后重写勾钩( 如: 后)
git rebase将运行galacrypt decrypt - 创建后置钩( 如:
git pull将运行galacrypt decrypt - 创建 .galacryptrc.json 文件,然后您必须按您的需要编辑它(见下文json示例)
要完成配置, 请添加一些要加密的文件 .galacryptrc.json 文件
这里的格式 :
interface GalacryptConfig {
files: {
input: string;
output: string;
// keep scrolling to see details about these options
disableImplicitDecrypt?: boolean;
mode?: 'file' | '.env';
}[];
}
以及一个例子:
{
"files": [
{
"input": ".env",
"output": ".env.galacrypt"
}
]
}
: 警告: 在离开此页面之前, 请双倍检查输入文件是否在您的 .gitignore 文件
现有项目的设置
问你的团队要你的项目
然后使用此命令 :
yarn galacrypt use <key>
这将做以下工作:
- 将提供的高压键放入.galacryptkey
- 创建将运行的预承诺钩
galacrypt encrypt - 创建后重写钩(例如.
git rebase将运行galacrypt decrypt - 创建后相接钩( 如.
git pull将运行galacrypt decrypt
软件包管理器配置
默认情况下, Galacrypt 使用 yarn {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}去开钩子 您可以在运行时使用下列标记之一来覆盖此行为 galacrypt init 或者说 galacrypt use <key>数字 :
--yarn: 使用yarn(默认)--pnpm: 使用pnpm--npm: 使用npm--bun: 使用bun--package-manager <command>: 使用自定义软件包管理器命令
示例
# Using pnpm
galacrypt init --pnpm
# Using a custom command
galacrypt use <key> --package-manager "deno"
使用量
# to setup galacrypt on a new project (will generate a new AES 256 key)
yarn galacrypt init
# to setup galacrypt on an existing project
yarn galacrypt use <key>
# to encrypt input files set in .galacryptrc.json to their output versions
yarn galacrypt encrypt
# to decrypt output files set in .galacryptrc.json to their input versions
# note that it won't decrypt files with `disableImplicitDecrypt: true`
yarn galacrypt decrypt
# to decrypt all output files set in .galacryptrc.json to their input versions
yarn galacrypt decrypt --all
# to encrypt only some files (coma separated list of input files)
yarn galacrypt encrypt --only .env
# to decrypt only some files (coma separated list of output files)
yarn galacrypt decrypt --only .env.galacrypt
# to git add output files after encryption (used in the pre-commit hook)
yarn galacrypt encrypt --git-add
页:1
当你将设置另一个使用 git 钩子( 如 husky) 的工具时, 它可能会打破 galacrypt git 钩子配置, 您可以通过运行再次恢复它
yarn galacrypt use <key>
这不应该打破另一个工具的钩子(它会把我们的钩子附在它们身上)
: bulb:您总是可以手动检查您的 git 钩子,您可以通过运行这个来找到它们:
git config core.hooksPath
如果这回不来,你就会被勾住 .git/hooks
禁用非法解析选项
想象一下你有这样的配置:
{
"files": [
{
"input": ".env",
"output": ".env.galacrypt"
},
{
"input": ".env.staging",
"output": ".env.staging.galacrypt"
}
]
}
.env 将会是您开发所需的本地嵌入变量, 每个开发者可能使用这个文件的细微不同的版本
如果两个devs, 鲍勃 财务报告和审定财务报表 爱丽丝 爱丽丝修改了她 .env 文件并按下更新 .env.galacrypt 文件
当鲍勃 git pull 或者说 git rebase 找回爱丽丝所做的改变, galacrypt decrypt 他将会失去自己的版本 .env 文件
对外部配置来说是这样的 .env.staging 但对于本地配置, 可能与开发者不同
这里 disableImplicitDecrypt 可使用,见下文更新的配置:
{
"files": [
{
"input": ".env",
"output": ".env.galacrypt",
"disableImplicitDecrypt": true
},
{
"input": ".env.staging",
"output": ".env.staging.galacrypt"
}
]
}
disableImplicitDecrypt 通知 galacrypt 绝不隐含地解密此文件, 意思是当你运行时 galacrypt decrypt (例如当你 git pull 或者说 git rebase 以获取其它 devs 的代码) 它不会解密 .env.galacrypt 页:1 .env
: bulb: 您总是可以通过运行强制解密 galacrypt decrypt --all 或者说 galacrypt decrypt --only path/to/output/file
: bulb : 当你在工程上着陆时, 您将想要解密所有文件, 包括注意的文件 disableImplicitDecrypt,这就是为什么 --all 选项存在 :
yarn galacrypt decrypt --all
模式选项
默认( E)"mode": "file") galacrypt 加密该 整体 输入文件为单个 blob .
这是对二进制的,但它有一个缺点 .env 文件: 更改一个
变量重写整个blob,所以两个开发者触碰同一个文件最终总是与
一场无法解决的冲突.
这个 .env 模式加密 只有数值,并将可变名称置于清晰的文本中:
{
"files": [
{
"input": ".env.staging",
"output": ".env.staging.galacrypt",
"mode": ".env"
}
]
}
拿着这个 .env.staging 文件 :
# staging config
DB_HOST=db.staging.internal
DB_PASSWORD=hunter2
export API_TOKEN="tok en"
yarn galacrypt encrypt 现在逐行生成一条线 .env.staging.galacrypt数字 :
# generated by Galacrypt, do not edit manually
# galacrypt: v=1 mode=.env eof=lf
#galacrypt:0d2f5c0fa97a1df7f69f23184f8fee32:6167d0c1ba86bad7143a2345832120e2eb910ae5161bedb1fbe8e2a79e8d49c9
DB_HOST=1461c1820260c5af26300fc2fd42b454:0aa330b7ac483f1b89c2a8d7d0c48dbf9758779be868f6a21354dc4b78662004
DB_PASSWORD=97bc23dd017b86464a6c776297a01e10:c8a9ec345c305db9d37b893c3bab0dd5
export API_TOKEN=7a6400017e37ae819674e43b2fbbfb82:28eef2f065f96b3f01aadaaccec1edd2
# end
你的一行话 .env 是加密文件的一行, 所以 :
- 更改加密文件中的一行变量
- 若为 爱丽丝 变动
DB_PASSWORD时 鲍勃 添加新变量, git 合并两种, 不包含 任何冲突 - 当真的存在冲突时( 两者都更改了相同的变量), 它都是普通的一行 您可以在编辑器中解决的冲突
评论和空白行被保留,但评论的内容被加密,以便
您留下的注释未以清晰的文本发布 。 不为一行 KEY=value
配对是加密整组。 数行引用的值( 例如 PEM 私人密钥) 是
支持并恢复原样.
: bulb: 您可以将已有文件切换到 .env 模式,只要添加选项和
运行 yarn galacrypt encrypt。去除选项后,以同样的方式切换。 解密
检测文件本身的格式,而不是配置的模式,所以一个在之前拉动的队友
已重新加密的文件永远不会被屏蔽, 无论是哪个方向 .
: 警告: 在启用前 .env 模式,确保工程的每个开发者运行
暴风雨 2.4.0 (中文(简体) ) 或稍后: 旧版本无法读取该格式加密的文件.
这是什么 .env 模式显示
这种模式的要点是交换一些可合并文件的保密性. 任何人谁可以 读取您的仓库查看 :
- 变量的名称
export前缀和缩进 - 有多少变量,评论和空白行的位置
- 是否为 一个在两个承诺之间更改的指定值(加密是决定性的,所以 不变的值保持完全相同的加密文本). 价值本身是保密的.
: 警告: 如果变量名称本身敏感, 请保留默认 file 模式.
这个 .env 模式只支持 UTF-8 文本文件。 二进制(和任何你宁愿保留的东西)
完全不透明)必须留在 file 模式.