On Sun, Dec 12, 2010 at 08:11, Tom Lane <t...@sss.pgh.pa.us> wrote:

> David Underhill <doun...@gmail.com> writes:
> > I have two tables.  One has a foreign key referencing a serial field in
> the
> > other table.  I've given INSERT privilege to a role other than the owner,
> > but I still can't insert into the table containing the foreign key unless
> I
> > grant the *owner* of the table UPDATE privilege on the table containing
> the
> > referenced field.
> > I don't quite understand why the *owner* needs to have UPDATE permission
> in
> > order for another distinct role (with INSERT privilege) to be able to
> insert
> > a row in this case.
>
> The owner is the one who established the foreign key reference.  That
> reference is no concern of the third-party user who's been given insert
> permission on the referencing table.  The design you seem to have in
> mind would make management of permissions a lot more complicated, since
> instead of just granting insert permission to the third party, you'd
> have to think about all the subsidiary permissions that might be needed
> to deal with the table's FK linkages.
>

Thanks Tom.  It still seems strange that the role given insert is only able
to insert (in the test case I mentioned) iff the *owner* role has update
privileges.

Anyway, I wanted a role which could just copy info from an external source
into the db.  I could have done this with the owner role, but I was trying
to do it with the least permissions possible (just in case I dorked up this
might help limit the maximum damage the role could do).  Maybe this is a bit
overly complicated, as you suggest, and not worth much in the end (i.e., I
should just be cautious and use the role as intended ... probably not too
hard to verify since it is a script doing the inserting).

This was also nice though as it allowed the owner to revoke its own
privileges so that the db was read-only for it.  Perhaps an easier solution
is to still revoke the owner's privileges by default, but temporarily
re-grant them when it needs to do inserts.

Thanks again for your thoughts.

~ David

Reply via email to