UStackUStack
AxKeyStore favicon

AxKeyStore

AxKeyStore 是一款命令行工具,它通过使用您的私有 GitHub 仓库作为加密的、不可信的存储,来安全地管理密钥、密文和密码。

AxKeyStore

什么是 AxKeyStore?

AxKeyStore:基于 GitHub 后端的安全密钥管理

什么是 AxKeyStore?

AxKeyStore 是一款强大的开源命令行界面(CLI)工具,专为开发人员和注重安全性的用户设计,他们需要一种可靠的方式来存储和管理敏感凭证、密钥和密码。其核心创新在于利用您现有的私有 GitHub 仓库作为后端存储机制。这种方法提供了云存储的优势——可访问性、版本控制和可靠性——同时不牺牲安全性,因为 GitHub 严格被视为不可信的存储。

至关重要的是,AxKeyStore 遵循绝对客户端加密的原则。每一条敏感数据,包括密钥本身以及用于加密密钥的密钥,都在传输到网络之前完全在您的本地机器上进行处理。因此,任何明文密钥、主密钥或密码都不会通过网络传输,也不会以未加密的形式驻留在远程服务器或本地文件系统中。这种零信任架构确保只有您,拥有正确的主密码(Master Password),才能解密和访问您的保险库数据。

主要特性

  • 零信任架构: 构建于所有外部系统(包括 GitHub)都不可信的原则之上。加密是强制性的和多层次的。
  • 三层加密方案:
    • 密钥加密: 使用远程主密钥(RMK)加密密钥。
    • RMK 加密: 使用您的主密码(通过客户端加密)加密 RMK。
    • 本地凭证加密: 使用本地主密钥(LMK)保护本地配置详情(如 GitHub token 和仓库名称),LMK 也受您的主密码保护。
  • 高级加密技术: 利用现代、安全的算法,包括用于认证加密的 XChaCha20-Poly1305 和用于从主密码进行稳健密钥派生的 Argon2id。
  • GitHub 作为后端存储: 利用您控制的任何私有 GitHub 仓库提供的免费、有版本控制且可靠的存储。
  • 多配置文件支持: 轻松管理多个不同的保险库,每个保险库都有唯一的登录信息、主密码和关联的 GitHub 仓库。
  • 分层组织: 可以使用类别路径(例如 api/production/internal)对密钥进行逻辑组织,以增强可发现性和管理性。
  • 统一身份验证: 使用 GitHub Apps 和设备流(Device Flow)机制安全地进行身份验证。

如何使用 AxKeyStore

开始使用 AxKeyStore 涉及简单的安装,随后是初始登录和设置过程。该工具在配置后设计为易于使用。

1. 安装: 使用提供的特定于平台的脚本安装 CLI 工具:

  • macOS/Linux: curl -sSL https://raw.githubusercontent.com/basilgregory/axkeystore/main/install.sh | bash
  • Windows (PowerShell): powershell -c "irm https://raw.githubusercontent.com/basilgregory/axkeystore/main/install.ps1 | iex" 这些脚本会自动将二进制文件放置在您的 PATH 中,以便立即访问。

2. 初始登录和设置: 执行登录命令以启动设置序列: axkeystore login 在首次运行时,系统将提示您创建并确认您的主密码。此密码是解密保险库和保护本地配置的最终密钥。密码设置后,CLI 将引导您在您的账户或组织中安装必要的 GitHub 应用程序,授予 AxKeyStore 读取/写入指定私有仓库所需的权限。

3. 管理密钥: 登录并配置后,您可以使用简单的命令来存储和检索凭证。例如,存储新密钥可能涉及指定类别和密钥名称,而检索则使用相应的命令,确保在从 GitHub 获取加密的 blob 之后,数据仅在本地解密。

使用场景

  1. 保护 CI/CD 流水线密钥: 开发人员可以将敏感的 API 密钥、部署令牌和自动化构建和部署所需的​​环境变量存储在他们的私有 AxKeyStore 保险库中,确保这些密钥永远不会被硬编码或暴露在检入源代码控制的配置文件中。
  2. 管理个人开发人员凭证: 个人开发人员可以集中管理他们的所有 SSH 密钥、云提供商访问密钥(AWS、Azure、GCP)和数据库密码。通过使用他们的 GitHub 仓库,他们可以获得密钥轮换事件的版本历史记录。
  3. 跨平台开发环境: 由于存储是基于云的(GitHub)且工具是 CLI 驱动的,用户可以在本地机器、开发服务器或临时工作站之间无缝切换,在执行初始登录/设置后安全地访问所需的密钥。
  4. 小型团队凭证共享(受控): 虽然主要设计用于个人安全,但团队可以使用共享的专用私有仓库进行基本的非生产凭证共享,依赖于共享的主密码知识(尽管建议单独管理以实现最大安全性)。

常见问题 (FAQ)

问:如果我忘记了我的主密码会怎样? 答:由于 AxKeyStore 使用由您的主密码保护的强大、客户端、多层加密方案,忘记密码意味着数据将永久无法访问。没有恢复机制,严格遵守零信任安全模型。

问:如果 GitHub 是存储位置,我的数据真的安全吗? 答:是的。GitHub 只存储加密的二进制 blob。即使 GitHub 遭到泄露,攻击者也只会获取到加密数据,因为解密密钥(RMK 和 LMK)受您的主密码保护,并且永远不会以未加密的形式离开您的本地机器。

问:我可以使用公共仓库进行存储吗? 答:不可以。AxKeyStore 明确要求使用私有 GitHub 仓库。使用公共仓库会将您所有的加密密钥暴露给全世界,这违背了安全架构的初衷。

问:AxKeyStore 如何处理身份验证和授权? 答:它使用您必须安装的专用 GitHub 应用程序。该应用程序通过设备流促进安全身份验证,并仅向指定为保险库的特定仓库授予 CLI 所需的权限(读/写)。

问:这个工具有成本吗? 答:AxKeyStore 是根据 MIT 许可证发布的开源项目。该工具本身是免费使用的。但是,使用 GitHub 进行存储需要您拥有一个 GitHub 账户,该账户提供免费的私有仓库。

AxKeyStore | UStack