该可选的 SECURITY POLICY 子句可用以下语法来删除当前与该表相关联的安全策略或给没有安全策略的表关联一个安全策略。
元素 |
描述 |
限制 |
语法 |
policy
|
安全策略的名称 |
必须是保护该表的安全策略 |
标识符
|
只有 DBSECADM 可以使用此语句向现有表添加安全策略,或移除当前保护该表的安全策略。
ALTER TABLE 语句不能向由 CREATE EXTERNAL TABLE 语句定义的表中添加安全策略。
以下准则适用于执行 ALTER TABLE 语句 ADD SECURITY POLICY 子句进行保护的表:
- 除非表具有与其相关联的安全策略或表具有任一被保护的行,否则该表未受到保护。前一种情况说明该表是拥有行级别粒度的受保护的表,后一种情况说明该表是拥有列级别粒度的受保护的表。
- 如果该表没有与它关联的安全策略,那么使用 ALTER TABLE ... ADD 语句向现有表中添加 IDSSECURITYLABEL 列保护行的操作失败。
- 如果该表没有与它关联的安全策略,则保护列的 ALTER TABLE ... MODIFY ... COLUMN SECURED WITH 子句失败。
- 一个表最多可以拥有一个安全策略。如果该表已有安全策略,则 ALTER TABLE ... ADD SECURITY POLICY 语句失败。
- 表可用于多个受保护的列。每个受保护的列库具有不同的安全标签或某些受保护的列共享同一安全标签。
- 不能使用此子句向临时表或在当前数据库之外的表中添加安全策略。
- 一个表只能拥有最多一个 IDSSECURITYLABEL 类型的列。
- IDSSECURITYLABEL 列不能拥有列保护。
- IDSSECURITY LABEL 列不能拥有单列约束或不能是多列引用约束或检查约束的一部分。
- IDSSECURITYLABEL 列不能被加密。
- IDSSECURITYLABEL 列有隐式 DEFAULT NOT NULL 约束。列缺省值是用户写入存取安全标签的值。
- DBSECADM 不能删除 IDSSECURITYLABEL 列。必须持有一般 CONNECT 、RESOURCE 和 ALTER 存取权限才能删除该列。
- ALTER TABLE 语句不能修改 IDSSECURITYLABEL 列。
- 如果以下任何条件为真,则向受保护分片中添加分片的操作失败:
- 如果源表和目标表没有使用相同的安全策略进行保护;
- 如果表不具有相同的保护粒度;
- 如果表受保护的列的设置不同,由同一安全标签保护。
有关使用 ALTER FRAGMENT 语句向受保护的表中连接分片的更多信息,请参阅ATTACH 子句的其他限制 。
- 拆离受保护表的分片以创建一个新的表,该表的拥有相同的安全策略,相同的行安全标签列且受保护列的设置也相同。
如果 DROP SECURITY POLICY 子句执行成功,则它会产生以下影响:
-
除非表具有与其相关联的安全策略或表具有任一被保护的行,否则该表未受到保护。前一种情况说明该表是拥有行级别粒度的受保护的表,后一种情况说明该表是拥有列级别粒度的受保护的表。
- 如果该表没有与它关联的安全策略,那么使用 ALTER TABLE ... ADD 语句向现有表中添加 IDSSECURITYLABEL 列保护行的操作失败。
- 如果该表没有与它关联的安全策略,则保护列的 ALTER TABLE ... MODIFY ... COLUMN SECURED WITH 子句失败。
- 当表的安全策略被删除时(通过 ALTER TABLE DROP SECURITY POLICY 语句),IDSSECURITYLABEL
列也会自动被删除。如果该表拥有一个或多个保护的,则这些列变为不受保护。
不要将 ALTER table 语句的 DROP SECURITY POLICY 子句与 DROP SECURITY POLICY 语句混淆。
- 当 ALTER TABLE 语句的 DROP SECURITY POLICY 子句执行成功时,它终止了表与安全策略的关联,删除IDSSECURITYLABEL
列,并将表中受保护的数据的 LBAC 保护删除。然而,对于安全策略或被该策略保护的其它表,它没有影响。
- 当 DROP SECURITY POLICY 语句执行成功是,它的影响依赖于该策略是以 RESTRICT 方式或 CASCADE
方式删除,但是在任一种方式中,它终止了指定的策略。更多有关 SQL 的 DROP SECURITY POLICY 语句的信息和其限制信息,请参阅 DROP SECURITY 语句 的描述。