DUNDER-252: add SSRF_ALLOWED_IP_RANGES as a helm chart value - #93
Merged
Merged
Conversation
Self-hosted operators whose custom actions or custom integrations poll an internal endpoint need to allow-list it -- the app blocks private, loopback, link-local and cloud-metadata addresses by default. Until now the only way to set SSRF_ALLOWED_IP_RANGES was to patch the configmap by hand. The app parses the var as a comma-separated list of IPs/CIDRs (HttpClients::SsrfSafe.parse_allowed_ip_ranges), so the value takes a YAML list and joins it. It defaults to [], which renders the empty string the app already treats as "allow nothing" -- no behavior change when unset. The value sits at the opslevel level rather than under web, since the workers and scheduler make these outbound requests too; all six workloads pick it up via envFrom and carry a checksum/config annotation, so an upgrade rolls them.
A stale replicated-1.2.0.tgz from a manual `helm pull` has been sitting untracked in the repo root since March 2025, showing up in every `git status`. Anchored as /*.tgz rather than *.tgz on purpose: the subchart tarballs under charts/opslevel/charts/ are vendored and tracked, and a blanket pattern would hide future dependency bumps (which land under a new filename) from git status. Also ignores /downloads, which `task pull-self-hosted` untars into.
wesleyjellis
approved these changes
Sep 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds
opslevel.ssrfAllowedIpRangesto the self-hosted chart, rendered into theopslevelconfigmap asSSRF_ALLOWED_IP_RANGES.Linear: DUNDER-252
Why
As of 2026.8.13 the app blocks server-side requests to private, loopback, link-local and cloud-metadata addresses. Self-hosted operators whose custom actions or custom integrations poll an internal endpoint have to allow-list it, and until now the only way to set the var was to patch the configmap by hand.
Contract
Verified against
app/lib/http_clients/ssrf_safe.rbin the app repo rather than assumed:parse_allowed_ip_rangessplits on,, strips whitespace, and runs each entry throughIPAddr.new— so the value takes a YAML list and joins it with commas. Bare IPs and CIDRs both work; invalid entries are logged and skipped rather than failing boot.[], rendering the empty string the app already treats as "allow nothing" — no behavior change when unset.renders
SSRF_ALLOWED_IP_RANGES: '10.0.0.0/8,172.16.5.4'.Notes for review
opslevellevel rather than underweb, since workers and the scheduler make these outbound requests too. All six workloads (web, 4 workers, scheduler) consume it viaenvFromand carry achecksum/configannotation, so an upgrade that changes it rolls them.templates/tests/, no helm-unittest dep, and the Taskfile only runshelm lint+replicated release lint. Adding tests means introducing a framework, which felt like a bigger call than this ticket; happy to wire up helm-unittest separately if we want it.time:field on a changie entry. There's no app-side work pending — the SSRF feature already shipped.Testing
helm lintpasses. Rendered withhelm templateboth ways:''by default,'10.0.0.0/8,172.16.5.4'when set.