Skip to content

feat: close flick_prod's allow list to external connections - #304

Open
zorn wants to merge 2 commits into
mainfrom
zorn/issue-296-close-db-allow-list
Open

zorn wants to merge 2 commits into
mainfrom
zorn/issue-296-close-db-allow-list

Conversation

@zorn

@zorn zorn commented Oct 19, 2026

Copy link
Copy Markdown
Owner

Closes #296.

This closes flick_prod to external connections by setting ipAllowList: [] in render.yaml. Until now the password was the only thing between the internet and the database. Services in the workspace reach it over the private network, so Flick and the metrics stack are unaffected.

Risk

If something outside Render still connects, it is refused after the Blueprint sync. Nothing does today: no workflow uses DATABASE_URL, the S3 backup in #153 is not built, and local investigation uses a Recovery page download. To undo, revert this PR, or add an entry in the database's Networking settings for immediate access. The Render MCP tool query_render_postgres stops working for good, because the hosted server connects from an address we do not control. The PR lets the deploy run, because the Blueprint sync must apply the change. The suite is unchanged at 190 passing.

How to reach production data now

AGENTS.md lists the preferred order: remote IEx through Flick.Repo, then a backup from the Recovery page, then a temporary IP entry for psql, render psql, or a GUI client. Decision 7 records why there is no standing home IP entry: render.yaml is public, and an entry would publish the address.

After merge

  • The database's Networking settings show an empty allow list.
  • psql with the external URL from a laptop is refused.
  • Flick.Repo.query!("SELECT 1") works in a remote IEx shell.
  • Flick's logs show no database connection errors.

Worth a reviewer's attention

  • The decision record and the render.yaml comment go beyond the issue. The review flagged both as unrequested. I kept the comment because it guards the one line a future editor might delete.
  • AGENTS.md and the decision overlap. AGENTS.md holds the steps and the decision holds the reasoning. The decision points to AGENTS.md rather than repeating the steps, so the two cannot drift.
  • The docs don't promise that a sync removes a hand-added entry. Render's docs don't say whether a sync runs when render.yaml is unchanged, so the docs say to remove the entry by hand.

Copilot AI balanced review requested due to automatic review settings October 19, 2026 15:35

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The focused configuration and documentation changes match #296; live connectivity checks remain post-sync verification.

No open issues 🎉

What changed in this PR

Closes #296 by blocking external connections to flick_prod while preserving Render private-network access.

Changes:

  • Sets an explicit empty database IP allow list.
  • Documents approved access methods and the security rationale.
File Description
render.yaml Blocks external database connections.
docs/​decisions/​7-closed-database-allow-list.md Records the rationale and tooling tradeoffs.
AGENTS.md Documents production data access and temporary IP cleanup.

Review effort: Balanced

@zorn zorn closed this Oct 19, 2026
@zorn zorn reopened this Oct 19, 2026

This branch has not been deployed

No deployments
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.

Close flick_prod's allow list to the public internet

2 participants