- delete_worker.py: DELETE-scoped worker loop (ApprovalStateStore, fail-closed) - delete_tolaria_client.py: DELETE-only Tolaria client (fixed /delete endpoint) - delete_entrypoint.py: DELETE runtime entrypoint (health/status + worker) - delete_Dockerfile: DELETE executor image (no SAVE code, no credentials) - delete_executor_core.py: minimal SoT patch — VALID_NONCE replay guard + VALID_DELETE_REQUEST binding (approval binds delete_request_id, fail-closed APPROVAL_MISMATCH). Closes P10/T29 security gap in productive SoT. AUTH.4D P14. No deployment, no token injection, no key provisioning.
27 lines
1,013 B
Text
27 lines
1,013 B
Text
# AUTH.4D — c5-delete-executor (DELETE-only, fail-closed, verdrahtet)
|
|
FROM python:3.11-slim
|
|
# Kein echtes Credential im Image. Kein produktiver DELETE ohne injiziertes
|
|
# TOLARIA_DELETE_TOKEN (env_file, 0600). DELETE-only: kein SAVE-Code, kein
|
|
# forgejo_source_loader, kein git, keine write()-Capability.
|
|
# Kein Docker-Socket, kein SSH, keine Host-Root-Mounts.
|
|
RUN useradd --uid 10012 --create-home --shell /usr/sbin/nologin c5delete
|
|
WORKDIR /app
|
|
COPY --chown=10012:10012 \
|
|
approval_payload.py \
|
|
approval_signature.py \
|
|
approval_state.py \
|
|
approval_verifier.py \
|
|
delete_executor_core.py \
|
|
job_store.py \
|
|
job_schema.py \
|
|
job_state_machine.py \
|
|
job_claim.py \
|
|
delete_tolaria_client.py \
|
|
delete_worker.py \
|
|
delete_entrypoint.py \
|
|
/app/
|
|
USER 10012:10012
|
|
ENV C5_DELETE_DB=/data/c5a_delete.db
|
|
# FIXED Tolaria Base URL (interne Docker-DNS-Adresse, NIE aus dem Job)
|
|
ENV C5_TOLARIA_BASE=http://tolaria:5173/api/vault
|
|
ENTRYPOINT ["python3", "/app/delete_entrypoint.py"]
|