Re: Cascade view drop permission checks - Mailing list pgsql-general

From m7onov@gmail.com
Subject Re: Cascade view drop permission checks
Date
Msg-id CAP8_6XbnNNHtc=N1Tv_zyD9ZeGfLHWO0WUxJ-FoARQCBH3DbCg@mail.gmail.com
Whole thread Raw
In response to Re: Cascade view drop permission checks  ("David G. Johnston" <david.g.johnston@gmail.com>)
Responses Re: Cascade view drop permission checks  ("David G. Johnston" <david.g.johnston@gmail.com>)
List pgsql-general
David, thank you for the clarification.
Should we consider raising log level for cascade drops from NOTICE to WARNING? By now cascade drops appears in log files only when log level >= NOTICE.

--- a/src/backend/catalog/dependency.c
+++ b/src/backend/catalog/dependency.c
@@ -1105,7 +1105,7 @@ reportDependentObjects(const ObjectAddresses *targetObjects,
                                           int flags,
                                           const ObjectAddress *origObject)
 {
- int msglevel = (flags & PERFORM_DELETION_QUIETLY) ? DEBUG2 : NOTICE;
+ int msglevel = (flags & PERFORM_DELETION_QUIETLY) ? DEBUG2 : WARNING;
        bool ok = true;
        StringInfoData clientdetail;
        StringInfoData logdetail;

On Wed, Apr 6, 2022, 10:13 David G. Johnston <david.g.johnston@gmail.com> wrote:
On Tuesday, April 5, 2022, m7onov@gmail.com <m7onov@gmail.com> wrote:

-- alice
create or replace view sandbox_a.alice_view as
select category, name, setting
  from pg_catalog.pg_settings;

grant select on sandbox_a.alice_view to bob;

-- bob
create or replace view sandbox_b.bob_view as
select distinct category
  from sandbox_a.alice_view;

-- alice
drop view sandbox_a.alice_view cascade;

-- !!! will drop sandbox_b.bob_view although alice is not an owner of sandbox_b.bob_view

It seems strange to me that somebody who is not a member of owner role can drop an object bypassing permission checks.
Is this behaviour OK?

The system dropped the now defunct view, not alice.  Bob accepted that risk by basing the view on an object owned by another role.  I suppose other behaviors are possible but not really worth exploring.  Namely it would nice to fix the problem with “create or replace view” and not have yet other object types maybe have to be dropped.  But if two users in the same database own objects they should be expected to play nicely with each other.  Not sure why we picked this behavior instead of an error (avoid DoS by bob is part of it though, but that seems like it should also be addressed by playing nicely…) or maybe it is a bug (others will need to chime in if that is the case).

I will say the lack of documentation here:


which CASCADE links to as well, may be an omission worth fixing (or please point me to where this is covered…)

David J.

pgsql-general by date:

Previous
From: "W.P."
Date:
Subject: Problem with PG 11 database on OrangePi3 (ARMBIAN, ARM64) after disk disrupion (problem with USB disk connection)
Next
From: Laurenz Albe
Date:
Subject: Re: Problem with PG 11 database on OrangePi3 (ARMBIAN, ARM64) after disk disrupion (problem with USB disk connection)