使用 CREATE TRUSTED CONTEXT 语句定义新的可信上下文对象。该语句是
SQL 语言的 ANSI/ISO 标准的扩展。
您必须持有数据库安全管理员(DBSECADM)角色才能运行此语句。
语法
GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 492
Authorized User Clause
GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 493
元素
描述
限制
语法
address 客户端连接到
数据库服务器
的通信地址
在此互信上下文对象的客户端
的通信地址中必须是唯一的。
有关 address 其它的限制,请
参阅下面的 ADDRESS
attributes 。
引用字符串
context 此处为可信上
下文对象声明
的名称
在此数据库服务器示例的可信
上下文对象的名称中必须是唯
一的,并且不能以字符 SYS 开
头
标识符
role
现有的用户定
义的或内置的
角色
必须存在于当前数据库中,且
必须在此可信上下文对象的属
性中是唯一的
所有者名称
user
用户的授权标
识
必须是有效的身授权标识。不
能超过 32 字节。不能是发出
此语句的用户的授权 ID 。在
WITH USE FOR 子句中必须指定
多于一次。
所有者名称
用法
CREATE TRUSTED CONTEXT 语句用于创建可信上下文对象,它运行用户具有
可信连接。在 CREATE TRUSTED CONTEXT STATEMENT 中,每个
ATTRIBUTES 、DEFAULT ROLE 、ENABLE 和 WITH USE 子句可以指定多
次,每个属性名称和相应的值必须是唯一的。
USER 子句
USER 子句指定此 SQL 语句中创建的能建立上下文的系统授权 ID。此语句中的
USER 子句只对 GBase 8s 数据库服务器有效,USER 关键字等价于 BASED
UPON CONNECTION USING SYSTEM AUTHID 关键字,在 DB2 的 CREATE
TRUSTED CONTEXT 语句中是必需的。这六个关键字可指定 GBase 8s 和 DB2
数据库的系统授权 ID ,但是只有 GBase 8s 支持将 USER 关键字作为它们的同
义词。
GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 494
ADDRESS 属性
ATTRIBUTES 子句可以为定义可选上下文对象的数据库指定一个或多个通信地
址。以下限制应用于 ALTER TRUSTED CONTEXT 或 CREATE TRUSTED
CONTEXT 语句引用的通信地址:
每个地址必须在此可选上下文对象的通信地址中是唯一的。
每个地址都必须符合 TCP/IP 协议。
每个地址必须是 IPv4 地址、IPv6 地址或安全域名。
IPv4 地址或 IPv6 地址必须是真实的主机地址(不是本地主机),并且
不能包含空格。
此外,IPv6 地址不能是 IPv4 映射的 IPv6 地址。
安全域名不能是动态主机配置协议(DHCP)地址。
如果 address 值是安全域的名称,此名称通过域名服务器转换为 IP 地址,其中
确定产生 IPv4 或 IPv6 地址。当域名被转换为 IP 地址时,该转换的结果可能是
一个或多个 IP 地址集。在这种情况下,如果连接发起的 IP 地址与域名转换的
任何 IP 地址下匹配,则数据库服务器将传入连接请求解释为与可信上下文对象
的 ADDRESS 属性匹配。
此 ADDRESS 属性可以被多次指定,但是每对 address 对于属性集合必须是唯一
的。
注意:
如果您在 ATTRIBUTES 子句中具有包含 ENCRYPTION 或 WITH
ENCRYPTION 应用程序,则可以不管它们,而数据库服务器不会发出 SQL 错
误。但是,除了 WITH ENCRYPTION 'NONE' 和 ENCRYPTION 'NONE',
GBase 8s 数据库服务器不支持 CREATE TRUSTED CONTEXT 语句的这些加密
选项。
WITH USE FOR 子句
WITH USE FOR 子句指定该可信连接可以被指定的授权标识使用。同一 user 名
称只能在此子句中出现一次,允许由指定用户的列表或 PUBLIC 访问。
例如,假设可信上下文对象被定义为允许由 PUBLIC WITH AUTHENTICATION
和 joe WITHOUT AUTHENTICATION 访问。如果通过 joe 使用可信上下文,
GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 495
则不需要授权。但是,如果由 george 使用此可信上下文对象,它只能作为
PUBLIC 的成员访问,则需要授权。
WITH AUTHENTICATION 属性指定将基于此可信上下文对象的可信连接上的当
前用户切换到此用户需要授权。WITHOUT AUTHENTICATION 属性指定切换当
前用户不需要授权。用户的规范会覆盖 PUBLIC 的规范。
这些属性还会影响 ODBC、JDBC 或 ESQL/C 连接的客户端会话期间是否需要认
证,其中 SET SESSION AUTHORIZATION 语句在可信连接建立后尝试切换到其
它用户 ID 。
DEFAULT ROLE 属性
ROLE 对象指定使用可信连接时用户的角色(和特权)。DEFAULT ROLE 标识
存在于当前数据库中的角色,并且在当用户没有被定义为可信上下文对象定义的
一部分的用户指定角色时使用。NO DEFAULT ROLE 属性将指定没有缺省角色的
可信上下文对象。缺省为 NO DEFAULT ROLE。为用户显式指定的角色将覆盖与
可信上下文对象相关联的任何缺省角色。
ENABLE 和 DISABLE 关键字
ENABLE 关键字指定创建的可信上下文对象处于启用状态。
DISABLE 关键字指定创建的新的可信上下文对象处于禁用状态,并且对于已建立
的新的可信连接未启用。
您不能使用 SET Database Object Mode 语句更改可信上下文的 ENABLE 或
DISABLE 属性。如果您需要重置可信上下文的 ENABLED 或 DISABLED 模
式,则必须使用 ALTER TRUSTED CONTEXT 语句。
可信上下文定义的示例
示例 1: 创建可信环境对象,以便基于此可信环境对象的可信连接上的当前用户
可以切换到两个不同的用户 ID。当此连接的当前用户切换为 joe 时,不需要授
权。但是,当连接的当前用户切换为 bob 时,需要授权。注意可信上下文对象具
有称为 MANAGER 的缺省角色。 这意味着在此可信上下文对象范围内工作的用户
将继承与 MANAGER 角色关联的自由访问权。
CREATE TRUSTED CONTEXT appserver
USER wrjaibi
GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 496
DEFAULT ROLE MANAGER
ENABLE
ATTRIBUTES (ADDRESS '9.26.113.204')
WITH USE FOR joe WITHOUT AUTHENTICATION,
bob WITH AUTHENTICATION;
示例 2: 创建可信环境对象,以便基于此可信环境对象的可信连接的当前用户可
以切换到任何用户 ID ,而不进行认证。
CREATE TRUSTED CONTEXT securerole
USER pbird
ENABLE
ATTRIBUTES (ADDRESS 'example.ibm.com')
WITH USE FOR PUBLIC WITHOUT AUTHENTICATION;