Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p6Dho-0005jQ-Ey for pgsql-hackers@arkaria.postgresql.org; Fri, 16 Dec 2022 16:37:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p6Dgp-0006gx-5U for pgsql-hackers@arkaria.postgresql.org; Fri, 16 Dec 2022 16:36:03 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p6Dgo-0006fL-Kh for pgsql-hackers@lists.postgresql.org; Fri, 16 Dec 2022 16:36:02 +0000 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1p6Dgl-00032B-16 for pgsql-hackers@lists.postgresql.org; Fri, 16 Dec 2022 16:36:01 +0000 Received: by mail-ej1-x630.google.com with SMTP id fc4so7343374ejc.12 for ; Fri, 16 Dec 2022 08:35:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cybertec-at.20210112.gappssmtp.com; s=20210112; h=message-id:date:mime-version:comments:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=ADkhoa3uqclst8935LSpwmO4nWxVlB4t8wwIpHt9txA=; b=FqlJXhnz8ULZM00VoMj0PpAmWeKeR4LvxIQ2jAGbh6fod9X0YvqvLvTRiulV+LPG9B ZI6Sd3HEXzOrLNMRSfObjNzXYcqlGhDFlkzxf5CIMeWYVo5RGDkKuUQ0QqCv68AnxbIE SN8o8IWrhLLxKhqGis+kuSfIwenj+bPH+Jj4D0AwsuUNtpqx0K/TJ+lG5zIfZU3lYYKV u5AqWCAa4QFDgisLPmXe9GnY3T3d3LGSr0pC1LLQCVj86kkwdyshARr0ROZbc3CJSZp3 /i5IXnvumO1A3cacP8TFTztK5Vs1kqzN+PjoxQe02PEiJn3N7XcLmuMo6pU4TV9ffhC1 VSMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=message-id:date:mime-version:comments:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ADkhoa3uqclst8935LSpwmO4nWxVlB4t8wwIpHt9txA=; b=OBVLkIsELM5Eb+V0ks0vnA7qahCoviYdK1+EGO++wzyELAkBXikq9DnR/Gy9ylC7E0 ts44fMw2ZFbscMXDJaezox2ciy9Z8EltrzkrysZWBJHnM8rVRA1VGp7rPg7ebk2kX3im YEarGSC97tGsS6hzX6ZM/ieFje/NQSmev7B4X1EF3cDp0x/9fjz4W476/AXP3I4nUglI vgiGoYeG/qH7k8Qw3pboR9hOL17w/aqctTkfD3ul8GHPFwTagVbHLEpR7ICbzBWTpCPt L4EHSizx78TnviIvE6kecu/Zp9gEY5R1FhDL0l6YVKyFfyzQCmb8XF4EI0YDNcdUjsR4 Y5Ug== X-Gm-Message-State: ANoB5plvMiYtX/qQKIwkeCtvUpw3nVe9Wq5zVrT56Dusjn5miJ7ZzZ8c xM4uYrN9obbZhoDZPtalH7TDf3qzhHSF0L9D X-Google-Smtp-Source: AA0mqf6WBaaDHY2h1I0Z3Kf7dxFkBJjiAieiIFYN17i1bD11vWt2YBCx5bUp273FDp3ON0dUQ2mfaA== X-Received: by 2002:a17:906:d8c9:b0:7ae:8144:690 with SMTP id re9-20020a170906d8c900b007ae81440690mr15783990ejb.32.1671208556640; Fri, 16 Dec 2022 08:35:56 -0800 (PST) Received: from antos ([88.103.134.84]) by smtp.gmail.com with ESMTPSA id u10-20020a1709061daa00b007c08091ad7esm991792ejh.208.2022.12.16.08.35.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Dec 2022 08:35:53 -0800 (PST) From: Antonin Houska To: pgsql-hackers@lists.postgresql.org Cc: Peter Eisentraut , Euler Taveira , Amit Kapila Subject: Re: Privileges on PUBLICATION In-reply-to: <94545.1669732512@antos> References: <20330.1652105397@antos> <8a00e0e1-dc4e-422c-9dcf-664b16b18625@www.fastmail.com> <2810.1652171844@antos> <5859.1652423797@antos> <57022.1652867097@antos> <4c420c17-8570-4b52-b7f6-9ce3f53d7ef9@www.fastmail.com> <14292.1655733695@antos.home> <746c9a65-e2cc-2573-a50e-ab5ea884f680@enterprisedb.com> <1537.1667454192@antos> <2497.1667546930@antos> <043c52a4-c001-0201-94fc-305dffb8313e@enterprisedb.com> <3862.1668424068@antos> <94545.1669732512@antos> Comments: In-reply-to Antonin Houska message dated "Tue, 29 Nov 2022 15:35:12 +0100." X-Mailer: MH-E 8.6+git; nmh 1.7+dev; GNU Emacs 28.2.50 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Date: Fri, 16 Dec 2022 17:37:07 +0100 Message-ID: <54334.1671208627@antos> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-=-= Content-Type: text/plain Antonin Houska wrote: > Antonin Houska wrote: > > > Peter Eisentraut wrote: > > > > > On 04.11.22 08:28, Antonin Houska wrote: > > > > I thought about the whole concept a bit more and I doubt if the PUBLICATION > > > > privilege is the best approach. In particular, the user specified in CREATE > > > > SUBSCRIPTION ... CONNECTION ... (say "subscription user") needs to have SELECT > > > > privilege on the tables replicated. So if the DBA excludes some columns from > > > > the publication's column list and sets the (publication) privileges in such a > > > > way that the user cannot get the column values via other publications, the > > > > user still can connect to the database directly and get values of the excluded > > > > columns. > > > > > > Why are the SELECT privileges needed? Maybe that's something to think about > > > and maybe change. > > > > I haven't noticed an explanation in comments nor did I search in the mailing > > list archives, but the question makes sense: the REPLICATION attribute of a > > role is sufficient for streaming replication, so why should the logical > > replication require additional privileges? > > > > Technically the SELECT privilege is needed because the sync worker does > > actually execute SELECT query on the published tables. However, I realize now > > that it's not checked by the output plugin. Thus if SELECT is revoked from the > > "subscription user" after the table has been synchronized, the replication > > continues to work. So the necessity for the SELECT privilege might be an > > omission rather than a design choice. (Even the documentation says that the > > SELECT privilege is needed only for the initial synchronization [1], however > > it does not tell why.) > > > > > > As an alternative to the publication privileges, I think that the CREATE > > > > SUBSCRIPTION command could grant ACL_SELECT automatically to the subscription > > > > user on the individual columns contained in the publication column list, and > > > > DROP SUBSCRIPTION would revoke that privilege. > > > > > > I think that approach is weird and unusual. Privileges and object creation > > > should be separate operations. > > > > ok. Another approach would be to skip the check for the SELECT privilege (as > > well as the check for the USAGE privilege on the corresponding schema) if > > given column is being accessed via a publication which has it on its column > > list and if the subscription user has the USAGE privilege on that publication. > > > > So far I wasn't sure if we can do that because, if pg_upgrade grants the USAGE > > privilege on all publications to the "public" role, the DBAs who relied on the > > SELECT privileges might not notice that any role having the REPLICATION > > attribute can access all the published tables after the upgrade. (pg_upgrade > > can hardly do anything else because it has no information on the "subscription > > users", so it cannot convert the SELECT privilege on tables to the USAGE > > privileges on publications.) > > > > But now that I see that the logical replication doesn't check the SELECT > > privilege properly anyway, I think we can get rid of it. > > The attached version tries to do that - as you can see in 0001, the SELECT > privilege is not required for the walsender process. > > I also added PUBLICATION_NAMES option to the COPY TO command so that the > publisher knows which publications are subject to the ACL check. Only data of > those publications are returned to the subscriber. (In the previous patch > version the ACL checks were performed on the subscriber side, but I that's not > ideal in terms of security.) > > I also added the regression tests for publications, enhanced psql (the \dRp+ > command) so that it displays the publication ACL and added a few missing > pieces of documentation. > This is v4. The patch had to be rebased due to the commit 369f09e420. -- Antonin Houska Web: https://www.cybertec-postgresql.com --=-=-= Content-Type: application/gzip Content-Disposition: attachment; filename=publication_privileges_v04.tgz Content-Transfer-Encoding: base64 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 --=-=-=--