我正在尝试设置一个企业内部密码存储,供各种脚本(和人员)使用。我研究过许多替代方案,但最容易修改以实现我的目标的似乎是pass
公用事业。
我对安全性不太在行,而且在 GPG 方面真的是个菜鸟。我已设法通过以下方式使单个用户能够正常工作:
- 生成新的 GPG 密钥
- 使用
pass init <key_hex>
我还知道我可以使用-p
选项(或环境变量)在“数据”文件夹而不是主目录(默认为~/.password-store
)中初始化传递存储。
但是,我的情况是,我希望 (Linux) 主机/机箱的所有用户(或稍后特定组的用户)能够访问相同的密码存储。据我了解,我需要以某种方式为所有这些用户创建一个共享的 GPG 密钥,以便每个人都可以使用该pass
实用程序访问相同的存储并检索密码。我不知道如何进行这样的设置,我有点不知所措...
任何帮助,将不胜感激
答案1
可以将多个 gpg-id 添加到.gpg-id
文件以加密目录中的每个密码。这样做将允许各个成员共享密码存储,而无需将私钥交给每个人。
如果有必要的话,还可以创建具有不同 gpg-id 集的子目录。
请参阅man pass
下一节init
了解更多详细信息。
以下是一篇概述该过程的优秀文章:https://medium.com/@davidpiegza/using-pass-in-a-team-1aa7adf36592
希望这可以帮助。
答案2
为了避免共享私钥(这并非其真正目的),您可能需要查看相对较新的gopass
的替代方案pass
,它与 兼容pass
并且允许您本地支持多个收件人,同时强制执行git
基于 的工作流程。
它是开源的,基于 Go,可在Github。
它具有您在多用户环境中使用 pass 时可能缺少的以下功能:
- git 自动推送和自动拉取,永远不会错过任何变化。
- 可以像 Linux/UNIX 系统上的文件系统一样相互挂载的多存储
- 从命令行列出、添加和删除收件人
- 将公共 gpg 密钥存储在密码存储中的密钥文件夹中
- 与 git pgp 签名的提交完全兼容
当团队合作共享密码时这真的很有趣。
就像一样pass
,这意味着它使用gpg
,它以与相同的格式存储密码pass
,在文件的第一行.gpg
等。
gopass 的正常工作流程如下:
- 用户设置密码存储(或采用一个
pass
)并将每个收件人添加到其中。 - 用户在一个可公共访问的 git 存储库上共享密码存储(如果可能的话,在内部 git 服务器上,但由于所有内容都已加密,您也可以将其存储在外部服务器上,请记住,您的条目的结构和名称是暴露的。)
- 每个人都使用自己的私钥来解密数据,然后在更改时使用每个人的公钥对数据重新加密。
好消息是,每次提交到你的密码存储区都可以通过 git 签名,它与 PGP 智能卡兼容,例如pass
,如果您已经在生活中使用过 Go,那么很容易按照自己的方式对其进行调整。代码附带了大量的单元测试和足够好的文档。
在您的特定情况下,它应该可以很好地工作。您甚至可以避免完全远程 git 服务器,而只需将其存储在一个公共文件夹中。
答案3
每个用户都有权访问 pass,并将使用其钥匙串中的 GPG 密钥(第二个密钥而不是他们自己的密钥)对该目录进行 pass 初始化
首先,确保您的 pass 存储已使用 git 初始化。
添加您需要的密码。提交并推送到所有用户可访问的存储库。
然后每个用户将克隆这个包含你的加密密码(但不包含 GPG 密钥)的 git repo
您可以使用以下方式传播您的 GPG 密钥:
gpg --export-secret-key -a "User Name" > private.key
然后为每个用户导入
gpg --allow-secret-key-import --import private.key
最后,每个用户将使用共享的 GPG 密钥 ID 初始化自己的 pass repo
init [ --path=sub-folder, -p sub-folder ] gpg-id...
你可以使用以下命令获取 key-id
gpg --list-keys
注意:您必须考虑共享私钥的逻辑。
我引用[电子邮件保护]在这个好关于 GPG 的备忘单
用例 *.2:上面提到的是导出和导入密钥的命令,我想解释一下为什么你可能想要这样做的原因。基本上,如果你属于一个组,并且想要为该组创建一个密钥对,那么一个人将创建密钥对,然后导出公钥和私钥,将它们交给该组的其他成员,然后他们都将导入该密钥对。然后,该组的成员或组外的某个人可以使用该组的公钥,加密消息和/或数据,并将其发送给该组的成员,并且所有成员都可以访问该消息和/或数据。基本上,你可以创建一个简化的系统,其中只需要一个公钥即可将加密的内容发送给多个收件人。