דלגו לתוכן

תצורה

‏RedCloud מוגדרת באמצעות משתני סביבה (קובץ .env ב-Compose, או Secret ב-Kubernetes). ב-production הפלטפורמה אוכפת מדיניות fail-fast: אם חסר סוד נדרש או מזוהה הגדרה לא-בטוחה, ה-backend מסרב לעלות. העמוד הזה מפרט את המשתנים ואת התנאים המדויקים שחוסמים עלייה.

משתנהמטרהנדרשברירת מחדל
ENVIRONMENTproduction או developmentלאproduction
PORTפורט ה-backend (Cloud Run מזריק משלו)לא9900
LICENSE_PORTפורט שרת הרישוילא7700
DATABASE_URLDSN של PostgreSQLכן (ייצור)DSN מקומי לפיתוח
DB_PASSWORDסיסמת בסיס הנתונים ב-Composeכן (Compose)
TIMEZONEאזור זמן של ה-SchedulerלאAsia/Jerusalem
משתנהמטרהחוסם עלייה אם…
HMAC_KEYחותם JWT / טוקניםלא מוגדר בייצור
API_KEYאימות API גלובלילא מוגדר בייצור
ENCRYPTION_KEYמצפין תצורה / נתונים במנוחהלא מוגדר בייצור (ללא fallback שקט)
STORAGE_MODEstrict / migration / compatמוגדר ל-compat/לא ידוע בייצור
FRONTEND_ORIGINSרשימת היתר ל-CORS (CSV)(אזהרה בלבד; נופל ל-origins של פיתוח אם לא מוגדר)
RATE_LIMITמגבלת קצב גלובלית ל-API— (ברירת מחדל 60/minute)

ייצור סודות:

Terminal window
# HMAC_KEY / API_KEY / ENCRYPTION_KEY
python -c "import secrets; print(secrets.token_hex(32))"

Break-glass (כפוף-ממשל, כבוי כברירת מחדל)

Section titled “Break-glass (כפוף-ממשל, כבוי כברירת מחדל)”
משתנהמטרהברירת מחדל
BREAK_GLASS_ENABLEDמאפשר גישת break-glassfalse
MASTER_KEY / MASTER_KEY_FILEמפתח ה-break-glass‏ (python -m api.master_key)
BREAK_GLASS_TTLTTL של ה-session בשניות1800

אם BREAK_GLASS_ENABLED=true ללא MASTER_KEY, העלייה נחסמת.‏ Break-glass מעניק מערך הרשאות תחום, מוגבל-קצב ומבוקר במלואו, ולעולם אינו עוקף בידוד Tenant.

משתנהמטרה
LICENSE_KEYמפתח לקוח (RC-...)
LICENSE_SERVER_URLחייב להיות HTTPS בייצור
REDCLOUD_LICENSE_SECRETסוד משותף; חייב להתאים לשרת הרישוי (חוסר מתועד כאזהרה קריטית)

‏Google OAuth‏ (GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET),‏ SAML,‏ 2FA‏ (TOTP_ISSUER), ו-Google Cloud IAP:

משתנהברירת מחדל
IAP_AUTH_ENABLEDfalse
IAP_EXPECTED_AUDIENCE— (/projects/<num>/global/backendServices/<id>)
IAP_ALLOWED_DOMAINS— (CSV, אופציונלי)
IAP_AUTO_PROVISION_ENABLEDfalse

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 מעלה שגיאה ויוצא):

  1. HMAC_KEY לא מוגדר.
  2. API_KEY לא מוגדר.
  3. ENCRYPTION_KEY לא מוגדר (ללא fallback שקט).
  4. REDCLOUD_DEV_MODE=true.
  5. STORAGE_MODE הוא compat או לא ידוע (חייב להיות strict או migration).
  6. BREAK_GLASS_ENABLED=true ללא MASTER_KEY.
  7. דגל עקיפת-Tenant כלשהו הוא true (BYPASS_TENANT_CHECKS,‏ TENANT_ISOLATION_DISABLED,‏ TENANT_MIGRATION_MODE,‏ DISABLE_TENANT_CHECK,‏ DISABLE_TENANT_ISOLATION).
  8. בעיית אימות-סוד קריטית (למשל מפתח חלש/קצר או DB_PASSWORD ברירת-מחדל).
  9. בסיס הנתונים אינו נגיש (בדיקת SELECT 1 רצה לפני השער).
  • מצב פיתוח דורש גם ENVIRONMENT=development וגם REDCLOUD_DEV_MODE=true; הוא לעולם לא יכול להיות מופעל בייצור.
  • טבלאות בסיס הנתונים נוצרות אידמפוטנטית באתחול; אין שלב מיגרציה נפרד לסכימת הליבה.