CP2A2.2B: Fix worker UID/GID to 10000/10000 (hermes user in base image) - non-root hardening correction

This commit is contained in:
root 2026-08-29 07:17:11 +00:00
parent 7a4220d86d
commit a0c388ab18
4 changed files with 9 additions and 9 deletions

View file

@ -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.

View file

@ -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

View file

@ -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

View file

@ -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