CREATE SECURITY POLICY 语句

CREATE SECURITY POLICY 语句可定义安全策略。

调用

此语句可嵌入应用程序中或者以交互方式发出。 它是一个可执行语句,仅当 DYNAMICRULES 运行行为对于程序包有效时才能动态编译 (SQLSTATE 42509)。

权限

该语句的授权标识所拥有的特权必须包括 SECADM 权限。

语法

Read syntax diagramSkip visual syntax diagramCREATE SECURITY POLICYsecurity-policy-name COMPONENTS ,component-name WITH DB2LBACRULESOVERRIDE NOT AUTHORIZED WRITE SECURITY LABELRESTRICT NOT AUTHORIZED WRITE SECURITY LABEL

描述

security-policy-name
命名安全策略。 这是一个单部分名称。 该名称不能标识当前服务器上的现有安全策略 (SQLSTATE 42710)。
COMPONENTS component-name,...
标识安全标签组件。 该名称必须标识当前服务器上已存在的安全标签组件 (SQLSTATE 42704)。 对于安全策略,不能多次指定同一个安全组件 (SQLSTATE 42713)。 为安全策略指定的安全标签组件不能超过 16 个 (SQLSTATE 54062)。
WITH DB2LBACRULES
指示在比较属于此安全策略的安全标签时要使用的规则集。 当前只有一个规则集:DB2LBACRULES。
OVERRIDE NOT AUTHORIZED WRITE SECURITY LABEL RESTRICT NOT AUTHORIZED WRITE SECURITY LABEL
指定当用户无权编写明确指定的安全标签(在针对受此安全策略保护的表发出的 INSERT 或 UPDATE 语句中提供)时要执行的操作。 用户的安全标签和豁免凭证决定了用户编写明确提供的安全标签的权限。 缺省值为“OVERRIDE NOT AUTHORIZED WRITE SECURITY LABEL”。
OVERRIDE NOT AUTHORIZED WRITE SECURITY LABEL
指示用户安全标签(而不是明确指定的安全标签)的值将用于在 INSERT 或 UPDATE 操作期间的写访问。
RESTRICT NOT AUTHORIZED WRITE SECURITY LABEL
指示当用户无权编写 INSERT 或 UPDATE 语句中明确提供的安全标签 (SQLSTATE 42519) 时,INSERT 或 UPDATE 操作将失败。

注意

  • DB2LBACRULES 规则集:DB2LBACRULES 是一组预定义的规则,包括以下规则:DB2LBACREADARRAY、DB2LBACREADSET、DB2LBACREADTREE、DB2LBACWRITEARRAY、DB2LBACWRITESET、DB2LBACWRITETREE。
  • 创建安全策略时,缺省情况下不考虑组和角色授权。 使用 ALTER SECURITY POLICY 语句更改此行为并考虑组和角色授权。

示例

  • 示例 1:创建一个名为 DATA_ACCESS 的安全策略,该策略使用 DB2LBACRULES 规则集并依次包含以下两个组件:LEVEL 和 COMPARTMENTS。 假设已存在这两个组件。
       CREATE SECURITY POLICY DATA_ACCESS
         COMPONENTS LEVEL, COMPARTMENTS
         WITH DB2LBACRULES
  • 示例 2:创建一个名为 CONTRIBUTIONS 的安全策略,其中包括组件 MEMBER 和 BADGE(假设已存在)。
       CREATE SECURITY POLICY CONTRIBUTIONS
         COMPONENTS MEMBER, BADGE
         WITH DB2LBACRULES