01 · Before and afterThe pattern
-- before: assumed to read everything
grant pg_read_all_data to backup_reader;
-- after: also cover what that role doesn't
-- run once per large-object owner (only the owner can grant)
-- ...grant select on large object <oid> to backup_reader;
alter table app.orders force row level security; -- if the owner must obey policies
-- pg_dump ... --password --schema=public --large-objects02 · Run it on your appThe check
Has anyone restored your “read-only” backup end to end, including large objects, using the exact role and flags in your runbook?
If the honest answer is no or not sure, this is worth a look before it reaches production.