🔐 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:
72
infrastructure/auth/AUTH-IMPLEMENTATION-PLAN.md
Normal file
72
infrastructure/auth/AUTH-IMPLEMENTATION-PLAN.md
Normal 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*
|
||||
38
infrastructure/auth/nats/generate-operator.sh
Executable file
38
infrastructure/auth/nats/generate-operator.sh
Executable 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!"
|
||||
22
infrastructure/auth/qdrant/generate-keys.sh
Executable file
22
infrastructure/auth/qdrant/generate-keys.sh
Executable 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"
|
||||
Reference in New Issue
Block a user