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日 |
#978 in 身份验证
在sheesy-cli中使用
87KB
2.5K SLoC
share-secrets-safely (sheesy) 是一种用于团队和构建管道中管理共享密钥的解决方案。
与 pass
类似,sy
允许设置一个保险库来存储密钥,并与团队成员和工具共享。然而,它希望成为一个一站式商店,在单个二进制文件中,没有任何依赖,除了安装 gpg
,帮助用户使用 gpg
工具链和解决特定问题。
安装
请在此处阅读安装说明。
入门
在书中可以找到如何使用保险库的完整示例和详细说明的第一步,请参阅此处。
项目目标
- 优秀的用户体验
- 在工具设计中,用户体验优先,使新手容易上手,同时为专家提供所有可调的旋钮
- 作为单个二进制文件部署,无需动态链接依赖项
- 经过验证的加密技术
- 不要重新发明轮子,使用 gpg 进行加密。要求在主机上安装
gpg
是可以的 - 多亏了 GPG,每个用户都可以通过其公钥单独识别
- 不要重新发明轮子,使用 gpg 进行加密。要求在主机上安装
- 自动化和脚本编写容易
- 存储结构化密钥与在shell脚本中使它们可用一样容易
- 原生支持常见操作,如将密钥替换到文件中
- 适当的程序退出代码使错误处理容易
- 用户管理
- 轻松支持小型和大型团队,以及多个团队
- 利用gpg的信任网络,允许跨越团队边界继承信任,并激励彻底检查密钥
- 基本访问控制
- 划分您的密钥,并定义谁可以访问它们
- 支持旧轮子 - 通过兼容性
- 某些事情
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 所需要的所有材料。
- 以下文档的说明
- vault init
- ...
通往 5.0 的路线图
GPGME 依赖项也是可用性的主要缺陷,因为最终它会下降到 GPG 自身的怪癖。 SEQUOIA 是 PGP 协议的纯 Rust 实现,这将极大地帮助使 sheesy 更加可用。
- 使用 SEQUOIA 而不是 GPGME
- 提供 Windows 二进制文件
通往 6.0 的路线图
添加 pass
子命令
sy
力求尽可能可用,并且在需要的情况下会破坏兼容性。然而,为了允许人们利用其自包含性带来的改进的可移植性,应该让它能够充当 pass 的替代品。
尽管其输出不会匹配,但其输入和行为将完全匹配。
- init
最后但同样重要的是,应该有一些文档,突出显示相似之处和差异。
- 文档
一些可用性改进
- 确保当我们找不到分区时提供的错误消息更好,并且更具体地针对用例。
- 列表的
- 接收者
- 资源
开发实践
- 测试驱动开发
- 防止回归并使实现功能变得简单
- 使用Docker来测试更复杂用户交互
- 保持其实用性,因为Rust编译器已经为你处理了一些琐事,比如不快乐的代码路径。
- 安全第一
- 处理所有错误,永远不要直接解包
- 提供一个错误链,并使其易于理解出错的原因。
- 努力实现最小可行产品(MVP)和1.0版本快速...
- ...即使那只包括最常见的用例。
- 更愿意快速增加主版本号...
- ...而不是在主版本0上停留时间过长。
维护指南
发布版本
作为前提,你应该确保构建是绿色的。
- 运行
clippy
并修复所有警告,使用cargo clippy --all-features --bin=sy
- 在
VERSION
文件中更改版本 - 在
release.md
文件中更新发布说明。- 只需在前面加上新功能和修复的描述
- 运行
make tag-release
- 需要对此存储库的推送权限
- 需要所有部署的crate在crates.io上拥有维护者或所有者权限
部署版本
作为前提,你必须已经发布了一个版本,并且你的工作树必须干净,HEAD位于一个提交上。
为了安全起见,测试将再次运行,因为CI还不能阻止你发布红色构建。
- 运行
make deployment
。 - 将
release.md
文件中的所有文本复制并粘贴到github上的发布文本中。 - 将所有 tar.gz 拖放到发布中并发布。
- 在
doc/src/installation.md
中,更新URL以使用最新发布的版本 - 运行
make update-homebrew
- 它会为你推送 - 运行
make update-getting-started
- 它会为你推送
制作新的Asciinema录制
尽管文档目前每次推送到master都会更新(以便轻松修复现有文档),但主页上的 eye-candy 也需要重新生成。
作为前提,你需要安装 asciinema
的二进制文件。请确保你的播放器已经通过 asciinema auth
链接到你的账户。
- 将你的终端设置为120x20的大小
- 当你调整iterm2/3终端窗口大小时会看到这些单位
- 运行
make asciinema-no-upload
并使用asciicast play getting-started.cast
验证它包含你期望的内容 - 可能使用
make asciinema-upload
上传录制- 输入给定的URL,并根据您的喜好配置asciicast,在描述中添加反向链接,使其更加美观。
依赖项
~5.5MB
~114K SLoC