You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在单个GitLab CI/CD作业中从两个HashiCorp Vault获取密钥?

在单个CI/CD作业中从两个HashiCorp Vault获取密钥的实现方法

可以在同一个CI/CD作业中从两个不同的HashiCorp Vault实例获取密钥,GitLab CI支持通过配置多组认证令牌和独立的密钥参数来实现。以下是具体实现步骤和示例代码:

核心实现思路

通过定义多个ID Token分别完成两个Vault的OIDC认证,再为每个来自不同Vault的密钥单独指定对应的服务器地址、认证令牌和密钥路径,确保密钥从目标Vault实例获取。

修改后的示例代码

read_secrets_from_two_vaults:
  stage: get_secret
  image: vault:1.13.3
  variables:
    # 第一个Vault的配置变量
    VAULT_SERVER_URL_1: <vault-server-url-1>
    VAULT_AUTH_ROLE_1: <role-1>
    # 第二个Vault的配置变量
    VAULT_SERVER_URL_2: <vault-server-url-2>
    VAULT_AUTH_ROLE_2: <role-2>
  id_tokens:
    # 对应第一个Vault的ID Token,aud需匹配Vault OIDC客户端配置的受众
    VAULT_ID_TOKEN_1:
      aud: <gitlab-url-or-vault-audience-1>
    # 对应第二个Vault的ID Token,aud需匹配Vault OIDC客户端配置的受众
    VAULT_ID_TOKEN_2:
      aud: <gitlab-url-or-vault-audience-2>
  secrets:
    # 从第一个Vault获取的密钥
    POSTGRES_USERNAME:
      vault: database/postgres/postgres_username@kv2
      server: $VAULT_SERVER_URL_1
      token: $VAULT_ID_TOKEN_1
      file: false
    # 从第一个Vault获取的密钥
    POSTGRES_PASSWORD:
      vault: database/postgres/postgres_password@kv2
      server: $VAULT_SERVER_URL_1
      token: $VAULT_ID_TOKEN_1
      file: false
    # 从第二个Vault获取的密钥(示例:Redis密码)
    REDIS_PASSWORD:
      vault: cache/redis/redis_password@kv2
      server: $VAULT_SERVER_URL_2
      token: $VAULT_ID_TOKEN_2
      file: false
  script:
    - echo "已从两个Vault获取密钥"
    - echo $POSTGRES_USERNAME | base64
    - echo $POSTGRES_PASSWORD | base64
    - echo $REDIS_PASSWORD | base64

关键配置说明

  • 多ID Token配置:每个Vault需要独立的id_tokens条目,aud字段必须与对应Vault中OIDC客户端配置的受众(Audience)一致,否则认证会失败。
  • Vault变量区分:用带后缀的变量(如VAULT_SERVER_URL_1、VAULT_SERVER_URL_2)区分两个Vault的服务器地址和角色,避免配置混淆。
  • 密钥独立指定参数:每个secrets条目通过server指定目标Vault地址,token绑定对应的认证令牌,确保密钥从正确的实例获取。

注意事项

  • 确保两个Vault都已完成GitLab OIDC认证配置,允许对应的角色(VAULT_AUTH_ROLE_1、VAULT_AUTH_ROLE_2)访问指定的密钥路径。
  • 如果不使用OIDC ID Token认证,也可以直接设置两个独立的VAULT_TOKEN_1、VAULT_TOKEN_2变量,在secrets中通过token字段引用,但ID Token认证安全性更高。
  • 作业使用的镜像需支持Vault相关操作,官方vault镜像已满足需求。

内容的提问来源于stack exchange,提问作者Karan Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 01:17:32