Re: How to get SE-PostgreSQL acceptable

From: Joshua Brindle <method(at)manicmethod(dot)com>
To: Ron Mayer <rm_pg(at)cheapcomplexdevices(dot)com>
Cc: Stephen Frost <sfrost(at)snowman(dot)net>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, KaiGai Kohei <kaigai(at)kaigai(dot)gr(dot)jp>, Peter Eisentraut <peter_e(at)gmx(dot)net>, KaiGai Kohei <kaigai(at)ak(dot)jp(dot)nec(dot)com>, PG Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: How to get SE-PostgreSQL acceptable
Date: 2009-01-28 22:47:00
Message-ID: 4980E064.4020306@manicmethod.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Ron Mayer wrote:
> Stephen Frost wrote:
>> And, just to go full circle, row-level access controls are exactly what
>> the other enterprise RDBMSs have and is what is used in these security
>> circles today. One of the major issues, as I understand it, is to be
>> able to use stock applications with multiple security levels where the
>> application doesn't know (or care about) the security level. Doing that
>> through views and partitions and triggers and whatnot for each and every
>> application that is run on these systems will be a big hurdle to those
>> users, if it ends up being workable at all.
>
> That seems to me to be a shortcoming of the partition system and a good
> TODO for the future partitioning improvements.
>
> Why shouldn't be just as easy to make sure a row ends up in the
> right partition as opposed to making sure it's tagged with right
> row-level ACLs.
>

In reality it isn't, unless postgres won't mind thousands of partitions being
made. In the military/gov implementations BLP lets you have hierarchical levels
and non-hierarchical categories. Since I linked to an article about it upthread
I assumed everyone participating was familiar but perhaps not. Typically there
are 3 levels, unclass, secret, top secret. In addition to those 3 levels there
may be a few, hundreds or even thousands of categories. Those categories apply
to each of the levels so if you are using 1000 categories you have 3*1000
possible BLP labels. On top of that SELinux has users, roles and types, which
are all also multiplied.

There is a reason we don't do things like have 3 filesystems, one for unclass,
one for secret and one for top secret.

Partitions/views may be a good way to implement row-level access control when
there are a few different options but they won't necessarily be known ahead of
time. We don't want to encode policy logic in to the database itself, that is
why we have a separate security server that handles the policy. The system
should scale to any number of contexts that are available on the system.

Relabeling with partitions (that is, moving things from one partition to
another) seems to be handled with triggers, which is inconvenient to the
application developers but also devastating to the security system (unless you
can map triggers back to who did the operation that caused them), and managing
partitions on dozens or hundreds of tables and moving data between them in those
tables seems at the very least challenging.

I also have questions concerning partitions. Perhaps someone wants to use
partitions for a functional purpose (eg., to split log entries by month/year).
What would be the affect of concurrently using partitions to split security
contexts out?

Nonetheless, this conversation seems moot now that Tom has walled off and won't
even discuss row-level access controls.

Cheers.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2009-01-28 22:49:24 Re: 8.4 release planning
Previous Message Tom Lane 2009-01-28 22:45:31 Re: 8.4 release planning