强制访问控制修改删除部分¶
设置用户权限¶
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 char_to_label(
policy_name,
label_values
);
| 参数解释 | |
|---|---|
| policy_name | 隔间所属的策略名。 |
| label_values | 安全标记对应的字符串。 |