GitLab CI/CD

Bitwarden 提供了一种使用 Bitwarden Secrets Manager CLI 将机密注入 GitLab CI/CD 流水线的方法。这使您可以在 CI/CD 工作流程中安全地存储和使用机密。开始:

保存访问令牌

在这个步骤中,我们将把访问令牌保存为 GitLab CI/CD 变量。该令牌被用于使用 Bitwarden Secrets Manager API 进行身份验证以及检索机密

  1. 在 GitLab 中,导航到您的项目的 设置CI/CD 页面。

  2. 变量部分中选择展开

  3. 选择添加变量

  4. 勾选隐藏变量标记。

  5. 命名为 BWS_ACCESS_TOKEN。这是 Secrets Manager CLI 用于进行身份验证的变量。或者,如果您需要将命名为其他名称,请稍后在 bws secret get 行中指定 --access-token NAME_OF_VAR

  6. 在另一个选项卡中打开 Secrets Manager Web 应用程序,然后创建一个访问令牌

  7. 返回 GitLab,将新创建的访问令牌粘贴到字段中。

  8. 选择添加变量以保存。

添加到您的工作流文件

接下来,我们编写一个简单的 GitLab CI/CD 工作流文件。在您的代码库的根目录中创建一个名为 .gitlab-ci.yml 的文件,并包含以下内容:

stages:
- default_runner

image: ubuntu
build:
  stage: default_runner
  script: 
  - |
    # install bws
    apt-get update && apt-get install -y curl git jq unzip
    export BWS_VER="$(
      curl -s https://api.github.com/repos/bitwarden/sdk/releases/latest | \
      jq -r '.tag_name' | sed 's/bws-v//'
    )"
    curl -LO \
      "https://github.com/bitwarden/sdk/releases/download/bws-v$BWS_VER/bws-x86_64-unknown-linux-gnu-$BWS_VER.zip"
    unzip -o bws-x86_64-unknown-linux-gnu-$BWS_VER.zip -d /usr/local/bin

    # secrets to retrieve
    secret_ids=(
      "534cc788-a143-4743-94f5-afdb00a40a41"
      "9a0b500c-cb3a-42b2-aaa2-afdb00a41daa"
    )

    # export secrets as environment variables
    for secret_id in "${secret_ids[@]}"; do
      secret="$(bws secret get "$secret_id")"
      secret_key="$(echo "$secret" | jq -r '.key')"
      secret_value="$(echo "$secret" | jq -r '.value')"
      export "$secret_key"="$secret_value"
    done

  # run the command that requires secrets
  - npm run start

说明:

  • BWS_VER 是要安装的 Bitwarden Secrets Manager CLI 的版本。这里,我们自动获取最新的版本。您也可以通过将其更改为指定的版本来固定正在安装的版本,例如 BWS_VER="0.3.1"

  • 534cc788-a143-4743-94f5-afdb00a40a419a0b500c-cb3a-42b2-aaa2-afdb00a41daa 是存储在 Secrets Manager 中的机密的引用标识符。您的访问令牌所属的服务账户必须能够访问这些特定的机密。

  • npm run start 是一个命令,它期望通过 bws 获取的机密值。请将其替换为运行您的项目所需的相关命令。

机密被存储为环境变量。避免运行那些会将这些机密输出到日志中的命令非常重要。

运行 CI/CD 流水线

在左侧,选择构建流水线,然后在页面右上角选择运行流水线。在页面上选择运行流水线以运行刚创建的流水线。

最后更新于