Re: shared_preload_libraries is ignored in single user mode - Mailing list pgsql-hackers

From KaiGai Kohei
Subject Re: shared_preload_libraries is ignored in single user mode
Date
Msg-id 4C69F120.60202@ak.jp.nec.com
Whole thread Raw
In response to Re: shared_preload_libraries is ignored in single user mode  (Robert Haas <robertmhaas@gmail.com>)
Responses Re: shared_preload_libraries is ignored in single user mode
List pgsql-hackers
(2010/08/17 10:57), Robert Haas wrote:
> 2010/8/16 KaiGai Kohei<kaigai@ak.jp.nec.com>:
>> (2010/08/17 9:52), Robert Haas wrote:
>>> 2010/8/16 KaiGai Kohei<kaigai@ak.jp.nec.com>:
>>>> (2010/08/16 23:40), Robert Haas wrote:
>>>>> 2010/8/16 KaiGai Kohei<kaigai@ak.jp.nec.com>:
>>>>>> Although nobody paid an attention, it seems to me a problem to be fixed.
>>>>>>
>>>>>> The attached patch fixes the problem using a simple idea which adds
>>>>>> process_shared_preload_libraries() at PostgresMain() when we launched
>>>>>> it in single-user mode.
>>>>>
>>>>> I have no confidence at all that this is a sane thing to do.  I think
>>>>> any enhanced security provider that needs system objects to be
>>>>> labelled should provide a script to label them after the fact.  You
>>>>> can't count on everyone who wants to use SE-PostgreSQL having made
>>>>> that decision at initdb time.  I think we want to keep single-user
>>>>> mode as lean and mean as possible, so that people can rely on it when
>>>>> they need to fix their broken database.
>>>>>
>>>> I also agree it is nonsense to make access control decision during
>>>> initdb phase, but it is not the reason why I want to fix this problem.
>>>>
>>>> I plan to provide a script that assigns initial security label after
>>>> the initdb, but before launching postmaster. This script tries to execute
>>>> postgres in single-user mode, then labels database objects according to
>>>> the system setting. But the sepgsql module is not loaded currently.
>>>>
>>>> I want to kick this job in single-user mode, not normal processing mode,
>>>> because we can simplify several stuffs. For example, we don't need to
>>>> check whether the user has privilege to assign initial labels, because
>>>> it is obvious people who launch initdb has superpower on whole of the
>>>> database. In addition, we don't need to consider a possibility that
>>>> someone create a new database object during initial labeling.
>>>
>>> I think this is a bad design.  Consider someone who has 10 databases
>>> for which he does NOT wish to use security labelling.  One day he
>>> decides to create database #11 and on this one he DOES want security
>>> labelling.  Ideally, he'd be able to do this without shutting down the
>>> database.  Of course, that's not going to quite work, since
>>> shared_preload_libraries needs to be changed, but that can be done
>>> with a very quick server bounce.  Requiring him to run the setup
>>> scripts in single-user mode is just painful; forcing him to label
>>> every database is even worse.
>>>
>> Hmm. It seems to me a reasonable scenario indeed.
>> In this case, the someone who wants to create #11 database with security
>> labels may connect on the postmaster via internet, so we need to check
>> his privileges to assign security label on individual database objects
>> without short-cut like a case when single-user mode.
>>
>> Perhaps, the best one is to provide two options for users.
>> If he wants to label database obejcts just after initdb, he can launch
>> a script to label them in single-user mode; without any cumbers.
>> If he wants to label only objects within database #11 after several
>> months from initdb, he can launch a script to label them via normal
>> connection.
> 
> I don't really see what the advantage of doing this in single-user
> mode is.  If the overhead of permissions-checking is enough to matter,
> maybe that's a sign we're doing something wrong.
> 
Hmm... I guess the overhead is not a significant matter, because the
number of system obejcts (not only tables) are less than 3,500.
It will be small enough on recent hardware.

I might have a reason why the script need to launch in single-user
mode, but it is not clear right now, sorry.

Thanks,
-- 
KaiGai Kohei <kaigai@ak.jp.nec.com>


pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Git migration timeline
Next
From: Bruce Momjian
Date:
Subject: Re: Todays git migration results