CP2A2.2B: Fix worker UID/GID to 10000/10000 (hermes user in base image) - non-root hardening correction
This commit is contained in:
parent
7a4220d86d
commit
a0c388ab18
4 changed files with 9 additions and 9 deletions
|
|
@ -5,7 +5,7 @@
|
||||||
# Basis: nousresearch/hermes-agent:latest (Hermes oneshot `hermes -z`).
|
# Basis: nousresearch/hermes-agent:latest (Hermes oneshot `hermes -z`).
|
||||||
#
|
#
|
||||||
# HAERTUNG:
|
# 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)
|
# - read-only rootfs (docker-compose: read_only: true)
|
||||||
# - cap_drop ALL, no-new-privileges (docker-compose)
|
# - cap_drop ALL, no-new-privileges (docker-compose)
|
||||||
# - kein Docker-Socket, keine Host-Root-Mounts, keine Host-Namespaces
|
# - 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
|
COPY worker-config.yaml /opt/l1-worker/worker-config.yaml
|
||||||
|
|
||||||
# State-Verzeichnis (worker-owned, wird als Volume gemountet)
|
# 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,
|
# 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
|
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
|
USER hermes:hermes
|
||||||
|
|
||||||
# Inert idle Entrypoint: KEIN autonomer Loop, KEIN Tick-Start.
|
# Inert idle Entrypoint: KEIN autonomer Loop, KEIN Tick-Start.
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ Report: NUR PRESENT/ABSENT. NIEMALS Secret-Werte ausgeben.
|
||||||
|
|
||||||
## 4. Container-Hardening
|
## 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
|
- read-only rootfs
|
||||||
- cap_drop ALL
|
- cap_drop ALL
|
||||||
- no-new-privileges
|
- no-new-privileges
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,8 @@ cd "$(dirname "$0")"
|
||||||
|
|
||||||
echo "=== CP2A2.2B L1 WORKER DEPLOY ==="
|
echo "=== CP2A2.2B L1 WORKER DEPLOY ==="
|
||||||
|
|
||||||
# 1. Worker-State-Volume vorbereiten (worker-owned, UID 10010)
|
# 1. Worker-State-Volume vorbereiten (worker-owned, UID 10000)
|
||||||
# Das Volume wird als named volume gemountet; der hermes-User (UID 10010)
|
# Das Volume wird als named volume gemountet; der hermes-User (UID 10000)
|
||||||
# ist der Worker und besitzt das State-Verzeichnis.
|
# ist der Worker und besitzt das State-Verzeichnis.
|
||||||
echo "[1/4] Worker-State-Volume vorbereiten..."
|
echo "[1/4] Worker-State-Volume vorbereiten..."
|
||||||
docker volume create l1-worker-state >/dev/null 2>&1 || true
|
docker volume create l1-worker-state >/dev/null 2>&1 || true
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
# `hermes-red-queen` bleibt UNVERAENDERT (wird hier NICHT referenziert).
|
# `hermes-red-queen` bleibt UNVERAENDERT (wird hier NICHT referenziert).
|
||||||
#
|
#
|
||||||
# HAERTUNG:
|
# 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
|
# - read-only rootfs
|
||||||
# - cap_drop ALL, no-new-privileges
|
# - cap_drop ALL, no-new-privileges
|
||||||
# - kein Docker-Socket, keine Host-Root-Mounts, keine Host-Namespaces
|
# - kein Docker-Socket, keine Host-Root-Mounts, keine Host-Namespaces
|
||||||
|
|
@ -38,7 +38,7 @@ services:
|
||||||
tmpfs:
|
tmpfs:
|
||||||
- /tmp
|
- /tmp
|
||||||
volumes:
|
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
|
# Nur der Worker kann schreiben. Bestehende interaktive RQ darf dieses
|
||||||
# Volume NICHT schreiben (separate Security Domain).
|
# Volume NICHT schreiben (separate Security Domain).
|
||||||
- l1-worker-state:/opt/l1-worker/state
|
- l1-worker-state:/opt/l1-worker/state
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue