Files
Cibello-app/docs/SECRETS.md
T
Sven (AAMOS AI) 6e2d794130 feat(storage,deploy): delad S3/mock-lagring, SSM .env-sync, Gemini readyz
- @app/storage med MockStorage + AwsStorage delas mellan API och worker

- Workerns readUrl() ger presignerad S3-URL i aws-läge (fixar mock-s3 404)

- sync-env-from-ssm.py hämtar /cibello/prod/* och skriver .env; first-deploy.sh kör det i prod

- /readyz returnerar 503 om app.aamos.healthCheck() misslyckas

- docs/SECRETS.md med rotations- och SSM-regler
2026-08-12 17:28:58 +07:00

2.5 KiB

Hemligheter och miljövariabler — Cibello

Enda sanningskälla: AWS Systems Manager Parameter Store (/cibello/prod/* i eu-north-1). Serverns /opt/cibello-platform/.env härleds ALLTID ur SSM via sync-env-from-ssm.py. Inga handkopior får drifta.

SSM-parameter → env-var

SSM-parameter Miljövariabel Kommentar
/cibello/prod/aamos-api-key AAMOS_API_KEY Endast när AAMOS_MODE=http
/cibello/prod/db-password byggd in i DATABASE_URL / TEST_DATABASE_URL RDS-användare cibello_admin
/cibello/prod/entitlement-signing-secret ENTITLEMENT_SIGNING_SECRET Signerar prenumerationsrättigheter
/cibello/prod/eoc-push-token EOC_PUSH_TOKEN Ops-summary push till EOC
/cibello/prod/gemini-api-key GEMINI_API_KEY AAMOS_MODE=gemini
/cibello/prod/google-service-account-json GOOGLE_SERVICE_ACCOUNT_JSON Google Play service account (JSON)
/cibello/prod/jwt-access-secret JWT_ACCESS_SECRET Access-token-signering
/cibello/prod/jwt-refresh-secret JWT_REFRESH_SECRET Refresh-token-signering
/cibello/prod/smtp-pass SMTP_PASS SMTP-lösen för hello@cibello.app

Föråldrade / dubbla parametrar (rensas vid tillfälle): /cibello/prod/entitlement-signing, /cibello/prod/jwt-access, /cibello/prod/jwt-refresh.

Icke-hemliga värden

Följande ligger fortfarande hårdkodade i infrastructure/deployment/sync-env-from-ssm.py och kan flyttas till SSM (String-typ) om de behöver ändras ofta:

  • API_BASE_URL, VITE_API_BASE_URL, CORS_ORIGINS
  • S3_BUCKET, S3_REGION, S3_MODE
  • GEMINI_MODEL, GEMINI_TIMEOUT_MS, GEMINI_DAILY_BUDGET_USD
  • DATABASE_CA_CERT, DB-host/name/user (kan överstyras via env)

Rotation

  1. Skriv nytt värde till SSM:
    aws ssm put-parameter --name /cibello/prod/<namn> --value '<värde>' --type SecureString --overwrite --region eu-north-1
  2. Kör på prod-servern:
    python3 /opt/cibello-platform/infrastructure/deployment/sync-env-from-ssm.py
  3. Starta om API + worker.
  4. Verifiera /readyz och kör röktest.

Regler

  • Aldrig committa .env, secrets eller nycklar.
  • Aldrig skriva secrets i chatt, loggar eller shell-historik (set +x).
  • Produktionsserverns instansroll (cibello-app) har endast ssm:GetParameter; skrivrättigheter kräver gateway-operator med platform-admin.
  • RDS-lösenordet roteras med både ALTER ROLE ... WITH PASSWORD och SSM-uppdatering; sync-env-from-ssm.py bygger om DATABASE_URL automatiskt.