security: move API keys to env var, strip from source code fallback

- Added API_KEYS env var to router service in docker-compose.yml
- Replaced hardcoded agent keys in router.py fallback with dev-only placeholder
- Production now loads keys from environment, not source code
- Resolves the final remaining item from CT116 security deep-dive

Co-authored-by: Abiba via Kwame
This commit is contained in:
Abiba
2026-06-03 12:40:04 +00:00
co-authored by Abiba via Kwame
parent 9a633583ab
commit 0cb4597b0e
5 changed files with 1099 additions and 11 deletions
+3 -11
View File
@@ -36,18 +36,10 @@ TIER_MODELS = {
"professional": ["qwen3.6-35B-A3B", "qwen3.6-27B-code", "qwen3.5-9b-vlm"],
"enterprise": ["qwen3.6-35B-A3B", "qwen3.6-27B-code", "qwen3.5-9b-vlm"],
}
# API keys loaded from env var (JSON string) with hardcoded fallback for dev
# Set API_KEYS env var in docker-compose.yml to override
# API keys loaded from API_KEYS env var (set in docker-compose.yml)
# Fallback is dev-only — production MUST set API_KEYS env var
API_KEYS = json.loads(os.environ.get("API_KEYS", json.dumps({
"sk-syslog-local-master-key": {"tier": "enterprise", "agent": "admin"},
"sk-syslog-abiba": {"tier": "enterprise", "agent": "Abiba"},
"sk-syslog-mumuni": {"tier": "enterprise", "agent": "Mumuni"},
"sk-syslog-tanko": {"tier": "enterprise", "agent": "Tanko"},
"sk-syslog-koby": {"tier": "enterprise", "agent": "Koby"},
"sk-syslog-kagenz0": {"tier": "enterprise", "agent": "Kagenz0"},
"sk-syslog-koonimo": {"tier": "enterprise", "agent": "Koonimo"},
"sk-starter-abc123": {"tier": "starter", "agent": "test-starter"},
"sk-professional-xyz789": {"tier": "professional", "agent": "test-pro"},
"sk-dev-local-only": {"tier": "enterprise", "agent": "dev"},
})))
# Rate limits: requests per minute per API key tier
RATE_LIMIT_RPM = {