使用 CREATE SECURITY LABEL 语句在当前数据库中为指定的安全策略定义新的安全标签,并标
识其组件和组件名称。
该语句是 SQL ANSI/ISO 标准的扩展。
语法
用法
安全标签 是支持指定安全策略的已命名的数据库对象。安全标签可应用于用户,或当前数据库中表
的行或列(或者行和列)。当持有安全标签的用户尝试存取有安全标签的数据时,数据库服务器将
列或行的安全标签和用户的安全标签作为决定是否允许用户存取数据的考虑条件。
每个安全标签存储以下种类信息:
它标识标签支持的现有安全策略。
它标识至少一个,但不超过 16 个标签支持的安全策略的现有的组件。
它标识一个或多个安全标签的每个组件的现有的元素。(只有 SET 或 TREE 类型的安全
标签组件能在同一安全标签中包含多个元素。)
只有 DBSECADM 能发出此语句。当 CREATE SECURITY LABEL 语句执行成功,它会在
sysseclabels 系统目录表中注册指定的 label 名称,与安全 policy 关联的数字标识符,和它的安全
标签 components 的基数。
如果您包含可选的 IF NOT EXISTS 关键字,则当指定名称的安全标签已经在当前数据库中注册时,
数据库服务器不采取操作(而非向应用程序发送异常)。
安全标签的组件和元素
类似安全策略,一个安全标签必须拥有至少一个,但不超过 16 个的组件。CREATE SECURITY
LABEL 语句无法不是指定安全策略的组件的安全标签组件。同一 component 名称在 CREATE
SECURITY LABEL 语句中只能指定一次。这些组件必须已经存在于数据库中,由此 DBSECADM
可使用 CREATE SECURITY LABEL COMPONENT 语句注册它们。
安全标签组件可以是 ARRAY 、SET 或 TREE 类型,可在 CREATE SECURITY LABEL
COMPONENT 语句中描述。对于 ARRAY 类型的 component ,element 列表只能标识一个元素。
对于 SET 或 TREE 类型的组件,element 列表可以标识创建组件完成时(或其最后修改完毕后)
已定义的多个组件元素。有关安全标签组件的结构和语义的更多信息,请参阅 CREATE SECURITY
LABEL COMPONENT 语句。
以下示例为同一安全策略 MegaCorp 创建名为 label1 的安全标签 。该标签使用两个安全标签组件,
称为 levels 和 compartments 。每个组件有一个元素,分别称为 VP 和 Marketing :
CREATE SECURITY LABEL MegaCorp.label1
COMPONENT levels ‘VP’,
COMPONENT compartments ‘Marketing’;
要使该示例有效,则 levels 和 compartments 组件,以及它们的安全标签组件,VP 和 Marketing
元素,必须在先前执行的 CREATE SECURITY LABEL COMPONENT 语句中定义。
在下个示例中,DBSECADM 对同一 MegaCorp 安全策略创建了名为 label2 的安全标签 f。此标签使
用了三个标签组件,分别为 levels 、compartments 和 groups ,其中两个组件有一个元素,另一
个组件有两个元素:
CREATE SECURITY LABEL MegaCorp.label2
COMPONENT level ‘Director’,
COMPONENT compartments ‘HR’, ‘Finance’,
COMPONENT groups ‘EntireRegion’;
这些示例说明了安全标签的组件可以是其标签支持的安全策略的组件的子集,且多个安全标签可支
持同一安全策略。