50 lines
3.1 KiB
Markdown
50 lines
3.1 KiB
Markdown
# 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.
|