ALTER TRUSTED CONTEXT 语句

使用 ALTER TRUSTED CONTEXT 语句修改上下文受信任的对象的当前选项和属性(包括 ENABLED 或 DISABLED 方式)。

此语句是 SQL 语言 ANSI/ISO 标准的扩展。

语法

Authorized User 子句

元素 描述 限制 语法
address 客户机与数据库服务器之间的通信地址 对于此可信上下文对象的客户端通信地址必须唯一。有关其它的 address 限制,请参阅下文中的 ADDRESS 属性 用引号括起的字符串
context 可信上下文对象的名称 必须存在于数据库服务器实例的可信上下文中且不能以字符 SYS 开头 标识符
role 现有的用户定义或内置角色 在数据库中必须存在,且在可信上下文对象的属性中必须唯一 所有者名称
user 用户的授权标识符 必须是有效的授权标识符。不能超过 32 字节。不能是发出此语句的用户的授权 ID 。 REPLACE USE FOR 子句不能指定该用户多次。 所有者名称

用法

您必须持有数据库安全管理员(DBSECADM)角色才能运行此语句。如果该语句被嵌入一个应用程序中,则权限是这些程序的所有者。如果此语句以可信上下文的角色运行,则该组权限是这些自由访问特权的结合:
  • 该角色持有的权限组与主身份验证 ID 相关联,
  • 此语句引用的每个角色都持有该权限组。
当 ALTER TRUSTED CONTEXT 语句执行成功后,该可信上下文对象的任何更改(它的属性、它的授权用户列表)会注册于 GBase 8s 数据库服务器实例的 sysuser 数据库的这些表中:
  • systrustedcontext
  • systcxattributes
  • systcxusers

ADDRESS 属性

在定义可信上下文对象时,ALTER ATTRIBUTES 、ADD ATTRIBUTES 和 DROP ATTRIBUTES 选项可以指定一个或多个通信地址列表以连接数据库服务器,它们的状态可作为连接可信属性。下列限制适用于 ALTER TRUSTED CONTEXT 或 CREATE TRUSTED CONTEXT 语句引用的通信地址:
  • 在该可信上下文对象的客户机通信地址中,每个地址必须唯一。
  • 每个地址必须符合 TCP/IP 协议。
  • 每个地址必须是 IPv4 地址、 IPv6 地址或安全域名称。
  • IPv4 地址或 IPv6 地址必须是真实的主机地址(不是本地主机),且不能包含空格键。
  • 此外,IPv6 地址不能是 IPv4 映射的 IPv6 地址。
  • 安全域额名称不能是动态主机配置协议(DHCP)地址。

如果新的 address 值是安全域的名称,则该名称被域名服务器(决定产生的地址为 IPv4 或 IPv6 地址)转换为 IP 地址。当域名转换为 IP 地址时,该转换的结果可能是一个或多个 IP 地址。在这种情况下,如果从连接源发起的 IP 地址与域名转换的 IP 地址匹配,则数据库服务器解释传入的连接请求作为作为符合可信上下文对象的 ADDRESS 属性。

ALTER ATTRIBUTES 子句将指定的属性的现有值替换为新的值。如果属性不是当前可选上下文对象的一部分,则返回一个错误。未指定的属性仍保留先前的值。

可信上下文对象指定的 ADDRESS 值可通过 ALTER ATTRIBUTES 子句和 DROP ATTRIBUTES 子句删除。 ADDRESS 属性可被指定多次,但是每个 address 值在属性组中必须唯一。

ADD ATTRIBUTES 子句为该定义的可信上下文对象指定一个或多个可信属性列表。

DROP ATTRIBUTES 子句指定从可信上下文对象的定义中删除一个或多个属性。如果该属性不是当前可信上下文对象定义的一部分,则返回错误。

注意:

如果您现有的应用程序使用 ALTER TRUSTED CONTEXT 语句,且在 ATTRIBUTES 子句中包含 ENCRYPTIONWITH ENCRYPTION 选项,则数据库服务器不会发出 SQL 错误。然而,除此之外,对于 WITH ENCRYPTION 'NONE'ENCRYPTION 'NONE' 关键字选项,ALTER TRUSTED CONTEXT 语句的加密选项在 GBase 8s 数据库服务器中不支持。

DEFAULT ROLE 属性

ALTER 子句的 DEFAULT ROLE role 选项标识在现有数据库服务器中已经存在的角色。该角色可以被不具有定义为可信上下文对象定义的一部分的用户指定的角色的用户使用。

NO DEFAULT ROLE 关键字指定可信上下文对象没有缺省角色。

如果此可信上下文的可信连接是活动的,则 DEFAULT ROLE 属性的变更在下一个请求新连接时或下一个更换用户请求时生效。

ALTER 子句的 ENABLE 和 DISABLE 选项

ENABLE 属性指示可信上下文对象处于启用状态。

DISABLE 属性指示可信上下文对象处于禁用状态,且对于新建立的可信连接禁用。

您不能使用 SET Database Object Mode 语句更改可信上下文的 ENABLE 或 DISABLE 属性。

ADD USE FOR 子句

ADD USE FOR 子句指定其它可建立基于此可信上下文对象的可信连接的用户。 PUBLIC 属性指示基于此可信上下文对象的可信连接可被任何用户使用。

PUBLIC 属性必须不能被指定为可信上下文对象的属性,且在 ADD USE FOR 子句中只能指定一次 PUBLIC 。如果可信上下文对象的定义允许被 PUBLIC 存取且还可被一个或多个用户存取,则用户规范重写此 PUBLIC 规范。

REPLACE USE FOR 子句

REPLACE USE FOR 子句指定更改使用此可信上下文对象的指定用户或 PUBLIC 组。当您使用 REPLACE USE FOR 子句 PUBLIC 时,该可信上下文对象必须已经被定义为允许 PUBLIC 使用,且 PUBLIC 在 REPLACE USE FOR 子句中只能指定一次。

REPLACE USE FOR 可以指定不同的角色名称,它必须是数据库服务器定义的角色。如果缺省角色与当前的可信上下文相关联,则可为用户明确指定角色以代替缺省的角色。

REPLACE USE FOR 子句还能更改当前的要求授权的用户或 PUBLIC 组。

AUTHENTICATION 属性

REPLACE USE FOR 和 ADD USE FOR 子句可以指定基于此可信上下文对象可信连接的授权要求。缺省的是WITHOUT AUTHENTICATION 。

WITH AUTHENTICATION 属性指定将当前基于此可信上下文对象的连接的用户变更为该用户需要授权。

WITHOUT AUTHENTICATION 属性指定更改当前用户不需要授权。

DROP USE FOR 子句

DROP USE FOR 子句指定不能再使用该可信上下文对象的用户。这些从可信上下文的定义中删除的用户是当前允许使用该可信上下文对象的用户。如果一个或多个,不是全部用户可从可信上下文定义中删除,则指定的用户被删除且返回警告。如果没有指定的用户可以从可信上下文的定义中删除,则返回错误。

如果您对 DROP USE FOR 子句使用 PUBLIC,它移除所有用户(除了 SYSTEM AUTHID 用户 ID 和其他标识符已经显式启用的用户)使用此可信上下文对象的能力。

修改可信上下文的示例

在以下示例中,假设该可信上下文对象 appserver 存在并启用。以下的 ALTER TRUSTED CONTEXT 语句将 appserver 可信上下文对象的对象方式重置为 DISABLE。当其处于该方式时,appserver 可信上下文仍然存在,但是它不能用于存取数据库服务器。
   ALTER TRUSTED CONTEXT appserver
          DISABLE;
        
下列示例中,假设该可信上下文对象 secure_role 存在。发出 ALTER TRUSTED CONTEXT 语句更改现有用户joe 需要授权才能使用此可信上下文对象并给其它用户添加不用授权即可适应此可信上下文对象的权限。
   ALTER TRUSTED CONTEXT securerole
          REPLACE USE FOR joe WITH AUTHENTICATION
          ADD USE FOR PUBLIC WITHOUT AUTHENTICATION;
以下示例修改了该可信上下文对象 securerole 使用 IPv4 地址,此地址与最初定义使用的地址不同。
   ALTER TRUSTED CONTEXT securerole
          ALTER ATTRIBUTES (ADDRESS '9.12.155.200');
1 该路径只能使用一次