Как связать Vault и Gitlab?
Я поднял Vault, он работает у меня по адресу 10.10.10.10:8200. Далее я хочу подключаться к нему во время выполнения Gitlab CI. Попробовал по инструкции https://docs.gitlab.com/ci/secrets/hashicorp_vault/ , но ничего не выходит. Не совсем понятно несколько моментов:
- Включаю
vault auth enable jwtи создаю роль
vault write auth/jwt/role/runner - <<EOF
{
"role_type": "jwt",
"policies": ["gitlab-runner"],
"token_explicit_max_ttl": 60,
"user_claim": "user_email",
"bound_claims_type": "glob",
"bound_claims": {
"project_id": "66",
"ref_protected": "true"
}
}
EOF
- Добавляю метод аутентификации JWT:
vault write auth/jwt/config \
oidc_discovery_url="https://gitlab.my-gitlab.ru" \
bound_issuer="https://gitlab.my-gitlab.ru"
- Добавил переменные
VAULT_SERVER_URL=http://10.10.10.10:8200иVAULT_AUTH_ROLE=runnerв переменные своего проекта в Gitlab - Далее по инструкции Manual ID Token authentication из той же документации я настраиваю .gitlab-ci.yaml.
...
manual_authentication:
variables:
VAULT_ADDR: http://10.10.10.10:8200
image: vault:latest
id_tokens:
VAULT_ID_TOKEN:
aud: http://10.10.10.10
script:
- echo $VAULT_ID_TOKEN
- export VAULT_TOKEN="$(vault write -field=token auth/jwt/login role=myproject-example jwt=$VAULT_ID_TOKEN)"
- export PASSWORD="$(vault kv get -field=password secret/myproject)"
но получаю 400 ошибку токена:
Error writing data to auth/jwt/login: Error making API request.
URL: PUT http://10.10.10.10:8200/v1/auth/iwt/login
Code: 400. Errors:
* error validating token: invalid issuer (iss) claim
Сразу есть несколько вопросов: В документации, в gitlab-ci.yaml aud указан HTTP://vault.example.com, выше в примере этой же документации указан "bound_audiences": "HTTPS://vault.example.com" - почему отличается? или это разные сущности? В итоге я пробовал добавить в роль "bound_audiences": "http://10.10.10.10", но это так же не работает, как и без этого параметра. Вывод echo $VAULT_ID_TOKEN возвращает [MASKED] - токен не проверить, получается никак? Подскажите, пожалуйста, что делаю не так? и как решить проблему связи Vault и Gitlab?
Ответы (1 шт):
Ошибка была в том, что неверно указал метод аутентификации:
vault write auth/jwt/config
oidc_discovery_url="https://gitlab.my-gitlab.ru"
bound_issuer="gitlab.my-gitlab.ru"