Skip to content

Remove anon default table privileges on production #470

Open

Description

@HMarzban

Summary

Production never ran 29-lint-hardening.sql §3, so anon still holds default table privileges on production tables outside the 2026-09-28 hand fix. #316 covers only objects created in the future.

Fix

  1. Read-only on prod: list every table in public where anon has INSERT, UPDATE, DELETE or TRUNCATE, and every table with relrowsecurity = false.
  2. Write one migration that revokes anon writes everywhere except where a policy needs them. Keep the anon SELECT allowlist from §6 and §7.
  3. Mirror it in the scripts, and regenerate seed.sql.

Acceptance

  • The read-only listing is posted here before and after.
  • No anon write privilege remains on a table without a policy that needs it.

Activity

  1. added
    SecuritySecurity, access control, and data exposure
    on Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    SecuritySecurity, access control, and data exposure

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions