Label switcher function
Kohei KaiGai <kaigai@kaigai.gr.jp>
From: KaiGai Kohei <kaigai@kaigai.gr.jp>
To: PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2010-11-13T03:36:58Z
Lists: pgsql-hackers
Attachments
- pgsql-switcher-function.1.patch (application/octect-stream) patch
The attached patch allows the security label provider to switch security label of the client during execution of certain functions. I named it as "label switcher function"; also called as "trusted- procedure" in SELinux community. This feature is quite similar idea toward security definer function, or set-uid program on operating system. It allows label providers to switch its internal state that holds security label of the client, then restore it. If and when a label provider said the function being invoked is a label-switcher, fmgr_security_definer() traps this invocation and set some states just before actual invocations. We added three new hooks for security label provider. The get_client_label and set_client_label allows the PG core to save and restore security label of the client; which is mostly just an internal state of plugin module. And, the get_switched_label shall return NULL or a valid label if the supplied function is a label switcher. It also informs the PG core whether the function is switcher or not. Thanks, -- KaiGai Kohei <kaigai@kaigai.gr.jp>