diff --git a/red-queen-architecture/control-plane/cp2a2_2b/Dockerfile b/red-queen-architecture/control-plane/cp2a2_2b/Dockerfile index 5b7e149..e8f88fd 100644 --- a/red-queen-architecture/control-plane/cp2a2_2b/Dockerfile +++ b/red-queen-architecture/control-plane/cp2a2_2b/Dockerfile @@ -5,7 +5,7 @@ # Basis: nousresearch/hermes-agent:latest (Hermes oneshot `hermes -z`). # # HAERTUNG: -# - non-root hermes-User (UID 10010 / GID 10000, im Basis-Image definiert) +# - non-root hermes-User (UID 10000 / GID 10000, im Basis-Image definiert) # - read-only rootfs (docker-compose: read_only: true) # - cap_drop ALL, no-new-privileges (docker-compose) # - kein Docker-Socket, keine Host-Root-Mounts, keine Host-Namespaces @@ -34,12 +34,12 @@ COPY worker-tick.sh /opt/l1-worker/worker-tick.sh COPY worker-config.yaml /opt/l1-worker/worker-config.yaml # State-Verzeichnis (worker-owned, wird als Volume gemountet) -# Der hermes-User (UID 10010) ist der Worker. Das State-Volume wird im +# Der hermes-User (UID 10000) ist der Worker. Das State-Volume wird im # Compose als bind-mount von /opt/l1-worker-state gemountet (Host-root-angelegt, -# auf 10010:10000 gechownt) — nur der Worker kann schreiben. +# auf 10000:10000 gechownt) — nur der Worker kann schreiben. RUN mkdir -p /opt/l1-worker/state && chown -R hermes:hermes /opt/l1-worker -# Non-root: der Worker laeuft als hermes-User (UID 10010 / GID 10000). +# Non-root: der Worker laeuft als hermes-User (UID 10000 / GID 10000). USER hermes:hermes # Inert idle Entrypoint: KEIN autonomer Loop, KEIN Tick-Start. diff --git a/red-queen-architecture/control-plane/cp2a2_2b/SECURITY.md b/red-queen-architecture/control-plane/cp2a2_2b/SECURITY.md index ab0c141..eae56c8 100644 --- a/red-queen-architecture/control-plane/cp2a2_2b/SECURITY.md +++ b/red-queen-architecture/control-plane/cp2a2_2b/SECURITY.md @@ -50,7 +50,7 @@ Report: NUR PRESENT/ABSENT. NIEMALS Secret-Werte ausgeben. ## 4. Container-Hardening -- non-root UID/GID: hermes-User (UID 10010 / GID 10000) +- non-root UID/GID: hermes-User (UID 10000 / GID 10000) - read-only rootfs - cap_drop ALL - no-new-privileges diff --git a/red-queen-architecture/control-plane/cp2a2_2b/deploy.sh b/red-queen-architecture/control-plane/cp2a2_2b/deploy.sh index f8461c9..0b86191 100644 --- a/red-queen-architecture/control-plane/cp2a2_2b/deploy.sh +++ b/red-queen-architecture/control-plane/cp2a2_2b/deploy.sh @@ -15,8 +15,8 @@ cd "$(dirname "$0")" echo "=== CP2A2.2B L1 WORKER DEPLOY ===" -# 1. Worker-State-Volume vorbereiten (worker-owned, UID 10010) -# Das Volume wird als named volume gemountet; der hermes-User (UID 10010) +# 1. Worker-State-Volume vorbereiten (worker-owned, UID 10000) +# Das Volume wird als named volume gemountet; der hermes-User (UID 10000) # ist der Worker und besitzt das State-Verzeichnis. echo "[1/4] Worker-State-Volume vorbereiten..." docker volume create l1-worker-state >/dev/null 2>&1 || true diff --git a/red-queen-architecture/control-plane/cp2a2_2b/docker-compose.yml b/red-queen-architecture/control-plane/cp2a2_2b/docker-compose.yml index f0f75c4..d161c10 100644 --- a/red-queen-architecture/control-plane/cp2a2_2b/docker-compose.yml +++ b/red-queen-architecture/control-plane/cp2a2_2b/docker-compose.yml @@ -5,7 +5,7 @@ # `hermes-red-queen` bleibt UNVERAENDERT (wird hier NICHT referenziert). # # HAERTUNG: -# - non-root hermes-User (UID 10010 / GID 10000, im Basis-Image definiert) +# - non-root hermes-User (UID 10000 / GID 10000, im Basis-Image definiert) # - read-only rootfs # - cap_drop ALL, no-new-privileges # - kein Docker-Socket, keine Host-Root-Mounts, keine Host-Namespaces @@ -38,7 +38,7 @@ services: tmpfs: - /tmp volumes: - # Worker-eigenes persistentes State-Volume (worker-owned, UID 10010). + # Worker-eigenes persistentes State-Volume (worker-owned, UID 10000). # Nur der Worker kann schreiben. Bestehende interaktive RQ darf dieses # Volume NICHT schreiben (separate Security Domain). - l1-worker-state:/opt/l1-worker/state