תצורה
RedCloud מוגדרת באמצעות משתני סביבה (קובץ .env ב-Compose, או Secret ב-Kubernetes). ב-production הפלטפורמה אוכפת מדיניות fail-fast: אם חסר סוד נדרש או מזוהה הגדרה לא-בטוחה, ה-backend מסרב לעלות. העמוד הזה מפרט את המשתנים ואת התנאים המדויקים שחוסמים עלייה.
ליבה / שרת
Section titled “ליבה / שרת”| משתנה | מטרה | נדרש | ברירת מחדל |
|---|---|---|---|
ENVIRONMENT | production או development | לא | production |
PORT | פורט ה-backend (Cloud Run מזריק משלו) | לא | 9900 |
LICENSE_PORT | פורט שרת הרישוי | לא | 7700 |
DATABASE_URL | DSN של PostgreSQL | כן (ייצור) | DSN מקומי לפיתוח |
DB_PASSWORD | סיסמת בסיס הנתונים ב-Compose | כן (Compose) | — |
TIMEZONE | אזור זמן של ה-Scheduler | לא | Asia/Jerusalem |
אבטחה (נדרש בייצור)
Section titled “אבטחה (נדרש בייצור)”| משתנה | מטרה | חוסם עלייה אם… |
|---|---|---|
HMAC_KEY | חותם JWT / טוקנים | לא מוגדר בייצור |
API_KEY | אימות API גלובלי | לא מוגדר בייצור |
ENCRYPTION_KEY | מצפין תצורה / נתונים במנוחה | לא מוגדר בייצור (ללא fallback שקט) |
STORAGE_MODE | strict / migration / compat | מוגדר ל-compat/לא ידוע בייצור |
FRONTEND_ORIGINS | רשימת היתר ל-CORS (CSV) | (אזהרה בלבד; נופל ל-origins של פיתוח אם לא מוגדר) |
RATE_LIMIT | מגבלת קצב גלובלית ל-API | — (ברירת מחדל 60/minute) |
ייצור סודות:
# HMAC_KEY / API_KEY / ENCRYPTION_KEYpython -c "import secrets; print(secrets.token_hex(32))"Break-glass (כפוף-ממשל, כבוי כברירת מחדל)
Section titled “Break-glass (כפוף-ממשל, כבוי כברירת מחדל)”| משתנה | מטרה | ברירת מחדל |
|---|---|---|
BREAK_GLASS_ENABLED | מאפשר גישת break-glass | false |
MASTER_KEY / MASTER_KEY_FILE | מפתח ה-break-glass (python -m api.master_key) | — |
BREAK_GLASS_TTL | TTL של ה-session בשניות | 1800 |
אם BREAK_GLASS_ENABLED=true ללא MASTER_KEY, העלייה נחסמת. Break-glass מעניק מערך הרשאות תחום, מוגבל-קצב ומבוקר במלואו, ולעולם אינו עוקף בידוד Tenant.
| משתנה | מטרה |
|---|---|
LICENSE_KEY | מפתח לקוח (RC-...) |
LICENSE_SERVER_URL | חייב להיות HTTPS בייצור |
REDCLOUD_LICENSE_SECRET | סוד משותף; חייב להתאים לשרת הרישוי (חוסר מתועד כאזהרה קריטית) |
אימות ו-SSO (אופציונלי)
Section titled “אימות ו-SSO (אופציונלי)”Google OAuth (GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET), SAML, 2FA (TOTP_ISSUER), ו-Google Cloud IAP:
| משתנה | ברירת מחדל |
|---|---|
IAP_AUTH_ENABLED | false |
IAP_EXPECTED_AUDIENCE | — (/projects/<num>/global/backendServices/<id>) |
IAP_ALLOWED_DOMAINS | — (CSV, אופציונלי) |
IAP_AUTO_PROVISION_ENABLED | false |
ספקי AI (אופציונלי)
Section titled “ספקי AI (אופציונלי)”AI_PROVIDER (אחד מ-anthropic, openai, gemini, vertex, xai, mistral, deepseek, ollama), AI_API_KEY, AI_MODEL, ריבוי-ספקים AI_PROVIDERS (JSON), AI_FALLBACK_ORDER, ו-AI_BUDGET_MAX_USD. Vertex AI משתמש ב-VERTEX_ENABLED, VERTEX_PROJECT_ID, VERTEX_REGION ו-Workload Identity.
מדיניות האתחול המאובטח (fail-fast)
Section titled “מדיניות האתחול המאובטח (fail-fast)”ב-production, כל אחד מהבאים חוסם עלייה (ה-backend מעלה שגיאה ויוצא):
HMAC_KEYלא מוגדר.API_KEYלא מוגדר.ENCRYPTION_KEYלא מוגדר (ללא fallback שקט).REDCLOUD_DEV_MODE=true.STORAGE_MODEהואcompatאו לא ידוע (חייב להיותstrictאוmigration).BREAK_GLASS_ENABLED=trueללאMASTER_KEY.- דגל עקיפת-Tenant כלשהו הוא
true(BYPASS_TENANT_CHECKS,TENANT_ISOLATION_DISABLED,TENANT_MIGRATION_MODE,DISABLE_TENANT_CHECK,DISABLE_TENANT_ISOLATION). - בעיית אימות-סוד קריטית (למשל מפתח חלש/קצר או
DB_PASSWORDברירת-מחדל). - בסיס הנתונים אינו נגיש (בדיקת
SELECT 1רצה לפני השער).
- מצב פיתוח דורש גם
ENVIRONMENT=developmentוגםREDCLOUD_DEV_MODE=true; הוא לעולם לא יכול להיות מופעל בייצור. - טבלאות בסיס הנתונים נוצרות אידמפוטנטית באתחול; אין שלב מיגרציה נפרד לסכימת הליבה.