Bitwarden Secrets Manager:简化 DevOps 的机密管理
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
在 DevOps 和开发流程中,如何安全高效地管理机密数据(如密码、API 密钥和认证信息)是一个重要话题。
Bitwarden 是一款开源密码管理工具,帮助用户存储、管理并共享敏感信息。Bitwarden 推出了新产品Secrets Manager[1],专为 DevOps 团队和开发人员提供简化的机密管理方案。
对于使用 GitHub Actions 等 CI/CD 工具的团队来说,Secrets 是一种存储机密信息的常见方式。
但是,GitHub Actions 中的 Secrets 一旦保存,就无法查看或修改,这使得本地保存机密变得繁琐且易出错。
而在团队环境中,个人和公司电脑之间的同步问题更是增加了额外的复杂性。
Bitwarden Secrets Manager 解决了这一难题,提供了安全、高效的机密存储与管理方式。
免费额度和在线服务
与传统的 Bitwarden 密码管理器类似,Secrets Manager 也支持 self-hosting,但需要授权才能进行。
为了简化流程(白嫖),也可以使用 Bitwarden 提供的在线服务,享受如下免费额度:
无限量的 Secrets 2 位用户 3 个项目 3 个机器账户
这些免费额度对于大多数小型或中型团队来说已足够使用。
如何集成 GitHub Actions?
Bitwarden Secrets Manager 便于与 GitHub Actions 等 CI/CD 服务进行集成。
以下是一个简单的示例,展示了如何在 GitHub Actions 中获取并使用存储在 Bitwarden 中的机密。
首先,在 GitHub Actions 的工作流 YAML 文件中,添加获取机密的步骤:
- name:GetSecrets uses:bitwarden/sm-action@v2 with: access_token:${{secrets.BW_ACCESS_TOKEN}} base_url:https://vault.bitwarden.com secrets: | fc3a93f4-2a16-445b-b0c4-aeaf0102f0ff > SECRET_NAME_1 bdbb16bc-0b9b-472e-99fa-af4101309076 > SECRET_NAME_2
在上面的示例中,fc3a93f4-2a16-445b-b0c4-aeaf0102f0ff 和 bdbb16bc-0b9b-472e-99fa-af4101309076 是存储在 Bitwarden Secrets Manager 中的机密 ID,而 SECRET_NAME_1 和 SECRET_NAME_2 是引用机密的名称,用于在后续步骤中进行使用。
接着,在后续步骤中,使用这些机密值:
- name: Use Secret run: SQLCMD -S MYSQLSERVER -U "$SECRET_NAME_1" -P "$SECRET_NAME_2"
完整示例:
- name:GetSecrets uses:bitwarden/sm-action@v2 with: access_token:${{secrets.BW_ACCESS_TOKEN}} secrets:| fc3a93f4-2a16-445b-b0c4-aeaf0102f0ff > GITHUB_GPG_PRIVATE_KEY bdbb16bc-0b9b-472e-99fa-af4101309076 > GITHUB_GPG_PRIVATE_KEY_PASSPHRASE -name:ImportGPGkey uses:crazy-max/ghaction-import-gpg@v6 with: gpg_private_key:${{env.GITHUB_GPG_PRIVATE_KEY}} passphrase:${{env.GITHUB_GPG_PRIVATE_KEY_PASSPHRASE}} git_user_signingkey:true git_commit_gpgsign:true
更多集成方式请参考 官方文档[2]。
Secrets Manager CLI 使用
为了便于在本地查询和管理机密,Bitwarden 提供了强大的 Secrets Manager CLI[3] 工具。可以通过它来创建、删除、编辑和列出机密。
从 GitHub Releases[4] 下载适合操作系统的可执行文件,运行以下命令以查看帮助信息:
bws --help
使用 Secrets Manager CLI 时,需先配置访问令牌(Access Token),然后运行如下命令列出机密:
# 设置环境变量 export BWS_ACCESS_TOKEN=xxxxxx bws secret list # 或者从命令行传入 bws secret list --access-token xxxxxx
Alfred Workflow 集成
为了进一步提高效率,写了一个小工具,帮助在 macOS 上快速查询并复制 Secrets。
以下是完整的 PHP 脚本示例:
$tokenName = !empty($argv[1]) ? trim($argv[1]) : ''; $accessToken = getenv('BWS_ACCESS_TOKEN'); $iconPngUrl = 'icon.png'; $json = `bws secret list -t '{$accessToken}'`; if (!$json) { echo json_encode(['items' => [['title' => 'Error: Failed to fetch secrets', 'valid' => false]]]); exit; } $list = json_decode($json, true); $items = []; foreach ($list as $item) { if (!empty($tokenName) && stripos($item['key'], $tokenName) === false) { continue; } $items[] = [ 'arg' => $item['value'], 'title' => $item['key'], 'subtitle' => $item['note'], 'icon' => ['path' => $iconPngUrl], 'valid' => true, ]; } if (empty($items)) { $items[] = [ 'title' => 'No secrets found', 'valid' => false ]; } echo json_encode(['items' => $items]); exit;
Bitwarden Secrets Manager 为 DevOps 团队提供了一种更加安全、便捷的方式来管理和集成机密信息。
无论是与 GitHub Actions 集成,还是使用 CLI 工具进行本地管理,Bitwarden 都提供了简洁而强大的功能,帮助提升工作效率并确保敏感数据的安全。
Secrets Manager: https://bitwarden.com/products/secrets-manager/
[2]官方文档: https://bitwarden.com/help/github-actions-integration/
[3]Secrets Manager CLI: https://bitwarden.com/help/secrets-manager-cli
[4]GitHub Releases: https://github.com/bitwarden/sdk-sm/releases/tag/bws-v1.0.0
鲁飞
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
白皮书上线