Skip to content

v0.43.0

Choose a tag to compare

@github-actions github-actions released this 11 Jun 19:32
· 13 commits to main since this release
76f8203

New: Disable Built-In DNS Server

iron-proxy's DNS server can now be disabled entirely via dns.enabled: false (or the IRON_DNS_ENABLED environment variable). When disabled, the proxy skips the :53 listener, drops the dns.proxy_ip requirement, and does not start the DNS server at all. Existing deployments are unaffected: the field defaults to true.

This is useful when clients reach the proxy via explicit HTTP_PROXY or HTTPS_PROXY environment variables rather than DNS interception, removing the need to run a DNS listener in those environments.

dns:
  enabled: false

New: Per-Upstream Postgres Session Settings

Postgres upstreams now support a settings list of session variables (GUCs) the proxy injects at session start, before the SET ROLE downgrade. Settings are applied via set_config with bound parameters (no value quoting), so they are safe to use with untrusted values.

The proxy pins every name in the list: clients may not SET, RESET, or set_config a pinned name afterwards. RESET ALL and DISCARD ALL are now also blocked whenever the proxy manages a role or session settings, closing a gap where those commands could previously undo the managed role. This makes settings suitable as a security boundary, for example passing a tenant identifier that a Row-Level Security policy keys off.

upstreams:
  - database: appdb
    dsn:
      type: env
      var: PG_APPDB_DSN
    role: tenant_role
    settings:
      - name: app.tenant_id
        value: centaur

Names must be bare or dotted GUC identifiers; role and session_authorization are reserved (use the role field for those). Values are static per-upstream. Postgres support is experimental.

Changelog

  • f8b52f1 feat(dns): allow disabling the built-in DNS server (#186)
  • 76f8203 feat(postgres): inject and pin per-upstream session settings (#189)