Re: sepgsql and process transition

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Kohei KaiGai wrote:
The reason why we check process:{transition} permission on invocation
of trusted procedures is an analogy to execution of program with
domain transition.

Analogy, sure, but not a process and not a domain.


In the case of domain transition, it checks process:{transition}
permission on a pair of source and target domain, and it also checks
file:{entrypoint execute} permission on the security label of the file
to be launched.

Let's replace the file by a database object.

That is the crux. A database object isn't a file and a stored procedure isn't a process. We've abused kernel object classes before but as far as I'm concerned we need to stop.

When a trusted procedure is invoked, it checks process:{transition}
permission on a pair of source and target *domain*. Please note that
"sepgsql_trusted_proc_t" is a domain, not an object within
db_procedure class.

It is a different class then, db_process, db_domain, whatever.

And, it also checks db_procedure:{entrypoint execute} permission on
the security label of the procedure to be launched.


Also note that sepgsql_trusted_proc_exec_t is a label to be assigned
on db_procedure class; as an entrypoint of trusted procedure.

Yes, so db_procedure is more like file, we need a database object class that is more like process.



2011/8/30 Joshua Brindle<method@xxxxxxxxxxxxxxx>:
Kaigai, I'm taking a look at the latest Postgresql master and I see that you
are using process:transition permission to check access to transition from
one type to another for trusted procedures.

Why didn't you add a transition permission to db_procedure? We are trying
not to reuse kernel object classes for userspace object managers these days
(I know we haven't been great about that in the past). I know this situation
is a little tricky because the beginning type is a process type (domain) and
the ending type is a procedure type, which closely maps to a domain type.

The beginning type may not always be a domain type though, if a procedure
calls another procedure, or if postgres user session types become derived
types (user_t ->  sepgsql_user_t) we could completely divorce process types
from postgres types.

Stephen, do you have an opinion on this?





--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx with
the words "unsubscribe selinux" without quotes as the message.


[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux