ALTER TRUSTED CONTEXT 语句

ALTER TRUSTED CONTEXT语句修改当前服务器上可信环境的定义。

调用 ALTER TRUSTED CONTEXT

此语句可嵌入应用程序中或者以交互方式发出。 这是一个可执行语句,只有在DYNAMICRULES RUN行为生效时才能动态准备。 更多信息,请参阅授权ID和动态SQL

授权 ALTER TRUSTED CONTEXT

以下定义的特权套装必须至少包含以下一项:
  • SYSADM 权限
  • SECADM 权限

权限集: 如果该语句嵌入在应用程序中,则权限集是计划或包的所有者所拥有的权限的集合。

如果语句是动态准备的,则权限集是进程的每个授权ID所拥有的权限集的并集。 如果语句在可信环境中以角色运行,则权限集是与主授权ID关联的角色所拥有的权限集与进程的每个授权ID所拥有的权限集的并集。

语法 ALTER TRUSTED CONTEXT

阅读语法图跳过可视化语法图ALTER TRUSTED CONTEXT上下文名称 1ALTERSYSTEM AUTHID授权名称NO DEFAULT ROLEDEFAULT ROLE角色名称WITHOUT ROLE AS OBJECT OWNERWITH ROLE AS OBJECT OWNERAND QUALIFIERENABLEDISABLENO DEFAULT SECURITY LABELDEFAULT SECURITY LABELseclabel-名称ATTRIBUTES2(,ADDRESS地址值ENCRYPTION加密值3SERVAUTH服务价值JOBNAME职位名称-价值45)ADD ATTRIBUTES(,ADDRESS地址值SERVAUTH服务价值JOBNAME职位名称-价值45)DROP ATTRIBUTES(,ADDRESS地址值SERVAUTH服务价值JOBNAME职位名称-价值45)用户条款
注意:
  • 1 这些条款可以以任何顺序排列。 每个条款不得重复出现。
  • 2 本条款和后续条款的顺序可以任意调整。 每个条款不得重复出现。
  • 3 加密不能指定多次。
  • 4 不能将工作名称与地址、加密或 SERVAUTH 一起指定。
  • 5 属性名称和对应值必须唯一。

用户条款:

阅读语法图跳过可视化语法图ADD USE FOR,授权名称使用选项EXTERNAL SECURITY PROFILE个人资料名称使用选项PUBLICWITHOUT AUTHENTICATIONWITH AUTHENTICATIONREPLACE USE FOR,授权名称使用选项EXTERNAL SECURITY PROFILE个人资料名称使用选项PUBLICWITHOUT AUTHENTICATIONWITH AUTHENTICATIONDROP USE FOR,授权名称EXTERNAL SECURITY PROFILE个人资料名称PUBLIC

使用选项:

阅读语法图跳过可视化语法图ROLE角色名称SECURITY LABELseclabel-名称WITHOUT AUTHENTICATIONWITH AUTHENTICATION

描述 ALTER TRUSTED CONTEXT

上下文名称
确定要更改的可信上下文。 context-name 必须引用当前服务器上存在的可信上下文。
ALTER
指定对现有可信环境的定义进行更改。
SYSTEM AUTHID 授权名称
指定授权名称为可信上下文的系统授权ID。 系统授权标识是建立连接的 Db2 系统的主要授权标识。 对于远程连接,授权ID来自外部实体(如中间件服务器)提供的系统使用ID。 对于本地连接,系统授权标识是根据来源得出的, 如表 1 所示。
表 1. 本地连接的系统授权ID
本地连接源 系统授权标识
开始任务(RRSAF) JOB语句中的USER参数或 RACF® USER。
TSO TSO登录ID
BATCH JOB语句中的USER参数
授权名称不能与现有的可信上下文相关联。
NO DEFAULT ROLEDEFAULT ROLE 角色名称
指定默认角色是否与基于指定可信上下文的可信连接相关联。 如果指定上下文下的可信连接处于活动状态,则更改将在下次尝试重新连接或请求新连接时生效。
NO DEFAULT ROLE
指定可信上下文没有默认角色。 进程的授权ID是使用基于此信任上下文的可信连接创建的任何对象的所有者。 该授权ID必须拥有创建该对象所需的所有权限。
DEFAULT ROLE 角色名称
指定角色名称为可信上下文的角色。 角色名称必须标识当前服务器上存在的角色。 当用户没有作为此信任环境定义的一部分而定义的用户指定角色时,此角色将在基于指定信任环境的可信连接中与用户一起使用。
WITHOUT ROLE AS OBJECT OWNER 或者 WITH ROLE AS OBJECT OWNER AND QUALIFIER
指定角色是否作为使用基于指定可信上下文的可信连接创建的对象的所有者。 如果指定上下文下的可信连接处于活动状态,则更改将在下次尝试重新连接或请求新连接时生效。
WITHOUT ROLE AS OBJECT OWNER
指定一个角色不能作为使用基于指定可信上下文的可信连接创建的对象的所有者。 进程的授权ID是任何使用基于此信任上下文的可信连接创建的对象的所有者。 该授权ID必须拥有创建对象所需的所有权限。

默认情况下,不担任物品所有者。

WITH ROLE AS OBJECT OWNER AND QUALIFIER
指定上下文分配的角色是使用基于此可信上下文的可信连接创建的对象的所有者。 这个角色必须拥有创造对象所需的一切特权。 上下文分配的角色是指在此可信上下文中为用户定义的角色(如果定义了)。 否则,该角色就是与可信上下文关联的默认角色。 该角色还用作任何已签发的授权声明的授权人,以及任何已签发的撤销声明的撤销人,这些声明均使用基于此信任上下文的可信连接。
AND QUALIFIER
指定角色名称将作为当前模式特殊寄存器的默认值。 角色名称也将包含在SQL路径中(代替当前的SQLID)。

WITH ROLE AS OBJECT OWNER AND QUALIFIER 未指定时,不会更改当前模式特殊寄存器和SQL路径的默认值。

DISABLE 或者 ENABLE
指定可信环境是处于启用还是禁用状态。
DISABLE
指定禁用可信环境。 当建立可信连接时,不会考虑已禁用的可信环境。
ENABLE
指定启用可信环境。
NO DEFAULT SECURITY LABELDEFAULT SECURITY LABELseclabel-name
指定默认安全标签是否与基于此信任上下文的可信连接相关联。 如果指定上下文下的可信连接处于活动状态,则更改将在下次尝试重新连接或请求新连接时生效。
NO DEFAULT SECURITY LABEL
指定可信环境没有默认的安全标签。
DEFAULT SECURITY LABEL seclabel-名称
指定seclabel-name 为可信上下文的默认安全标签。 seclabel-name 是用于多级安全验证的安全标签。 seclabel-name 必须标识为 SYSTEM AUTHID 定义的 RACF SECLABEL 值之一。 当用户没有定义特定安全标签作为此信任环境的一部分时,此安全标签用于基于指定信任环境的信任连接。 在这种情况下, seclabel-name 还必须标识为用户定义的 RACF SECLABEL值之一。
ALTER ATTRIBUTES 或者 ADD ATTRIBUTES
指定一个或多个连接信任属性的列表,以更改或添加至可信上下文的定义中。 连接信任属性用于定义信任环境。 如果指定了“更改属性”,而该属性当前不属于指定可信上下文的定义范围,则将返回错误。 如果指定了ALTER,则指定属性的现有规格将更改为新值。 未指定的属性将保留之前指定的值。
ADDRESS 地址值
指定连接与数据库管理器通信时使用的实际通信地址。 协议仅支持TCP/IP。 指定 ALTER ATTRIBUTES 时,之前指定的 ADDRESS 值将被删除。 地址属性可以多次指定,但每个地址值必须唯一。

在建立可信连接时,如果为可信上下文中的地址属性定义了多个值,则如果连接使用的地址与可信上下文中的地址属性定义的任何值匹配,则候选连接被视为与该属性匹配。

address-value 指定一个包含与 ADDRESS 信任属性相关联的值的字符串常量。 地址值必须为长度不超过254字节的 IPv4 地址、 IPv6 地址或安全域名。 在处理ALTER TRUSTED CONTEXT语句时,不对地址值进行验证。 地址值必须在字符串常量中靠右对齐。

  • IPv4 地址以点分十进制表示。 IPv4 地址示例: 9.112.46.111。
  • IPv6 地址以冒号十六进制地址表示。 IPv6 地址示例: 2001:0DB8:0000:0000:0008:0800:200C:417A。 该地址也可以压缩形式表示为 2001:DB8::8:800:200C:417A。
  • 域名由域名服务器转换为 IP 地址,从而确定生成的 IPv4 或 IPv6 地址。 例如,域名 www.ibm.com。 gethostbyname套接字调用用于解析域名。
ENCRYPTION 加密值
指定连接的数据流(网络加密)的最低加密级别。

加密值指定一个包含与加密信任属性相关联的值的字符串常量。 加密值必须在字符串常量中靠右对齐。 声明中加密的指定不能超过一次。 加密值必须为以下之一:

  • NONE,表示无需特定加密级别。
  • LOW,表示需要最低限度的光加密。 LOW对应64位DRDA加密。
  • HIGH,表示需要高强度加密。 “高”对应SSL加密。

如果指定了添加属性,则无法指定加密。 有关加密属性的更多信息,请参阅 CREATE TRUSTED CONTEXT语句

JOBNAME 职位名称-价值
为本地应用程序指定 z/OS® 工作名称或已启动任务名称(取决于地址空间的来源)。 当指定了ALTER ATTRIBUTES时,之前指定的JOBNAME值将被删除。 JOBNAME属性可以被多次指定,但每个作业名称-值必须唯一。

jobname-value 指定一个包含与 JOBNAME 信任属性相关联的值的字符串常量。 jobname-value 是EBCDIC 8字节作业名称或已启动任务名称。 jobname-value 必须在字符串常量中靠右对齐。 如果名字的第一个字符是字母,则最后一个字符可以是通配符(*)。 如果作业名称以通配符结尾,则任何与指定字符匹配的作业名称都会被考虑用于建立可信连接。

下表列出了根据地址空间来源可能的工作名称值。

表 2. 本地连接的工作名称
地址空间的来源 作业名
RRSAF 工作名称或开始的任务名称
TSO TSO登录ID
BATCH 工作说明中的职位名称
SERVAUTH 服务价值
在 RACF SERVAUTH类中指定资源的名称。 此资源是网络访问安全区域名称,包含用于与 Db2 通信的连接的 IP 地址。 当指定了ALTER ATTRIBUTES时,之前为SERVAUTH指定的值将被删除。 SERVAUTH属性可以被多次指定,但每个servauth-value 必须唯一。

servauth-value 指定一个包含与 SERVAUTH 信任属性相关联的值的字符串常量。 servauth-value 是EBCDIC 64字节的 RACF SERVAUTH CLASS资源名称。 servauth-value 必须在字符串常量中靠右对齐。 在处理ALTER TRUSTED CONTEXT语句时,不对 servauth-value 进行验证。

DROP ATTRIBUTES
指定从可信上下文的定义中删除一个或多个属性。 如果当前未将属性指定为可信上下文定义的一部分,则返回错误。 DROP ATTRIBUTES的规范不得试图删除可信上下文的所有现有属性。
ADDRESS 地址值
指定从可信上下文的定义中删除已识别的通信地址。 address-value 指定一个包含现有 ADDRESS 信任属性值的字符串常量。
JOBNAME 职位名称-价值
指定从可信上下文的定义中删除已识别的工作名称。 jobname-value 指定一个包含现有 JOBNAME 信任属性值的字符串常量。
SERVAUTH 服务价值
指定从可信上下文定义中删除的已识别服务。 servauth-value 指定一个包含现有 SERVAUTH 信任属性值的字符串常量。
ADD USE FOR
指定其他可以使用基于指定可信上下文的可信连接的用户。
授权名称
指定可信连接可由指定的授权名称使用。 这是 Db2 主授权ID。 授权名称不得与已定义为使用可信上下文的授权 ID 相同,且在 ADD USE FOR 子句中不得指定多次。
ROLE 角色名称
指定角色名称是指当指定授权名称使用可信连接时所使用的角色。 角色名称必须标识当前服务器上存在的角色。 明确为用户指定的角色将覆盖与可信上下文关联的任何默认角色。
SECURITY LABEL seclabel-名称
指定当指定的授权名称使用可信连接时, 安全标签名称是用于多级安全验证的安全标签。 seclabel名称必须是为用户定义的 RACF SECLABEL值之一。 明确为用户指定的安全标签将覆盖与可信上下文关联的任何默认安全标签。
EXTERNAL SECURITY PROFILE 个人资料名称
指定允许使用 RACF 中指定配置文件名称的 Db2 主要授权ID使用可信连接。 profile-name 不能已定义为使用可信上下文,且不能在 ADD USE FOR 子句中。 如果授权ID允许使用多个指定的配置文件名称 ,则如果用户身份验证满足身份验证定义,则可以为配置文件名称指定的角色与流程相关联。 此角色可以拥有流程中可用的附加权限。

在您指定外部安全配置文件后,任何有权访问 RACF 配置文件的用户都可以使用可信环境,此外,任何使用 ADD USE FOR 授权名称条款。

ROLE 角色名称
指定角色名称是指当任何授权ID使用 RACF 中允许使用的指定配置文件名称时所使用的角色。 角色名称必须标识当前服务器上存在的角色。 明确指定的角色将覆盖与可信上下文关联的任何默认角色。
SECURITY LABEL seclabel-名称
指定安全标签名称为多层安全验证的安全标签,当任何授权ID使用 RACF 中允许使用的指定配置文件名称时,该安全标签用于多层安全验证。 seclabel名称必须是为用户定义的 RACF SECLABEL值之一。 明确指定给配置文件的安全标签将覆盖与可信上下文关联的任何默认安全标签。
PUBLIC
指定任何用户都可以使用基于指定可信上下文的可信连接。 PUBLIC 不能被定义为使用可信上下文,且不能在 ADD USE FOR 子句中。

所有使用以“PUBLIC”定义的可信连接的用户,都使用与相关可信上下文的默认角色关联的权限。 如果未为可信环境定义默认角色,则使用基于指定可信环境的可信连接的用户将没有关联角色。

如果定义了可信上下文的默认安全标签,则所有使用可信上下文的用户必须将安全标签定义为用户 RACF SECLABEL值之一。 默认安全标签用于对所有使用可信环境的用户进行多级安全验证。

用户的规格按以下优先顺序确定:

  • 授权名称
  • 外部安全配置文件 配置文件名
  • PUBLIC

例如,假设一个可信环境被定义为:JOE WITH AUTHENTICATION、EXTERNAL SECURITY PROFILE SPROFILE WITHOUT AUTHENTICATION(允许JOE和SAM使用 RACF PROFILE SPROFILE)和PUBLIC WITH AUTHENTICATION。 如果JOE使用了可信连接,则需要验证。 如果SAM使用可信连接,则无需进行身份验证。 但是,如果SALLY使用可信连接,则需要验证。

REPLACE USE FOR
指定更改为指定用户或PUBLIC,以允许谁使用可信环境。
授权名称
指定为使用可信环境而更改的授权名称。 必须已经定义了可信上下文,以便通过授权名称进行使用,并且授权名称在 REPLACE USE FOR 子句中不能指定多次。 授权名称相关的信息已按指示更改。
ROLE 角色名称
指定角色名称是指当可信连接使用指定的可信上下文时使用的角色。 角色名称必须标识当前服务器上存在的角色。 明确为用户指定的角色将覆盖与可信上下文关联的任何默认角色。
SECURITY LABEL seclabel-名称
指定当指定的授权名称使用可信连接时, 安全标签名称是用于多级安全验证的安全标签。 seclabel名称必须是为用户定义的 RACF SECLABEL值之一。 明确为用户指定的安全标签将覆盖与可信上下文关联的任何默认安全标签。
EXTERNAL SECURITY PROFILE 个人资料名称
指定要更改属性的配置文件名称 ,以便使用可信连接。 必须已定义可信上下文,才能使用配置文件名称配置文件名称不能在 REPLACE USE FOR 条款。 个人资料名称相关的信息已按指示更改。
ROLE 角色名称
指定角色名称是指当任何授权ID使用 RACF 中允许使用的指定配置文件名称时所使用的角色。 角色名称必须标识当前服务器上存在的角色。 明确指定的角色将覆盖与可信上下文关联的任何默认角色。
SECURITY LABEL seclabel-name
指定安全标签名称为多层安全验证的安全标签,当任何授权ID使用 RACF 中允许使用的指定配置文件名称时,该安全标签用于多层安全验证。 seclabel名称必须是为用户定义的 RACF SECLABEL值之一。 明确为用户指定的安全标签将覆盖与可信上下文关联的任何默认安全标签。
PUBLIC
指定要更改PUBLIC使用可信连接的属性。 PUBLIC必须已经定义为使用可信上下文,且在REPLACE USE FOR子句中不能指定PUBLIC多次。

所有使用以“PUBLIC”定义的可信连接的用户,都使用与相关可信上下文的默认角色关联的权限。 如果未为可信环境定义默认角色,则使用基于指定可信环境的可信连接的用户将没有关联角色。

如果定义了可信上下文的默认安全标签,则所有使用可信上下文的用户必须将安全标签定义为用户 RACF SECLABEL值之一。 默认安全标签用于对所有使用可信环境的用户进行多级安全验证。

WITHOUT AUTHENTICATION 或者 WITH AUTHENTICATION
指定使用可信连接是否需要用户认证。
WITHOUT AUTHENTICATION
指定用户无需认证即可使用可信连接。 默认情况下,不进行身份验证。
WITH AUTHENTICATION
指定使用可信连接需要使用带有授权ID的身份验证令牌来验证用户身份。
DROP USE FOR
指定谁不能再使用可信上下文。 从可信环境定义中移除的用户是指当前被允许使用可信环境的指定用户(或PUBLIC)。 如果指定删除多个用户,而其中有一个或多个用户无法删除,则删除可以删除的用户,并返回警告。 如果无法从可信上下文的定义中删除指定的用户,则返回错误。
授权名称
指定不再能够使用此信任上下文的授权名称
EXTERNAL SECURITY PROFILE 个人资料名称
删除指定配置文件名使用可信上下文的能力。
PUBLIC
指定公共用户将不再能够使用此信任环境。 已明确启用的系统授权ID和个人授权ID仍可使用可信环境。

更改信任环境的注意事项

授权名称和身份验证要求的优先级 :如果 SYSTEM AUTHID 子句中指定的授权名称ADD 或 REPLACE USE FOR 授权名称子句中指定的授权名称相同,则为授权名称指定的角色或安全标签优先于默认值和为 EXTERNAL SECURITY PROFILE 配置文件名称指定的值(如果指定了)。 如果允许 SYSTEM AUTHID 子句中指定的授权名称使用指定的配置文件名称之一,且未在授权名称的 ADD 或 REPLACE USE 中指定,则该配置文件名称指定的角色或安全标签优先于默认值。

如果“添加”或“替换使用”子句中指定了“认证”子句,或者子系统参数“TCP/IP 已验证”设置为“否”,则“系统认证”需要认证。 例如,如果授权名称与 SYSTEM AUTHID 子句中指定的授权名称相同,并且指定了 WITHOUT AUTHENTICATION 子句,但 TCP/IP Already Verified 子系统参数设置为 NO,则在建立远程可信连接时,SYSTEM AUTHID 需要认证。 如果授权名称为“系统身份验证”,且指定了“带验证”子句,但TCP/IP“已验证”子系统参数设置为“是”,则系统身份验证仍需进行身份验证。

可信连接用户的优先级 :用户的规格按以下优先级确定:

  • 授权名称
  • EXTERNAL SECURITY PROFILE 个人资料名称
  • PUBLIC

例如,假设一个可信环境被定义为“JOE WITH AUTHENTICATION”、“EXTERNAL SECURITY PROFILE SPROFILE WITHOUT AUTHENTICATION”和“PUBLIC WITH AUTHENTICATION”。 用户JOE和SAM可以使用 RACF 个人资料。 如果JOE使用了可信连接,则需要验证。 如果SAM使用可信连接,则无需进行身份验证。 但是,如果用户SALLY使用可信连接,则需要身份验证。

用户子句 SYSTEM AUTHID 注意事项 :如果 SYSTEM AUTHID 子句中指定的授权名称用户子句授权名称中指定的授权名称相同,则为授权名称指定的角色或安全标签优先于默认值。 允许使用为配置文件名称指定的值。 如果允许在 SYSTEM AUTHID 子句中指定的授权名称使用某个配置文件名称,且该名称未在授权名称中定义,则该配置文件名称指定的角色或安全标签优先于默认值。

如果 SYSTEM AUTHID 需要认证,无论是通过在用户子句中指定 AUTHENTICATION 子句,还是将 TCP/IP Already Verified 子系统参数的值设置为 NO,在建立远程可信连接时,认证要求优先。 例如,如果授权名称与为 SYSTEM AUTHID 指定的授权名称相同,并且指定了 WITHOUT AUTHENTICATION 子句,但 TCP/IP Already Verified 子系统参数设置为 NO,则在建立远程可信连接时,SYSTEM AUTHID 需要认证令牌。 如果授权名称为系统身份验证,且指定了“带验证”子句,但TCP/IP“已验证”子系统参数设置为“是”,则系统身份验证仍然需要一个验证令牌。

操作顺序 :ALTER TRUSTED CONTEXT语句中各条款的执行顺序如下:

  • 删除属性
  • 停止使用
  • ALTER
  • 添加属性
  • 添加用途
  • 替换用途

更改对现有可信连接的影响 :如果可信上下文存在可信连接,且该可信上下文被更改,则连接将继续使用未更改的可信上下文定义,直到连接终止或尝试重新使用。 如果禁用受信任的环境,而此时存在基于此受信任环境的活跃受信任连接,则这些连接将继续使用,直到终止或尝试重新使用。 如果信任属性发生改变,在信任环境改变时存在的信任连接将继续使用。

当可信环境发生变化时 :可信环境定义的更改在提交ALTER TRUSTED CONTEXT语句后生效。 如果 ALTER TRUSTED CONTEXT 语句导致错误或回滚,则不会更改受信任的上下文。

角色权限 :如果用户或可信上下文没有关联角色,则仅适用与用户关联的权限。 这等同于不使用可信的上下文。

例子 ALTER TRUSTED CONTEXT

示例1: 以下语句更新了可信上下文的默认角色 CTX1:
   ALTER TRUSTED CONTEXT CTX1
       ALTER DEFAULT ROLE CTXROLE2;
示例2: 以下语句更改了 CTX3 的信任环境,允许BILL使用,并将信任环境置于禁用状态:
   ALTER TRUSTED CONTEXT CTX3
        DISABLE
        ADD USE FOR BILL;
示例3: 以下语句更改了 CTX4 的信任环境,允许之前定义的用户JOE无需身份验证即可使用信任环境。 该语句还添加了带认证的PUBLIC和带SPLROLE角色的TOM:
   ALTER TRUSTED CONTEXT CTX4
      REPLACE USE FOR JOE WITHOUT AUTHENTICATION
      ADD USE FOR PUBLIC WITH AUTHENTICATION,
      TOM ROLE SPLROLE;
示例4: 以下语句将REMOTECTX更改为使用与最初定义不同的 IPv4 地址。 它还将加密设置从“无”更改为“低”。 在处理完ALTER语句后,只有当连接是通过 9.12.155.200 以低加密方式建立时,才会被视为可信连接。 如果连接来自之前定义的地址,则不再被视为可信连接:
   ALTER TRUSTED CONTEXT REMOTECTX
      ALTER ATTRIBUTES (ADDRESS '9.12.155.200',
                        ENCRYPTION 'LOW');