我可以使用JWT auth方法并获取令牌:
export VAULT_TOKEN=\
$(vault write -field=token auth/jwt/login role=$my_role_name jwt=$CI_JOB_JWT)
执行上述操作后,我还可以使用
vault kv get
获取变量。但是,我无法使用 gitlab 的内置方法,如此处所述:
https://docs.gitlab.com/ee/ci/secrets/index.html#use-vault-secrets-in-a-ci-job
test:
stage: validate
secrets:
TESTSECRET:
vault: gitlab-ci/TEST_SEC/value@$SECRET_MOUNT
script:
- echo $TESTSECRET
没有返回错误,但未获取秘密。
在 CI 变量中我有:
VAULT_SERVER_URL: "http://myvaultserver.myvaultdomain.net:8200"
VAULT_AUTH_ROLE: "my_role_name"
我不确定 gitlab-ci 是否需要更多配置才能使此内置方法正常工作,因为Vault CLI 方法(在 CI 作业中)可以正常工作。
您是否尝试直接在Vault关键字中使用秘密安装名称,而不是从变量中读取它
$SECRET_MOUNT
?
问题是此功能仅适用于高级用户和终极用户,正如您在顶部看到的那样
https://docs.gitlab.com/ee/ci/secrets/#use-vault-secrets-in-a-ci-job
虽然不知道为什么,但是他们在这个页面留下了Free,这也让我很困惑。
看看它是什么样子 https://docs.gitlab.com/ee/ci/secrets/
PS。现在在 17.+ 版本中不允许使用 CI_JOB_JWT,而是使用 id https://docs.gitlab.com/ee/ci/yaml/index.html#id_tokens