Re: SE-PostgreSQL? - Mailing list pgsql-hackers

From Robert Haas
Subject Re: SE-PostgreSQL?
Date
Msg-id 603c8f070907181301t2f93460k1422bfe24ecd2d8d@mail.gmail.com
Whole thread Raw
In response to Re: SE-PostgreSQL?  (Josh Berkus <josh@agliodbs.com>)
Responses Re: SE-PostgreSQL?
List pgsql-hackers
On Sat, Jul 18, 2009 at 1:19 PM, Josh Berkus<josh@agliodbs.com> wrote:
> b) Efficient constraint-based row-level security (as opposed to individual
> row labelling)[1]
[...]
> [1] For an explanation of the two ways to do row-level security, see here:
> http://it.toolbox.com/blogs/database-soup/thinking-about-row-level-security-part-1-30732
> http://it.toolbox.com/blogs/database-soup/thinking-about-row-level-security-part-2-30757

Yeah.  That would be teh awesome (though admittedly I'm a sucker for a
cool feature), but it's quite beside the point of the original email
here, which is whether there's any point in continuing with the
current SE-Linux patches.  I think there isn't.

Quite beyond the fact that we never seem to be able to get a patch
that implements a reasonable first set of features, the amount of work
that's going to be required to get these patches committable is going
to be enormous.  Just to cite a few examples, here is the
documentation for the "sepostgresql_mctrans" documentation.

% Enables to turn on/off Mcstrans feature on SE-PostgreSQL. It is on
by default. Every users can set this
% parameter on their sessision without any limitations. SELinux
provides a feature to translate a part of security
% context between raw format and human-readable format, called
Mcstrans. If the parameter is turned on,
% SE-PostgreSQL translate the security context when it is exported to
or imported from users.

So, one problem is that this is written in poor English.  While I'm
willing to do a certain amount of copy-editing as part of the review
process, SE-PostgreSQL is a massive feature and it's unfair to put the
entire burden of making the documentation readable on the shoulders of
the reviewers.  I already proofread and corrected these docs once,
back in December, but now they need more reworking because they've
been extensively revised since then, and lots of non-idiomatic
constructs have crept back in.  It's worse than that, though: the
above is not only bad English, it's also not a very good description
of the feature.  I certainly can't tell from reading it what that GUC
actually does, and there are no references to anyplace where I can
turn for followup reading.

And then there's this, which is unduly RedHat-centric:

% Please note that SELinux requires installed files, directories and
others should be labeled properly. RPM
% installation do it implicitly.

And then look at this patch hunk:
 pg_database_aclcheck(Oid db_oid, Oid roleid, AclMode mode) {       if (pg_database_aclmask(db_oid, roleid, mode,
ACLMASK_ANY)!= 0)
 
+       {
+               /* SELinux checks db_database:{connect} permission */
+               if ((mode & ACL_CONNECT) &&
+                       !sepgsqlCheckDatabaseConnect(db_oid))
+                       return ACLCHECK_NO_PRIV;
+               return ACLCHECK_OK;
+       }       else               return ACLCHECK_NO_PRIV; }

I don't think I'm stepping too far out on a limb to say that this
looks like a very poor interface design.  Surely we don't want a
separate sepgsqlCheck<object-type><privilege> function for every
combination of an object type and a privilege, and shouldn't the check
be inside pg_database_aclmask anyway?

These are just a few examples from reading through the first bit of
the patch.  I have no doubt that Kaigai is good at what he does, but I
don't think he understands what the community is looking for from this
patch in terms of features and coding style.  I think the question is
not so much whether anyone is interested in the features (I know some
are) but whether anyone who understands what will be acceptable for
PostgreSQL is willling to do the necessary amount of work to get a
committable patch that implements them.  I would be willing to work
with someone to fine-tune such a patch set, but the ratio of reviewer
effort to patch quality improvement on this patch set is well above
what I am prepared to put in.

...Robert


pgsql-hackers by date:

Previous
From: Greg Stark
Date:
Subject: Re: multi-threaded pgbench
Next
From: Dimitri Fontaine
Date:
Subject: Re: Sampling profiler updated