Перейти к содержанию

Включение JWT авторизации в StarVault

Сначала необходимо включить метод авторизации JWT в StarVault. На сервере, где он развернут, выполните

# Включение JWT auth-метода (по умолчанию монтируется в /auth/jwt)
starvault auth enable jwt

Конфигурация метода авторизации

Теперь сконфигурируем метод авторизации, чтобы StarVault доверял нашему домену GitFlic. Для этого выполним следующие команды

starvault write auth/jwt/config \
  jwks_url="https://<ваш-домен-gitflic>/vault/oauth/discovery/keys" \
  bound_issuer="https://<ваш-домен-gitflic>" \

Настройка политик доступа

Подготовим политики доступа для наших секретов. Именно они определяют, к каким секретам мы сможем получить доступ из GitFlic
Для начала подготовим файл с конфигурацией политики

# myproj.hcl
path "kv/my/super/duper/secret/*" {
  capabilities = ["read", "list"]
}
А теперь можно можно применить ее в StarVault
starvault policy write myproj myproj.hcl
Можно пропустить создания отдельного файла и использовать heredoc вместо этого

Настройка роли, связанной с политикой

Роль связывает JWT с политикой доступа к секретам

starvault write auth/jwt/role/myproject - <<EOF
{
  "role_type": "jwt",
  "user_claim": "user_login",
  "token_policies": "myproj",
  "bound_audiences": ["https://<ваш-домен-StarVault>"],
  "bound_claims": {
    "project_name": ["GitFlic", "devops"]
  },
  "bound_claims_type": "glob"
}
EOF
Здесь мы определяем, в каких проектах сможем получить доступ к секретам, определенным в политике.

Подготовка проекта в GitFlic

В GitFlic нужно создать переменные CI/CD для подключения к StarVault. Для этого нужно в веб-интерфейсе открыть следующие вкладки

Проект -> Настройки -> Настройки CI/CD
И создать следующие переменные:
VAULT_AUTH_ROLE - переменная с ролью для авторизации
VAULT_SERVER_URL - адрес StarVault сервера
Либо их можно указать в файле CI/CD конвейера

Использование секретов из StarVault в GitFlic CI

Обращение к StarVault для получения секретов из конвейера GitFlic выглядит следующим образом:

job_with_secrets:
  id_tokens:
    VAULT_ID_TOKEN:
      aud: <ваш-домен-starvault>
  secrets:
    USERNAME:
      vault: kv/my/super/duper/secret/super_duper_login@kv
    PASSWORD:
      vault: kv/my/super/duper/secret/super_duper_pass@kv
  script:
    - echo "$USERNAME $PASSWORD" # Так делать не надо, просто для примера!

⚠️ Примечание по безопасности: Никогда не логируйте и не выводите через echo конфиденциальные значения, такие как пароли, в скриптах конвейера. Используйте их напрямую в командах, требующих аутентификации.