Re: [PATCH] SE-PgSQL/lite rev.2163 - Mailing list pgsql-hackers
| From | KaiGai Kohei |
|---|---|
| Subject | Re: [PATCH] SE-PgSQL/lite rev.2163 |
| Date | |
| Msg-id | 4A5C151F.6080107@ak.jp.nec.com Whole thread Raw |
| In response to | Re: [PATCH] SE-PgSQL/lite rev.2163 (Robert Haas <robertmhaas@gmail.com>) |
| Responses |
Re: [PATCH] SE-PgSQL/lite rev.2163
[PATCH] SE-PgSQL/tiny rev.2193 |
| List | pgsql-hackers |
Robert Haas wrote:
>> If so, I can postpone some of permission checks outside of the
>> pg_xxx_aclcheck(). However, SELinux's security model often
>> requires different criteria to make its decision.
>> (Please note that I never say either of them is better or worse.)
>> Thus, we will need to add security hooks outside of the pg_xxx_aclcheck()
>> in the future, although it can be done step-by-step.
>
> Yes: to repeat what has been said multiple times previously, you
> should postpone everything that isn't a mirror of the current security
> model: there should only be permission checks in places where there
> are permissions checks now, and they should be mirror images of the
> current DAC checks.
OK, it seems to me reasonable.
> As for the rest, I think you've likely got it backwards: we shouldn't
> start by not cluttering the entire code-base with sepgsql permission
> checks, and then go and do it later after the basic functionality is
> in. We shouldn't EVER clutter the whole code-base with sepgsql
> permission checks. If we want to expose other sepgsql functionality,
> we should do that by putting in more kinds of pg_xxx_aclcheck()-type
> calls in other places, and the sepgsql can leverage those call sites
> too. But never mind that, because it's irrelevant for right now: what
> you need to do is strip this down to the minimal feature set without
> worrying about what will or won't happen later. Otherwise, nothing is
> going to happen at all.
I might call them pgace_xxx....
Anyway, I can agree to begin and focus on the minimal features which
can be implemented on the existing pg_xxx_aclcheck().
>> I guess the following permissions can be checked at the first version.
>> - db_database:{access} ... equivalent to ACL_CONNECT on pg_database
>> - db_procedure:{execute} ... equivalent to ACL_EXECUTE on pg_proc
>> - db_schema:{search} ... equivalent to ACL_USAGE on pg_namespace
>
> Why not db_database:{connect} and db_schema:{usage}? It seems to me
> that there is zero value in inventing new names for the same things.
We don't have any specific reason for db_database:{connect}.
In the early phase, SELinux's upstream security policy merged definitions
of object classes (such as db_table) and corresponding permissions,
so I uses its naming scheme.
However, security policy maintainer also said it is acceptable
if PostgreSQL folks merge SE-PgSQL with new permissions.
I don't mind to change db_database:{access} to {connect}.
(In actually, we need to add {connect} newly and mark {access} as
obsolete due to the compatibility issue.)
On the other hand, db_schema class was designed as an analogy to
directoty in filesystems. SELinux defines several permissions on
"dir" object class, such as "add_name", "remove_name" and "search".
dir:{search} is checked when we lookup filesystem object under
a certain directory, it seems like what schema object performs.
So, I would not like to change this naming scheme, if possible.
FYI, I summarized the list of SE-PgSQL permissions in the fullset
functionality here: http://wiki.postgresql.org/wiki/SEPostgreSQL_References#Object_classes_and_access_vector
>> - db_database:{superuser} to be called from superuser_arg().
>> Should it be postponed to the next phase?
>
> No, I don't see any reason to postpone that. That seems analagous to
> what we do now, and should be included in the first version, I would
> think.
OK,
>> BTW, SELinux needs objects to be labeled correctly on its creation time.
>> At least, we have to put hooks to provide security labels to be assigned
>> on the DefineRelation() and so on, although it does not check permission
>> to create the objects.
>
> That seems very reasonable to me.
OK,
I'll update my patch set within this week.
Please wait for SE-PgSQL/tiny. ^^^^
Thanks,
--
OSS Platform Development Division, NEC
KaiGai Kohei <kaigai@ak.jp.nec.com>
pgsql-hackers by date: