强制访问控制修改删除部分

设置用户权限

select set_user_privs(
        policy_name,
        user_name,
        privileges
);
参数解释
policy_name 策略名。
user_name 用户名。
privileges 权限项。
神通数据库支持以下权限
READ 读权限,可以读取该策略保护的所有数据,不受安全标记的限制。
FULL 读写权限,可以读写该策略保护的所有数据,不受安全标记的限制。
UPDATE_LABEL 修改客体安全标志的权限,可以在自己的权限内修改客体的安全标志。

启用/禁止策略

select enable_policy(
        policy_name,
        enabled
);
参数解释
policy_name 策略名。
enabled 是否启用策略。TRUE表示启用,FALSE表示禁止。

注解

当一个策略被启用时,该策略保护下的所有客体的策略都被启用;同样的,当一个策略被禁止时,该策略保护下的所有客体的策略都将失效,强制访问控制失去作用。一个策略默认是启用。

启用/禁止模式上的策略

select enable_schema_policy(
        policy_name,
        schema_name,
        enabled
);
参数解释
policy_name 策略名。
schema_name 模式名。
enabled 是否启用策略。TRUE表示启用,FALSE表示禁止。

注解

启用或禁止模式上的策略,则对所有属于该模式的表都将启用/跳过强制访问控制检查(单独应用策略的除外)。

启用/禁止表上的策略

select enable_table_policy(
        policy_name,
        schema_name,
        table_name,
        enabled
);
参数解释
policy_name 策略名。
schema_name 模式名。
table_name 表名。
enabled 是否启用策略。TRUE表示启用,FALSE表示禁止。

修改策略的默认策略项

select alter_policy(
        policy_name,
        new_option
);
参数解释
policy_name 策略名。
new_option 策略项。策略项详情见 options

修改模式上应用的策略项

select alter_schema_policy(
        policy_name,
        schema_name,
        new_option
);
参数解释
policy_name 策略名。
schema_name 模式名。
new_option 策略项。策略项详情见 options

取消表上的策略

select remove_table_policy(
        policy_name,
        schema_name,
        table_name,
        drop_column
);
参数解释
policy_name 策略名。
schema_name 模式名。
table_name 表名。
drop_column 是否删除表由于应用策略而增加的列,TRUE表示删除,FALSE表示保留。

取消模式上的策略

select remove_schema_policy(
        policy_name,
        schema_name,
        drop_column
);
参数解释
policy_name 策略名。
schema_name 模式名。
table_name 表名。
drop_column 是否删除表由于应用策略而增加的列,TRUE表示删除,FALSE表示保留。

删除策略

select drop_policy(
        policy_name,
        drop_column
);
参数解释
policy_name 策略名。
drop_column 是否删除表由于应用策略而增加的列,TRUE表示删除,FALSE表示保留。

修改安全级别

select alter_level(
        policy_name,
        short_name,
        new_long_name
);
参数解释
policy_name 级别所属的策略名。
short_name 级别名的缩写形式,在所属策略下必须唯一。
new_long_name 修改后级别名的全称形式,在所属策略下必须唯一。

注解

只能修改安全级别的全称形式,对于其数字形式和缩写定义下来之后均不能修改。

删除安全级别

使用数字形式删除级别

select drop_level_byNum(
        policy_name,
        level_num
);
参数解释
policy_name 级别所属的策略名。
level_num 级别名的数字形式,在所属策略下必须唯一。

使用缩写形式删除级别

select drop_level_byName(
        policy_name,
        short_name
);
参数解释
policy_name 级别所属的策略名。
short_name 级别名的缩写形式,在所属策略下必须唯一。

注解

如果该级别已经存在于某个合法的安全标记中,则它不能被删除。

修改隔间

select alter_compartment(
        policy_name,
        short_name,
        new_long_name
);
参数解释
policy_name 隔间所属的策略名。
short_name 隔间的缩写形式,在所属策略下必须唯一。
new_long_name 修改后隔间的全称形式,在所属策略下必须唯一。

注解

只能修改安全隔间的全称形式,对于其数字形式和缩写定义下来之后均不能修改。

删除隔间

使用数字形式删除隔间

select drop_compartment_byName(
        policy_name,
        comp_num
);
参数解释
policy_name 隔间所属的策略名。
comp_num 隔间名的数字形式,在所属策略下必须唯一。

使用缩写形式删除隔间

select drop_compartment_byName(
        policy_name,
        short_name
);
参数解释
policy_name 隔间所属的策略名。
short_name 隔间名的缩写形式,在所属策略下必须唯一。

注解

如果该隔间已经存在于某个合法的安全标记中,则它不能被删除。

修改安全标记

select alter_label_byTag(
        policy_name,
        label_tag,
        new_label_values,
        data_label
);
参数解释
policy_name 隔间所属的策略名。
label_tag 安全标记的数字形式。
new_label_values 新的安全标记对应的字符串。
data_label TRUE表示该Label可以成为数据行的label, FALSE表示不可以。

注解

只能修改安全标记对应的字符串,其数字形式不能修改。一旦对应的字符串被修改之后,系统中原来的拥有该安全标记的数据行的安全标记也随之修改。

回收用户标签

select revoke_user_labels(
        policy_name,
        user_name
);
参数解释
policy_name 隔间所属的策略名。
user_name 用户名称。

由安全标记的数字形式获得其字符串

select label_to_char(
        label_tag
);
参数解释
label_tag 安全标记的数字形式。

由安全标记的字符串获得其数字形式

select char_to_label(
            policy_name,
            label_values
    );
参数解释
policy_name 隔间所属的策略名。
label_values 安全标记对应的字符串。