Tablet 45: the courtyard gate checks the key, not the shape of the header
/courtyard/* and /chatzer/* admitted any `Authorization: Bearer <x>`. Every test sent `Bearer test-token`; none sent a wrong one. Every admitted request spends the day's manna. VavPipeline.BigdeiKodesh.Gate: keys are a file (Construction §4.6 — never env, never config, never git), one `tier key` per line, tiers courtyard < chatzer (the inner ring opens the outer). Constant-time compare against every line; no file / empty / unreadable → nobody passes, GATE_NO_KEYS in the log, the caller told only "missing or invalid". 403 FORBIDDEN for an outer key at an inner gate. Read on every request so a rotated key is live in ~1 min without a rollout. Deploy: Secret shorashim-api-keys projected at /etc/shorashim/secrets/api_keys (vav-pipeline only, 0440), API_KEYS_FILE in the configmap, template + issue/rotate recipe in secrets.yaml and KOHEN.md "Issuing a key". Spec: tamid §1.1 (gate, 403), vayakhel §4.6. Doorpost 91d09d8d… → 42b38626…. Tests: tablet45_gate_test (parse, tiers, wrong/near/empty/no key, no file) — Elixir 527/0. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
996a8efe68
commit
79eb34840f
17 files changed
+372
-34
No files matched your search
@@ -76,6 +76,13 @@ spec:
|
||||
# vav-pipeline, which spawns it as an Erlang Port.
|
||||
- name: shoresh-bin
|
||||
emptyDir: {}
|
||||
# The courtyard keys, as a file (Construction §4.6). Only
|
||||
# vav-pipeline mounts it. Absent → the pod waits at
|
||||
# ContainerCreating, loudly; there is no "open gate" fallback.
|
||||
- name: api-keys
|
||||
secret:
|
||||
secretName: shorashim-api-keys
|
||||
defaultMode: 0440
|
||||
|
||||
# --- POD SECURITY CONTEXT ---
|
||||
# Every image runs as the non-root user `shorashim` (uid/gid
|
||||
@@ -221,6 +228,9 @@ spec:
|
||||
# directory both live under it.
|
||||
- name: tmp-shorashim
|
||||
mountPath: /tmp
|
||||
- name: api-keys
|
||||
mountPath: /etc/shorashim/secrets
|
||||
readOnly: true
|
||||
- name: shoresh-bin
|
||||
mountPath: /opt/shoresh
|
||||
readOnly: true
|
||||
|
||||
Reference in new issue
Block a user