From 7e0a51878e673d30191c1e9204a4f779eeb9f1e8 Mon Sep 17 00:00:00 2001 From: migatu Date: Fri, 21 Aug 2026 00:21:52 +0200 Subject: [PATCH] =?UTF-8?q?feat(astroklient-demo):=20w=C5=82asny=20klucz?= =?UTF-8?q?=20podpisu=20sesji=20(LOG-34)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SESSION_SECRET w sekrecie astrololo-demo — WŁASNY, nie ten z pełnej aplikacji: demo i produkcja nie mają powodu uznawać nawzajem swoich sesji. W runbooku zapisana różnica wobec pełnej wersji: demo nie ma własnego wolumenu, więc nie ma licznika sesji. Zdalne unieważnienie robi się przez DEMO_USERS — usunięcie konta albo zmiana hasła natychmiast ubija jego otwarte sesje. Co-Authored-By: Claude Opus 5 --- astrololo/README-astroklient-demo.md | 13 ++++++++++++- astrololo/astroklient-demo.yaml | 7 +++++++ 2 files changed, 19 insertions(+), 1 deletion(-) 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.