Hi, I was checking the GRANT on pg_subscription and noticed that the command is not correct. There is a comment that says "All columns of pg_subscription except subconninfo are readable". However, there are columns that aren't included: oid and subsynccommit. It seems an oversight in the commits 6f236e1eb8c and 887227a1cc8.
There are monitoring tools and data collectors that aren't using a superuser to read catalog information (I usually recommend using pg_monitor). Hence, you cannot join pg_subscription with relations such as pg_subscription_rel or pg_stat_subscription because column oid has no column-level privilege. I'm attaching a patch to fix it (indeed, 2 patches because of additional columns for v14). We should add instructions in the minor version release notes too. This issue was reported by Israel Barth. -- Euler Taveira EDB https://www.enterprisedb.com/
From 64b138b9974934f689e57fc34d370424b2a348a9 Mon Sep 17 00:00:00 2001 From: Euler Taveira <euler.tave...@enterprisedb.com> Date: Mon, 31 May 2021 19:40:36 -0300 Subject: [PATCH] Grant read privilege to additional pg_subscription columns pg_subscription should be read by PUBLIC except subconninfo column. Documentation is correct but the GRANT command is not. Columns oid and subsynccommit don't have the right privileges. It seems an oversight in the commits 6f236e1eb8c and 887227a1cc8. The current behavior prohibits joins between pg_subscription and related tables (pg_subscription_rel and pg_stat_subscription) for non-superusers. --- src/backend/catalog/system_views.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql index 5c84d758bb..5088e7f1d5 100644 --- a/src/backend/catalog/system_views.sql +++ b/src/backend/catalog/system_views.sql @@ -1254,5 +1254,5 @@ REVOKE ALL ON pg_replication_origin_status FROM public; -- All columns of pg_subscription except subconninfo are readable. REVOKE ALL ON pg_subscription FROM public; -GRANT SELECT (subdbid, subname, subowner, subenabled, subbinary, substream, subslotname, subpublications) +GRANT SELECT (oid, subdbid, subname, subowner, subenabled, subbinary, substream, subslotname, subsynccommit, subpublications) ON pg_subscription TO public; -- 2.20.1
From d54165988c69a021962adaad6e2e31f80f4ad85c Mon Sep 17 00:00:00 2001 From: Euler Taveira <euler.tave...@enterprisedb.com> Date: Tue, 1 Jun 2021 11:17:26 -0300 Subject: [PATCH] Grant read privilege to additional pg_subscription columns pg_subscription should be read by PUBLIC except subconninfo column. Documentation is correct but the GRANT command is not. Columns oid and subsynccommit don't have the right privileges. It seems an oversight in the commits 6f236e1eb8c and 887227a1cc8. The current behavior prohibits joins between pg_subscription and related tables (pg_subscription_rel and pg_stat_subscription) for non-superusers. --- src/backend/catalog/system_views.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql index 51d738cc42..eb363c9ade 100644 --- a/src/backend/catalog/system_views.sql +++ b/src/backend/catalog/system_views.sql @@ -1122,7 +1122,7 @@ REVOKE ALL ON pg_replication_origin_status FROM public; -- All columns of pg_subscription except subconninfo are readable. REVOKE ALL ON pg_subscription FROM public; -GRANT SELECT (subdbid, subname, subowner, subenabled, subslotname, subpublications) +GRANT SELECT (oid, subdbid, subname, subowner, subenabled, subslotname, subsynccommit, subpublications) ON pg_subscription TO public; -- 2.20.1