Как связать Vault и Gitlab?

Я поднял Vault, он работает у меня по адресу 10.10.10.10:8200. Далее я хочу подключаться к нему во время выполнения Gitlab CI. Попробовал по инструкции https://docs.gitlab.com/ci/secrets/hashicorp_vault/ , но ничего не выходит. Не совсем понятно несколько моментов:

  1. Включаю 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
  1. Добавляю метод аутентификации JWT:
vault write auth/jwt/config \
    oidc_discovery_url="https://gitlab.my-gitlab.ru" \
    bound_issuer="https://gitlab.my-gitlab.ru"
  1. Добавил переменные VAULT_SERVER_URL=http://10.10.10.10:8200 и VAULT_AUTH_ROLE=runner в переменные своего проекта в Gitlab
  2. Далее по инструкции 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 шт):

Автор решения: Victor

Ошибка была в том, что неверно указал метод аутентификации:

vault write auth/jwt/config
oidc_discovery_url="https://gitlab.my-gitlab.ru"
bound_issuer="gitlab.my-gitlab.ru"

→ Ссылка