VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

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表是安全标签关联的数据库对象。

相关链接

CREATE SECURITY LABELDROP SECURITY LABEL