Skip to content

feat(sandbox): registries automatisch in de whitelist bij podman (#44) - #86

Closed
ericwout-overheid wants to merge 2 commits into
feat/sandbox-hardeningfrom
feat/podman-registry-whitelist
Closed

feat(sandbox): registries automatisch in de whitelist bij podman (#44)#86
ericwout-overheid wants to merge 2 commits into
feat/sandbox-hardeningfrom
feat/podman-registry-whitelist

Conversation

@ericwout-overheid

Copy link
Copy Markdown
Collaborator

Probleem

Als rootless podman in de sandbox-image zit, pullt Testcontainers zijn images van
docker.io. In de strikte-whitelist-modus (OPEN_HTTPS=false) moesten de bijbehorende
registries — registry-1.docker.io, auth.docker.io,
production.cloudflare.docker.com en docker.io — met de hand aan ALLOWED_DOMAINS
worden toegevoegd, anders liep de image-pull vast op de firewall.

Nuance

Dit speelt alleen bij OPEN_HTTPS=false. Bij de default OPEN_HTTPS=true staat al het
uitgaand HTTPS op poort 443 open en is de hele domein-allowlist een no-op — dan hoefde
je sowieso niets toe te voegen.

Fix

init-firewall.sh voegt de docker.io-registries nu zelf aan de DOMAINS-lijst toe,
conditioneel op command -v podman. Dat is consistent met hoe de Maven/SDKman-domeinen
al onvoorwaardelijk in die lijst staan. De toevoeging zit binnen het bestaande
if [ "$OPEN_HTTPS" != "true" ]-blok, dus draait alleen in whitelist-modus.

Wat niet verandert

Zonder podman in de image verbreedt dit de whitelist niet (het if command -v podman
slaat het blok dan over). En bij OPEN_HTTPS=true heeft het geen effect, want de
allowlist wordt daar niet gebruikt.

Docs meegetrokken: .env.sample (comment bij INSTALL_PODMAN) en
claude-sandbox/podman/README.md — stap 1 laat de handmatige ALLOWED_DOMAINS-regel
vallen, en de fallback-tabelrij "image-pull hangt/timeout" is bijgewerkt zodat die niet
meer naar het handmatig toevoegen van de registries verwijst.

Verificatie

  • bash -n claude-sandbox/init-firewall.sh — OK.
  • shellcheck via de podman-wrapper (koalaman/shellcheck:stable --severity=warning):
    geen findings, exit 0. (Sanity-check op een kapot script bevestigde dat shellcheck
    daadwerkelijk draaide en waarschuwingen zou tonen.)
  • Bevestigd dat het podman-blok binnen het if [ "$OPEN_HTTPS" != "true" ]-blok valt en
    dat de array-syntax klopt.

🤖 Generated with Claude Code

De docker.io-registries die Testcontainers nodig heeft, moesten in de
strikte-whitelist-modus (OPEN_HTTPS=false) met de hand aan ALLOWED_DOMAINS
worden toegevoegd. init-firewall.sh voegt ze nu zelf toe als rootless podman
in de image zit — consistent met hoe de Maven/SDKman-domeinen al onvoorwaardelijk
in de lijst staan. Zonder podman verbreedt het de whitelist niet, en bij
OPEN_HTTPS=true (default) is de hele lijst een no-op.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…rding (#44)

Uit de reviewronde op deze PR:
- Happy-path-noot toegevoegd (README stap 1 + .env.sample): gebruik je een
  eigen/interne registry (Harbor, Nexus, mirror), zet die dan wél in
  ALLOWED_DOMAINS. Voorkomt dat een hergebruiker denkt dat álle registries
  automatisch gaan.
- .env.sample-wording gelijkgetrokken met de code: de firewall keyt op
  "podman in de image" (command -v podman), niet op de INSTALL_PODMAN-flag zelf.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ericwout-overheid

Copy link
Copy Markdown
Collaborator Author

Samengevoegd in #46 en daar in één keer te reviewen. De gestapelde opzet zorgde ervoor dat werk dat verderop in de stack weer werd teruggedraaid alsnog gereviewd moest worden; in de samengevoegde diff valt dat weg.

Geverifieerd dat claude-sandbox/ en docs/ in #46 byte-identiek zijn aan de eindtoestand van deze stack — er is geen reviewfix uit deze PR verloren gegaan. De plan- en designdocumenten staan apart in #96.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant