selabel_db(5) | SELinux API documentation | selabel_db(5) |
selabel_db - userspace SELinux labeling interface and configuration file format for the RDBMS objects context backend
#include <selinux/label.h>
int selabel_lookup(struct selabel_handle
*hnd,
char **context,
const char *object_name, int object_type);
int selabel_lookup_raw(struct selabel_handle
*hnd,
char **context,
const char *object_name, int
object_type);
The DB contexts backend maps from a pair of object name and class
into security contexts. It is used to find the appropriate context for
database objects when relabeling a certain database. The returned
context must be freed using freecon(3).
selabel_lookup(3) describes the function with its return and error
codes.
The object_name should be a fully qualified name using the hierarchy of database objects. For example, the pg_class table in the postgres database and pg_catalog schema should be qualified as:
The NOTES section has further information on database support for namespace hierarchies.
The object_type argument should be set to one of the following values:
Any messages generated by selabel_lookup(3) are sent to stderr by default, although this can be changed by selinux_set_callback(3).
selabel_lookup_raw(3) behaves identically to selabel_lookup(3) but does not perform context translation.
The FILES section details the configuration files used to determine the database object context.
In addition to the global options described in selabel_open(3), this backend recognizes the following options:
The database context file used to retrieve a context depends on the SELABEL_OPT_PATH parameter passed to selabel_open(3). If NULL, then the SELABEL_OPT_PATH value will default to the active policy database contexts location (as returned by selinux_sepgsql_context_path(3)), otherwise the actual SELABEL_OPT_PATH value specified is used (this option must be used to support databases other than SE-PostgreSQL).
The default database object contexts file is:
Where {SELINUXTYPE} is the entry from the selinux configuration file config (see selinux_config(5)).
The entries within the database contexts file are shown in the Object Name String Values and FILE FORMAT sections.
The string name assigned to each object_type argument that can be present in the database contexts file are:
object_type | Text Name |
SELABEL_DB_DATABASE | db_database |
SELABEL_DB_SCHEMA | db_schema |
SELABEL_DB_VIEW | db_view |
SELABEL_DB_LANGUAGE | db_language |
SELABEL_DB_TABLE | db_table |
SELABEL_DB_COLUMN | db_column |
SELABEL_DB_TUPLE | db_tuple |
SELABEL_DB_PROCEDURE | db_procedure |
SELABEL_DB_SEQUENCE | db_sequence |
SELABEL_DB_BLOB | db_blob |
SELABEL_DB_EXCEPTION | db_exception |
SELABEL_DB_DATATYPE | db_datatype |
Each line within the database contexts file is as follows:
Where:
The entry can contain '*' for wildcard matching or '?' for substitution.
Note that if the '*' is used, then be aware that the order of entries in the file is important. The '*' on its own is used to ensure a default fallback context is assigned and should be the last entry in the object_type block.
The following example is for SE-PostgreSQL:
# ./contexts/sepgsql_contexts file
# object_type object_name context
db_database my_database system_u:object_r:sepgsql_db_t:s0
db_database * system_u:object_r:sepgsql_db_t:s0
db_schema *.* system_u:object_r:sepgsql_schema_t:s0
db_tuple row_low system_u:object_r:sepgsql_table_t:s0
db_tuple row_high system_u:object_r:sepgsql_table_t:s0:c1023
db_tuple *.*.* system_u:object_r:sepgsql_table_t:s0
SE-PostgreSQL has a namespace hierarchy where a database is the top level object with the schema being the next level. Under the schema object there can be other types of objects such as tables and procedures. This hierarchy is supported as follows:
If a security context is required for "my_table" table in the "public" schema within the "postgres" database, then the selabel_lookup(3) parameters for object_type would be SELABEL_DB_TABLE and the object_name would be "postgres.public.my_table", the security context (if available), would be returned in context.
selinux(8), selabel_open(3), selabel_lookup(3), selabel_stats(3), selabel_close(3), selinux_set_callback(3), selinux_sepgsql_context_path(3), freecon(3), selinux_config(5)
01 DEC 2011 | Security Enhanced Linux |