18 个稳定版本 (3 个主要版本)
4.0.11 | 2020年8月11日 |
---|---|
4.0.10 | 2020年5月3日 |
4.0.8 | 2020年4月19日 |
4.0.7 | 2019年9月23日 |
1.0.1 | 2017年12月31日 |
#383 in 身份验证
每月54次下载
105KB
2.5K SLoC
share-secrets-safely (sheesy) 是一种用于团队和构建管道中管理共享机密解决方案。
与 pass
类似,sy
允许设置保险库来存储机密,并与团队成员和工具共享。然而,它希望成为一个一站式商店,单个二进制文件不依赖于任何除了安装 gpg
以外的依赖项,帮助用户使用 gpg
工具链和解决特定问题。
安装
请在此处阅读安装说明。
入门
在书中可以找到如何使用保险库的完整示例和详细说明的第一步。
项目目标
- 卓越的用户体验
- 在工具设计时,用户体验是首要的,使新手容易上手,同时为专家提供所有调整旋钮。
- 作为 单个二进制文件 部署,没有动态链接依赖项
- 经过验证的加密
- 不要重新发明轮子,使用 gpg 进行加密。要求在主机上安装
gpg
是可以接受的 - 感谢 GPG,每个用户都可以通过其公钥单独识别
- 不要重新发明轮子,使用 gpg 进行加密。要求在主机上安装
- 自动化和脚本编写简单
- 存储结构化机密与在shell脚本中提供它们一样简单
- 支持如将机密替换到文件中的常见操作
- 适当的程序退出码使错误处理变得容易
- 用户管理
- 轻松支持小型和大型团队以及多个团队
- 利用gpg的 信任网 允许即使在团队边界之外继承信任,并激励彻底检查密钥
- 基本访问控制
- 划分您的机密并定义谁可以访问它们
- 支持旧版本 - pass 兼容性
- 像
pass
那样,pass
确实做得很好的是,使用最小的基础设施和配置设置保险库。我们使用该基础设施,而不是重新发明轮子。 - 这使得我们与
pass
兼容,允许您在使用默认配置的sheesy
保险库时使用pass
。
- 像
非目标
- 直接复制
pass
或gpg
的功能- 在了解了
pass
实际上是什么以及它有多么难用,尤其是在与gpg
结合使用的情况下,这个项目将不会关注提供的功能,而是由其项目目标驱动。
- 在了解了
- 成为类似hashicorp vault的东西
- 这个解决方案是严格基于文件和离线的,因此无需任何额外设置即可使用。
为什么我会选择sheesy
而不是...
您可以在我们的书中找到各种可能带有偏见和主观意见的比较链接。然而,这是一本有趣的书,请随时提交PR以进行更正。
注意事项
- 许多加密操作会将解密数据存储在临时文件中。这些文件会接触磁盘,目前可能被攻击者捕获。一个解决方案是使用'tempfile',它可以允许使用安全的临时文件,但这可能使得获取MUSL构建变得不可能。静态构建应该仍然没问题。
- 使用'sign-key'操作需要GPG2。当尝试通过
vault recipients add <fingerprint>
添加新的未经验证的接收者时,后者是必需的。
未来路线图
如您从版本号中看到的那样,这个项目慷慨地分配了主版本。这主要是因为为了简单起见,CLI以及所有使用的库只有一个版本号。
实际上,您可以期望CLI很少改变,如果改变,只是为了改善用户体验。我们编写的测试越多,就越容易发现明显的不足。
保险库库及其类型将更频繁地更改,但我们预计它将从5.0开始稳定。
4.1路线图
这将使第一个可以公开宣传的发布版本,因为它应该包括人们可能需要舒适地开始使用sheesy的所有材料。
- 关于
- 保险库初始化的文档
- ...
5.0路线图
作为可用性的主要缺陷,GPGME依赖关系最终下降到GPG本身的怪癖。 SEQUOIA是PGP协议的纯Rust实现,这将极大地帮助使sheesy更加可用。
- 使用SEQUOIA而不是GPGME
- 提供Windows二进制文件
6.0路线图
添加pass
子命令
sy
旨在尽可能可用,如果需要,会破坏兼容性。然而,为了允许人们利用其自包含的改进便携性,应该能够让它充当pass的替代品。
尽管其输出不会匹配,但它的输入和行为将完美匹配。
- 初始化
最后但并非最不重要的是,应该有一些某种形式的文档,突出相似之处和差异。
- 文档
一些可用性改进
- 确保当我们找不到分区时提供的错误消息更好,并且特定于用例。
- 列表的
- 接收者
- 资源
开发实践
- 测试先行开发
- 防止回归并使实现功能变得容易
- 使用docker进行更复杂用户交互的测试
- 使其实用,因为Rust编译器已经为您处理了琐碎的事情,比如不快乐的代码路径。
- 安全第一
- 处理所有错误,永远不要解包
- 提供一个错误链,并使其易于理解出错原因。
- 努力实现MVP和1.0版本快速...
- ...即使只包括最常见的用例。
- 更倾向于快速增加主版本...
- ...而不是在需要的时间之外保持主版本为零。
维护指南
发布版本
作为先决条件,您应该确保构建是绿色的。
- 运行
clippy
并使用cargo clippy
--all-features --bin=sy 修复所有警告 - 更改
VERSION
文件中的版本 - 更新
release.md
文件中的发布说明。- 只需在新功能和修复的描述前加上前缀
- 运行
make tag-release
- 需要对此存储库的推送权限
- 需要在crates.io上对所有已部署的crate具有维护者或所有者权限
部署版本
作为先决条件,您必须已经发布了一个版本,并且您的worktree必须干净,HEAD处于一个提交。
为了安全起见,将再次运行测试,因为CI目前还不能阻止您发布红色构建。
- 运行
make deployment
。 - 将
release.md
文件中的所有文本复制并粘贴到GitHub上的发布文本中。 - 将所有 tar.gz 拖放到发布中并发布。
- 在
doc/src/installation.md
中,更新URL以使用最新发布的版本 - 运行
make update-homebrew
- 它将为您推送 - 运行
make update-getting-started
- 它将为您推送
创建新的Asciinema录制
尽管文档目前随着对master的每次推送进行更新(以便轻松修复现有文档),但主页上的“眼球糖果”也需要重新生成。
作为先决条件,您需要一个已安装的 asciinema
二进制文件。请确保您的播放器已经通过 asciinema auth
链接到您的账户。
- 将您的终端设置为120x20的大小
- 您在调整iterm2/3终端窗口大小时会看到这些单位
- 运行
make asciinema-no-upload
并使用asciicast play getting-started.cast
验证它包含您期望的内容 - 可能使用
make asciinema-upload
上传录制- 输入给定的URL并配置asciicast,将其添加到描述中,并使其看起来很棒。
依赖关系
~0.7–1.9MB
~26K SLoC