# 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/ --value '' --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.