Re: How to get SE-PostgreSQL acceptable - Mailing list pgsql-hackers

From KaiGai Kohei
Subject Re: How to get SE-PostgreSQL acceptable
Date
Msg-id 49806EAD.6040209@kaigai.gr.jp
Whole thread Raw
In response to Re: How to get SE-PostgreSQL acceptable  (Robert Haas <robertmhaas@gmail.com>)
Responses Re: How to get SE-PostgreSQL acceptable  (Robert Haas <robertmhaas@gmail.com>)
List pgsql-hackers
Robert Haas wrote:
> I haven't read the code, but from reading the docs, I have a feeling
> that right now the answer to both questions are NO, which means it
> doesn't really have a lot of value.  One example of this is the
> pg_security system catalog.  The catalog representation you're
> proposing is probably just fine for associating OIDs to SELinux
> security labels.  But trying to present it as a general thing that
> some other security implementation could reuse just doesn't seem
> realistic.  Who is to say that the next person who writes an enhanced
> security feature will want to use text as the representation for their
> security domains?  It could just as easily be two integers, or an
> array of booleans.  This is after all a database product, so the
> chances that someone would want to do something with structured data
> seem non-negligible.

Text represented security attribute is the most common format
for any other security mechanism also.
(For example, T-SOL also have its text representation.)
In addition, TEXT is the most flexible format. If any other
feature want to handle it as an array, it can be stored as
a text representation.

> In the end, you're going to have to be the one who makes the decision
> on which way to go.  In some ways, I think that a plugin architecture
> would be better for everyone: we worry about the things on our side of
> the abstraction boundary, and you worry about the things on your side.
>  Potentially you or someone else can release enhanced security plugins
> without needing any changes to core, and potentially on a different
> release cycle.  On the other hand, a plugin architecture is probably
> going to be a lot of work.  It seems that to install the plugin you
> would need to make system catalog changes as well as stuff additional
> system attributes into every table, which are relatively invasive
> changes.  And you'll need to convince everyone that it's really a
> plug-in architecture and not just a special case for SE-PostgreSQL, so
> you'll need to prove that there are multiple viable clients, perhaps
> by backporting our existing DAC.

Please make clear the meaning of terms.
The 'plugin' means a loadable module which provides its own security
policy, doesn't it?

There is fundamental difference between built-in and plug-in.
The most important factor is where the hooks are deployed, and
what facility enables to manage security attribute.

Even if I implement SE-PostgreSQL as a loadable module, core
PostgreSQL has to provide proper hooks in strategic points and
facilities to manage security attribute (pg_security system catalog
and security_label system column).
If you require to implement it without these facilities, I think
it is impossible and prefer scraping PGACE and integrate SE- code
into core.

Thanks,
-- 
KaiGai Kohei <kaigai@kaigai.gr.jp>


pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: How to get SE-PostgreSQL acceptable
Next
From: Simon Riggs
Date:
Subject: Re: Hot standby, recovery infra