#gpg #pgp #crypto

app sheesy-cli

'share-secrets-safely' CLI 与 GPG/pass-like 保险库交互

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 身份验证

Download history 22/week @ 2024-03-31 7/week @ 2024-04-07 1/week @ 2024-04-14 5/week @ 2024-04-21 7/week @ 2024-04-28 3/week @ 2024-05-12 6/week @ 2024-05-19 12/week @ 2024-05-26 13/week @ 2024-06-02 20/week @ 2024-06-09 17/week @ 2024-06-16 18/week @ 2024-06-23 11/week @ 2024-06-30 13/week @ 2024-07-07 10/week @ 2024-07-14

每月54次下载

LGPL-2.1

105KB
2.5K SLoC

https://crates.io ci

share-secrets-safely (sheesy) 是一种用于团队和构建管道中管理共享机密解决方案。

pass 类似,sy 允许设置保险库来存储机密,并与团队成员和工具共享。然而,它希望成为一个一站式商店,单个二进制文件不依赖于任何除了安装 gpg 以外的依赖项,帮助用户使用 gpg 工具链和解决特定问题。

asciicast

安装

请在此处阅读安装说明

入门

在书中可以找到如何使用保险库的完整示例和详细说明的第一步。

项目目标

  • 卓越的用户体验
    • 在工具设计时,用户体验是首要的,使新手容易上手,同时为专家提供所有调整旋钮。
    • 作为 单个二进制文件 部署,没有动态链接依赖项
  • 经过验证的加密
    • 不要重新发明轮子,使用 gpg 进行加密。要求在主机上安装 gpg 是可以接受的
    • 感谢 GPG,每个用户都可以通过其公钥单独识别
  • 自动化和脚本编写简单
    • 存储结构化机密与在shell脚本中提供它们一样简单
    • 支持如将机密替换到文件中的常见操作
    • 适当的程序退出码使错误处理变得容易
  • 用户管理
    • 轻松支持小型和大型团队以及多个团队
    • 利用gpg的 信任网 允许即使在团队边界之外继承信任,并激励彻底检查密钥
  • 基本访问控制
    • 划分您的机密并定义谁可以访问它们
  • 支持旧版本 - pass 兼容性
    • pass 那样,pass 确实做得很好的是,使用最小的基础设施和配置设置保险库。我们使用该基础设施,而不是重新发明轮子。
    • 这使得我们与pass兼容,允许您在使用默认配置的sheesy保险库时使用pass

非目标

  • 直接复制passgpg的功能
    • 在了解了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