Secrets¶
Uitgangspunt: alle secrets leven in .env-bestanden binnen de repo/stack
en worden bij de eerste start automatisch gegenereerd. Er staan geen secrets
los op de server (geen /root/.*-bestanden meer) en niets staat in git.
Twee soorten¶
-
Stack-eigen secrets — alleen relevant binnen één stack (DB-wachtwoorden, Django
SECRET_KEY, admin-wachtwoord, LaravelAPP_KEY, Operaton service-wachtwoord, …). Elke repo genereert die zelf in zijn eigen.envvia zijn eigenmake setup. -
Gedeelde integratie-secrets — moeten gelijk zijn in
zgwénportal, omdat ze de koppeling tussen beide vormen. Die beheertplatformcentraal inintegration.enven schrijft ze naar beide stacks:
| Sleutel | Waarvoor |
|---|---|
ZGW_JWT_CLIENT_ID / ZGW_JWT_SECRET |
JWT waarmee het portaal de ZGW-API's (Open Zaak e.a.) aanroept |
OBJECTS_API_TOKEN |
token waarmee het portaal de Objects-API aanroept |
OBJECTTYPES_API_TOKEN |
token waarmee het portaal de Objecttypes-API aanroept |
NOTIF_CALLBACK_SECRET |
secret waarmee Open Notificaties het portaal terugbelt |
Hoe het werkt¶
platform/scripts/setup.sh
├─ genereert (eenmalig) integration.env ← chmod 600, in .gitignore
└─ schrijft een "beheerd door platform"-blok in
../zgw/.env en
../portal/.env
Het beheerde blok wordt bij elke make setup opnieuw geschreven (zodat een
gewijzigd secret overal doorkomt); je eigen handmatige waarden eromheen blijven
staan.
Een gedeeld secret roteren¶
cd platform
# verwijder de regel uit integration.env, of het hele bestand voor alles:
# sed -i '/^NOTIF_CALLBACK_SECRET=/d' integration.env
make setup # genereert het ontbrekende secret opnieuw + verspreidt het
make up-all # herstart de stacks zodat ze het nieuwe secret oppikken
Standalone draaien (één repo)¶
Clone je alleen zgw of alleen portal zonder platform, dan genereert die
repo zijn eigen integratie-secrets in zijn eigen .env. Voor de gekoppelde
opstelling laat je platform ze uitlijnen — dat is het hele punt van de
overkoepelende repo.
Nog veiliger (later)¶
De .env-aanpak is de pragmatische default. Wil je strenger: de waarden kunnen
later naar Docker secrets of een SOPS/age-versleuteld bestand in de repo
verhuizen zonder dat de stacks zelf veranderen.