在 GitHub Actions 中实现用户级别的密钥管理

63次阅读
没有评论

问题描述

希望创建一个 GitHub 工作流,用于针对一个 REST API 运行测试。该 API 需要一个始终与用户关联的密钥,而没有全局的“测试”密钥。用户想知道是否有一种方法让每个贡献者都可以以一种 GitHub Actions 可以访问的方式存储他们的 API 密钥。

解决方案

请注意以下操作可能涉及到第三方工具和服务,使用前请仔细阅读相关文档并谨慎操作。

方案1: 使用 GitHub Secrets

GitHub Secrets 是存储敏感信息的一种方法,但通常是在仓库或组织级别定义的。虽然没有直接支持用户级别的 Secrets,但可以通过以下方式实现每个贡献者的密钥管理:

  1. 每个贡献者单独维护密钥: 贡献者可以在他们的 fork 或分支中设置自己的 Secrets,以便在他们的工作流中使用。这需要贡献者在工作流中引用自己的 Secrets。

  2. 动态密钥名称: 你可以在 Secrets 名称中使用动态标识符,以区分不同的贡献者。例如,可以为每个贡献者创建一个格式为 USER_API_KEY 的 Secret,其中 USER 是贡献者的用户名或标识符。然后在工作流中使用这些动态名称来引用 Secrets。

请注意,这种方法需要贡献者自己负责维护他们的密钥,并确保不会误用或泄露。

方案2: 使用外部密钥管理工具

另一种方法是使用外部密钥管理工具,如 HashiCorp Vault,来集中管理用户级别的密钥。这可以在一定程度上解决 GitHub Secrets 仅限于仓库级别的限制。以下是一个概括的步骤:

  1. 设置 HashiCorp Vault: 部署和配置 HashiCorp Vault,设置适当的身份验证和权限策略。

  2. 创建用户密钥: 为每个贡献者在 Vault 中创建一个单独的密钥,并分配适当的权限。

  3. GitHub Actions 集成: 在你的 GitHub Actions 工作流中,使用适当的身份验证机制(如 App Token 或 GitHub Token)来登录到 Vault,并获取贡献者的密钥。

这种方法需要更多的配置和管理工作,但可以提供更灵活的用户级别密钥管理。

方案3: 整体项目测试用户

如果 REST API 是项目的一部分,并且每个贡献者需要测试 API,那么可以考虑为项目设置一个测试用户,并在仓库或组织级别存储该测试用户的密钥。然后在工作流中使用这个共享的密钥来进行测试。

总结

在 GitHub Actions 中实现用户级别的密钥管理可以通过使用 GitHub Secrets、外部密钥管理工具或共享测试用户的密钥来实现。每种方法都有其优缺点,你可以根据你的需求和安全性考虑选择合适的方法。

请注意,本解决方案可能涉及到第三方工具和服务,操作前请先了解相关文档,并谨慎评估风险。

希望以上解决方案对您有所帮助!如果您还有任何问题,请随时提问。

正文完