Auth Service¶
Сервис аутентификации и управления сессиями. Валидирует JWT-токены Keycloak, управляет ролями пользователей. Порт: 8000 (SERVICE_PORT в env: 8006 — используется для внутренней маршрутизации).
Назначение¶
Промежуточный слой аутентификации между Keycloak и продуктовыми сервисами. Валидирует токены, управляет ролями, предоставляет информацию о текущем пользователе. Устанавливается только при auth.enabled: true.
Зависимости¶
Входящие¶
| Сервис | Назначение |
|---|---|
orchestrator |
проверка прав на запуск сканирования |
ui-gateway |
валидация сессий пользователей |
Исходящие¶
| Сервис | Назначение |
|---|---|
postgres |
БД сессий и ролей (схема auth) |
redis (DB 2) |
кеш токенов и сессий |
keycloak |
token introspection, admin API |
Values¶
| Параметр | По умолчанию | Обязателен | Описание |
|---|---|---|---|
image.name |
— | да | registry.appsec.global/appsecgenai-release/auth-service |
image.tag |
— | да | Версия образа |
imagePullSecrets[0].name |
— | да | imagePullSecret |
secretEnv.DATABASE_URL |
— | да | PostgreSQL connection string |
env.ENVIRONMENT |
"production" |
нет | |
env.AUTH_MODE |
"keycloak_only" |
нет | |
env.KEYCLOAK_REALM |
"appsec-genai" |
нет | |
env.KEYCLOAK_CLIENT_ID |
"auth-service" |
нет | |
env.OTEL_SDK_DISABLED |
— | нет | "true" если нет otel-collector |
extraEnvVars[0] |
ссылка на keycloak-auth.AUTH_SERVICE_CLIENT_SECRET |
да | Client secret для Keycloak |
global.publicScheme |
"https" |
нет | Схема для CORS_ORIGINS |
global.domain |
— | да | Домен (используется в CORS_ORIGINS) |
global.url.keycloakUrl |
{svc: keycloak, port: 8080} |
нет | URL Keycloak |
global.url.redisUrl |
{svc: redis, port: 6379, scheme: redis, path: /2} |
нет |
KEYCLOAK_CLIENT_SECRET из Secret
auth-service читает KEYCLOAK_CLIENT_SECRET из Secret keycloak-auth (ключ AUTH_SERVICE_CLIENT_SECRET). Этот Secret создаётся keycloak-чартом. Без него сервис не может выполнять service-to-service операции с Keycloak.
Пример values.yaml¶
# values-auth-service.yaml
image:
name: registry.appsec.global/appsecgenai-release/auth-service
tag: "<VERSION>"
imagePullSecrets:
- name: harbor-cr
secretEnv:
DATABASE_URL: "postgresql+asyncpg://genai_admin:<password>@postgres:5432/genai_db"
env:
ENVIRONMENT: "production"
AUTH_MODE: "keycloak_only"
KEYCLOAK_REALM: "appsec-genai"
KEYCLOAK_CLIENT_ID: "auth-service"
OTEL_SDK_DISABLED: "true"
extraEnvVars:
- name: KEYCLOAK_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: keycloak-auth
key: AUTH_SERVICE_CLIENT_SECRET
global:
publicScheme: "https"
domain: "app.example.com"
url:
keycloakUrl: { svc: keycloak, port: 8080 }
redisUrl: { svc: redis, port: 6379, scheme: redis, path: /2 }