SECURITY LABEL
功能描述
SECURITY LABEL将安全标签应用于数据库对象。用于定义或更改应用于对象的安全标签。
可以把任意数量的安全标签(每个标签提供者对应一个)关联到一个给定的数据库对象。标签提供者是使用函数register_label_provider注册自己的可装载模块。
register_label_provider不是一个 SQL函数,它只能在被载入到后端的C代码中调用。
实际上,这个功能是为了允许与基于标签的强制访问控制系统集成(例如 SE-Linux)。这类系统会基于对象标签而不是传统的自主访问控制概念(例如用户和组)做出所有访问控制决定。
语法格式
SECURITY LABEL [ FOR vastbase ] ON
{
TABLE object_name |
FUNCTION function_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
MATERIALIZED VIEW object_name |
PROCEDURE procedure_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
ROLE object_name |
SEQUENCE object_name |
TRIGGER object_name OF table_name |
VIEW object_name |
COLUMN table_name.column.name
} IS 'label' | NULL;
参数说明
object_name
对象名称。
function_name
函数名称。
argmode
函数参数的模式。
取值范围:IN,OUT,INOUT或VARIADIC(用于声明数组类型的参数),缺省值是IN。只有OUT模式的参数后面能跟VARIADIC。并且 OUT和INOUT模式的参数不能用在RETURNS TABLE的函数定义中。
argname
函数参数的名称。
取值范围:字符串,要符合标识符命令规范。
argtype
函数参数的类型。
procedure_name
存储过程名称。
label
写成一个字符串文本的新安全标签。如果写成NULL表示删除原有的安全标签。
示例
更改一个表的安全标签:
SECURITY LABEL FOR vastbase ON TABLE mytable IS 'system_u:object_r:sepgsql_table_t:s0';
上述SQL命令中,标签提供者vastbase是使用函数register_label_provider注册的可装载模块,mytable表是安全标签关联的数据库对象。