🔐 Auth: базова реалізація JWT для Memory Service

- JWT middleware для FastAPI
- Генерація/перевірка JWT токенів
- Скрипти для генерації Qdrant API keys
- Скрипти для генерації NATS operator JWT
- План реалізації Auth

TODO: Додати JWT до endpoints, NATS nkeys config, Qdrant API key config
This commit is contained in:
Apple
2026-01-10 10:43:14 -08:00
parent 0ebbb172f0
commit 6c426bc274
6 changed files with 313 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
# 🔐 План реалізації Auth
**Дата:** 2026-01-10
**Версія:** 1.0.0
---
## 📋 Компоненти для Auth
### 1. NATS (nkeys)
**Статус:** TODO
**Пріоритет:** Високий
**Що робити:**
- Генерація NATS operator JWT
- Створення system account
- Створення user accounts для сервісів
- Оновлення NATS конфігурації з auth
**Файли:**
- `infrastructure/auth/nats/generate-operator.sh` — генерація operator
- `infrastructure/auth/nats/create-accounts.sh` — створення accounts
- `infrastructure/kubernetes/nats/auth-secrets.yaml` — Secrets для JWT
---
### 2. Memory Service (JWT)
**Статус:** TODO
**Пріоритет:** Високий
**Що робити:**
- Додати JWT middleware до FastAPI
- Генерація JWT токенів для сервісів
- Перевірка JWT в Memory Service endpoints
- Створення service-to-service токенів
**Файли:**
- `services/memory-service/app/auth.py` — JWT middleware
- `services/memory-service/app/jwt_utils.py` — генерація/перевірка JWT
- `infrastructure/kubernetes/apps/memory-service/auth-secrets.yaml` — Secrets
---
### 3. Qdrant (API key)
**Статус:** TODO
**Пріоритет:** Середній
**Що робити:**
- Увімкнути API key auth в Qdrant
- Генерація API ключів для кожного сервісу
- Оновлення Memory Service для використання API key
- Оновлення worker-daemon для використання API key
**Файли:**
- `infrastructure/kubernetes/apps/qdrant/config.yaml` — Qdrant config з auth
- `infrastructure/auth/qdrant/generate-keys.sh` — генерація ключів
- `infrastructure/kubernetes/apps/qdrant/auth-secrets.yaml` — Secrets
---
## 🔄 Порядок реалізації
1. **Memory Service JWT** (найпростіше, найважливіше)
2. **NATS nkeys** (середня складність, важливо для безпеки)
3. **Qdrant API key** (найпростіше, але менш критично)
---
*Документ створено: 2026-01-10 19:30 CET*

View File

@@ -0,0 +1,38 @@
#!/bin/bash
# Генерація NATS operator JWT та accounts
set -e
echo "🔑 Генерація NATS operator JWT..."
# Перевірка наявності nsc (NATS CLI для управління accounts)
if ! command -v nsc &> /dev/null; then
echo "⚠️ nsc не встановлено. Встановіть: https://github.com/nats-io/natscli"
echo " Або використайте Docker: docker run -it --rm natsio/nats-box"
exit 1
fi
# Створення operator
OPERATOR_NAME="DAARION"
echo "Створення operator: $OPERATOR_NAME"
nsc add operator "$OPERATOR_NAME"
# Створення system account
SYSTEM_ACCOUNT="SYSTEM"
echo "Створення system account: $SYSTEM_ACCOUNT"
nsc add account "$SYSTEM_ACCOUNT"
# Створення user accounts для сервісів
echo "Створення user accounts..."
nsc add user --account "$SYSTEM_ACCOUNT" memory-service
nsc add user --account "$SYSTEM_ACCOUNT" worker-daemon
nsc add user --account "$SYSTEM_ACCOUNT" matrix-gateway
echo ""
echo "✅ Operator та accounts створено!"
echo ""
echo "JWT файли знаходяться в: ~/.nsc/"
echo " Operator JWT: ~/.nsc/nats/$OPERATOR_NAME/$OPERATOR_NAME.jwt"
echo " System Account JWT: ~/.nsc/nats/$OPERATOR_NAME/accounts/$SYSTEM_ACCOUNT/$SYSTEM_ACCOUNT.jwt"
echo ""
echo "⚠️ Збережіть ці JWT в Vault або K8s Secrets!"

View File

@@ -0,0 +1,22 @@
#!/bin/bash
# Генерація API ключів для Qdrant
set -e
echo "🔑 Генерація API ключів для Qdrant..."
# Генерація випадкових ключів
MEMORY_SERVICE_KEY=$(openssl rand -hex 32)
WORKER_DAEMON_KEY=$(openssl rand -hex 32)
MATRIX_GATEWAY_KEY=$(openssl rand -hex 32)
echo ""
echo "✅ Згенеровано API ключі:"
echo " Memory Service: $MEMORY_SERVICE_KEY"
echo " Worker Daemon: $WORKER_DAEMON_KEY"
echo " Matrix Gateway: $MATRIX_GATEWAY_KEY"
echo ""
echo "⚠️ Збережіть ці ключі в Vault або K8s Secrets!"
echo ""
echo "Для Qdrant config додайте:"
echo " QDRANT__SERVICE__API_KEY: $MEMORY_SERVICE_KEY"