diff --git a/astrololo/README-astroklient-demo.md b/astrololo/README-astroklient-demo.md index 1ffbfed..b40e095 100644 --- a/astrololo/README-astroklient-demo.md +++ b/astrololo/README-astroklient-demo.md @@ -86,9 +86,20 @@ python scripts/make_user.py klientB ```bash kubectl -n astrololo create secret generic astrololo-demo \ - --from-literal=DEMO_USERS='klientA:scrypt$…,klientB:scrypt$…' + --from-literal=DEMO_USERS='klientA:scrypt$…,klientB:scrypt$…' \ + --from-literal=SESSION_SECRET="$(openssl rand -hex 32)" ``` +`SESSION_SECRET` podpisuje ciasteczka sesji (LOG-34). **Pod bez niego celowo nie +wstanie.** Jest WŁASNY, nie ten z pełnej aplikacji: demo i produkcja nie mają +powodu uznawać nawzajem swoich sesji. + +> **Zdalne unieważnienie w demo działa inaczej niż w pełnej wersji.** Demo nie ma +> własnego wolumenu, więc nie ma gdzie trzymać licznika sesji. Zamiast tego: +> usunięcie konta z `DEMO_USERS` albo zmiana jego hasła **natychmiast ubija jego +> otwarte sesje** — bo odcisk poświadczenia wpisany w ciasteczko przestaje pasować. +> Rotacja `SESSION_SECRET` wylogowuje wszystkich naraz. + ### Dodanie konta później ```bash diff --git a/astrololo/astroklient-demo.yaml b/astrololo/astroklient-demo.yaml index f73d420..419e1d9 100644 --- a/astrololo/astroklient-demo.yaml +++ b/astrololo/astroklient-demo.yaml @@ -53,6 +53,13 @@ spec: secretKeyRef: { name: astrololo-link, key: LINK_KEY_PRESENTATION_LOGIC } - name: LINK_ENCRYPTION_REQUIRED value: "true" + # Klucz podpisu ciasteczek sesji (LOG-34). WYMAGANY — pod bez niego + # celowo nie wstaje. WŁASNY, nie ten z pełnej aplikacji: demo i produkcja + # nie mają powodu uznawać nawzajem swoich sesji, a wspólny klucz + # znaczyłby, że sesja z demo bywa ważna tam, gdzie nie powinna. + - name: SESSION_SECRET + valueFrom: + secretKeyRef: { name: astrololo-demo, key: SESSION_SECRET } # Za Ingressem bezpośrednim rozmówcą jest pod Traefika. Bez tego limit # liczyłby WSZYSTKICH do jednego wiadra i pierwsza osoba, która go # wyklika, odcięłaby pozostałe.