Включение 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 policy write myproj myproj.hcl
Настройка роли, связанной с политикой
Роль связывает 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 сервера
Использование секретов из 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конфиденциальные значения, такие как пароли, в скриптах конвейера. Используйте их напрямую в командах, требующих аутентификации.