[prev in list] [next in list] [prev in thread] [next in thread] 

List:       postgresql-general
Subject:    Re: HIPPA (was Re: [GENERAL] Anyone know ...)
From:       Kenneth Downs <ken () secdat ! com>
Date:       2007-03-10 15:12:17
Message-ID: 45F2CAD1.8030209 () secdat ! com
[Download RAW message or body]

Tom Lane wrote:
> Kenneth Downs <ken@secdat.com> writes:
>   
>> The biggest security limitation we have is actually a weakness in 
>> Postgres - the inability to restrict the abilities of a user with 
>> CREATUSER rights, they can make somebody who can do anything.  For 
>> higher security this requires no ability for public registration of 
>> accounts.  This would be solved if we could restrict a CREATUSER user to 
>> only GRANTing to roles they themselves are in.
>>     
>
> I thought about this for awhile, but I think you are missing the reason
> why it's designed the way it is.  The point of CREATEROLE privilege is
> to be a slightly safer form of superuser: that is, to allow the DBA to
> do all his day-to-day management of user accounts without being a real
> superuser who can corrupt the database arbitrarily badly.  If we
> restricted CREATEROLE as you suggest, then either DBAs would have to
> make their CREATEROLE account a member of every role they manage, or
> they'd have to run as real superusers.  Either choice represents a
> significant increase in the capabilities of the CREATEROLE account and
> thus more chance for mistakes.  So while a miscreant with CREATEROLE
> can certainly avail himself of any database privilege short of
> superuserness, in the intended use of the feature it is actually
> possible for DBAs to operate with *fewer* privileges than they would
> need to get useful work done if we adopted your suggestion.
>   

Tom, it sounds like you've thought this through, and I can't disagree 
with the reality of what DBA's are doing, but does it have to be one or 
the other?

Perhaps a lesser form of CREATEROLE, CREATEROLE_LIMITED, who can create 
roles and only grant to the roles he himself is a member of.

This suggestion I think would be in line with your own reasoning.  Just 
as CREATEROLE is a lesser SUPERUSER, so CREATEROLE_LIMITED is the next 
logical extension, a lesser CREATEROLE.

At any rate, I hope I can convince somebody, cuz ole Ken don't code in C 
no more :)





[Attachment #3 (text/html)]

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Tom Lane wrote:
<blockquote cite="mid6231.1173492280@sss.pgh.pa.us" type="cite">
  <pre wrap="">Kenneth Downs <a class="moz-txt-link-rfc2396E" \
href="mailto:ken@secdat.com">&lt;ken@secdat.com&gt;</a> writes:  </pre>
  <blockquote type="cite">
    <pre wrap="">The biggest security limitation we have is actually a weakness in 
Postgres - the inability to restrict the abilities of a user with 
CREATUSER rights, they can make somebody who can do anything.  For 
higher security this requires no ability for public registration of 
accounts.  This would be solved if we could restrict a CREATUSER user to 
only GRANTing to roles they themselves are in.
    </pre>
  </blockquote>
  <pre wrap=""><!---->
I thought about this for awhile, but I think you are missing the reason
why it's designed the way it is.  The point of CREATEROLE privilege is
to be a slightly safer form of superuser: that is, to allow the DBA to
do all his day-to-day management of user accounts without being a real
superuser who can corrupt the database arbitrarily badly.  If we
restricted CREATEROLE as you suggest, then either DBAs would have to
make their CREATEROLE account a member of every role they manage, or
they'd have to run as real superusers.  Either choice represents a
significant increase in the capabilities of the CREATEROLE account and
thus more chance for mistakes.  So while a miscreant with CREATEROLE
can certainly avail himself of any database privilege short of
superuserness, in the intended use of the feature it is actually
possible for DBAs to operate with *fewer* privileges than they would
need to get useful work done if we adopted your suggestion.
  </pre>
</blockquote>
<br>
Tom, it sounds like you've thought this through, and I can't disagree
with the reality of what DBA's are doing, but does it have to be one or
the other?<br>
<br>
Perhaps a lesser form of CREATEROLE, CREATEROLE_LIMITED, who can create
roles and only grant to the roles he himself is a member of.<br>
<br>
This suggestion I think would be in line with your own reasoning.&nbsp; Just
as CREATEROLE is a lesser SUPERUSER, so CREATEROLE_LIMITED is the next
logical extension, a lesser CREATEROLE.<br>
<br>
At any rate, I hope I can convince somebody, cuz ole Ken don't code in
C no more :)<br>
<br>
<br>
<br>
<br>
</body>
</html>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic