CREATE TRUSTED CONTEXT 语句
CREATE TRUSTED CONTEXT语句定义了当前服务器上的可信环境。
调用 CREATE TRUSTED CONTEXT
此语句可嵌入应用程序中或者以交互方式发出。 这是一个可执行语句,只有在隐式或显式指定了DYNAMICRULES运行行为时,才能动态准备。
授权 CREATE TRUSTED CONTEXT
- SYSADM 权限
- SECADM 权限
权限设置:
如果语句嵌入到应用程序中,权限集就是计划或软件包所有者所拥有的权限。 如果应用程序在可信环境中绑定,并指定了“角色作为对象所有者”子句,则角色就是所有者。 否则,授权ID就是所有者。
如果语句是动态准备的,则权限集是指进程的 SQL 授权 ID 拥有的权限,除非该进程处于可信上下文中,并且指定了 ROLE AS OBJECT OWNER 子句。 在这种情况下,特权集是指与流程的主要授权ID关联的角色所拥有的特权。
语法 CREATE TRUSTED CONTEXT
用户选项:
描述 CREATE TRUSTED CONTEXT
- 上下文名称
- 指定可信环境。 该名称不能标识当前服务器上存在的可信上下文。
- BASED UPON CONNECTION USING SYSTEM AUTHID 授权名称
- 指定上下文是由 authorization-name 指定的授权标识建立的连接。 系统授权标识是主要授权标识。 对于远程连接,它是由外部实体(如中间件服务器)提供的系统用户ID派生而来的。 对于本地连接,系统授权标识是根据来源得出的, 如表 1 所示。授权名称不能与现有的可信上下文相关联。
表 1. 本地连接的系统授权ID 本地连接源 系统授权标识 开始任务(RRSAF) JOB语句中的USER参数或 RACF® USER。 TSO TSO登录ID BATCH JOB语句中的USER参数 - NO DEFAULT ROLE 或 DEFAULT 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 LABEL 或 DEFAULT SECURITY LABEL seclabel-name
- 指定可信连接是否具有默认安全标签。
- NO DEFAULT SECURITY LABEL
- 指定可信环境没有默认的安全标签。
- DEFAULT SECURITY LABEL seclabel-名称
- 指定seclabel-name 是可信上下文的默认安全标签,也是用于多级安全验证的安全标签。 seclabel-name 必须标识为 SYSTEM AUTHID 定义的 RACF SECLABEL 值之一。 当用户没有定义特定安全标签作为此信任环境的一部分时,此安全标签用于基于指定信任环境的信任连接。 在这种情况下, seclabel-name 还必须标识为用户定义的 RACF SECLABEL值之一。
- ATTRIBUTES
- 指定一个或多个用于定义可信上下文的连接信任属性列表。
- ADDRESS 地址值
- 指定连接与数据库管理器通信时使用的实际通信地址。 协议仅支持TCP/IP。 地址属性可以多次指定,但每个地址值必须唯一。
在建立可信连接时,如果为可信上下文中的地址属性定义了多个值,则如果连接使用的地址与可信上下文中的地址属性的定义值之一匹配,则候选连接被视为与该属性匹配。
address-value 指定一个包含与 ADDRESS 信任属性相关联的值的字符串常量。 地址值必须为长度不超过254字节的 IPv4 地址、 IPv6 地址或安全域名。 在处理CREATE 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加密。
下表总结了根据现有连接使用的加密技术,何时可以使用可信环境。 如果无法使用可信环境进行连接,则会返回警告。
表 2. 现有连接何时可以使用可信环境 现有连接使用的加密 加密条款在可信环境中的价值 可信环境是否可用于连接? 无加密 无 是 无加密 LOW False 无加密 高 False 低加密(64位) 无 是 低加密(64位) LOW 是 低加密(64位) 高 False 高加密(128位) 无 是 高加密(128位) LOW 是 高加密(128位) 高 是 - JOBNAME 职位名称-价值
- 为本地应用程序指定 z/OS® 工作名称或已启动任务名称(取决于地址空间的来源)。 JOBNAME属性可以被多次指定,但每个作业名称-值必须唯一。
jobname-value 指定一个包含与 JOBNAME 信任属性相关联的值的字符串常量。 jobname-value 是一个 EBCDIC 8 字节值,用于指定作业名称或已启动的任务名称。 数值必须在字符串常量内对齐。 如果名字的第一个字符是字母,则最后一个字符可以是通配符(*)。 如果作业名称以通配符结尾,则任何以指定字符开头的作业名称都会被考虑用于建立可信连接。
下表列出了根据地址空间来源不同,工作名称可能具有的值。
表 3. 本地连接的工作名称 地址空间的来源 作业名 RRSAF 工作名称或开始的任务名称 TSO TSO登录ID BATCH 工作说明中的职位名称 - SERVAUTH 服务价值
- 在 RACF SERVAUTH类中指定资源的名称。 此资源是网络访问安全区域名称,包含用于与 Db2 通信的连接的 IP 地址。 SERVAUTH属性可以被多次指定,但每个servauth-value 必须唯一。
servauth-value 指定一个包含与 SERVAUTH 信任属性相关联的值的字符串常量。 servauth-value 是EBCDIC 64字节的 RACF SERVAUTH CLASS资源名称。 servauth-value 必须在字符串常量中靠右对齐。 在处理CREATE TRUSTED CONTEXT语句时,不对 servauth-value 进行验证。
- WITH USE FOR
- 指定谁可以使用基于指定可信上下文的可信连接。
- 授权名称
- 指定可信连接可由指定的授权名称使用。 这是 Db2 主授权ID。 授权名称不能在“用于”条款中重复出现。
- ROLE 角色名称
- 指定角色名称是指当指定授权名称使用可信连接时所使用的角色。 角色名称必须标识当前服务器上存在的角色。 明确为用户指定的角色将覆盖与可信上下文关联的任何默认角色。
- SECURITY LABEL seclabel-名称
- 指定当指定的授权名称使用可信连接时, 安全标签名称是用于多级安全验证的安全标签。 seclabel名称必须是为用户定义的 RACF SECLABEL值之一。 明确为用户指定的安全标签将覆盖与可信上下文关联的任何默认安全标签。
- WITHOUT AUTHENTICATION 或者 WITH AUTHENTICATION
- 指定使用可信连接是否需要用户认证。
- WITHOUT AUTHENTICATION
- 指定用户无需认证即可使用可信连接。 默认情况下,不进行身份验证。
- WITH AUTHENTICATION
- 指定使用可信连接需要使用带有授权ID的身份验证令牌来验证用户身份。 如果本地建立了可信连接,则认证令牌就是CONNECT语句中带有USER和USING子句的密码。 如果从远程客户端建立可信连接,认证令牌可以是以下令牌之一:
- 密码
- RACF 通行证
- Kerberos 令牌
- EXTERNAL SECURITY PROFILE 个人资料名称
- 指定允许使用 RACF 中指定配置文件名称的 Db2 主要授权ID使用可信连接。 配置文件名称不能在 WITH USE FOR 条款。 如果授权ID允许使用多个指定的配置文件名称 ,则如果用户身份验证满足身份验证定义,则可以为配置文件名称指定的角色与流程相关联。 此角色可以拥有流程中可用的附加权限。
- ROLE 角色名称
- 指定角色名称是任何授权ID在 RACF 中使用指定配置文件名称时使用的角色。 角色名称必须标识当前服务器上存在的角色。 明确指定的角色将覆盖与可信上下文关联的任何默认角色。
- SECURITY LABEL seclabel-名称
- 指定安全标签名称为多层安全验证的安全标签,当任何授权ID使用 RACF 中允许使用的指定配置文件名称时,该安全标签用于多层安全验证。 seclabel名称必须是为用户定义的 RACF SECLABEL值之一。 明确指定给配置文件的安全标签将覆盖与可信上下文关联的任何默认安全标签。
- WITHOUT AUTHENTICATION 或者 WITH AUTHENTICATION
- 指定使用可信连接是否需要用户认证。
- WITHOUT AUTHENTICATION
- 指定用户无需认证即可使用可信连接。 默认情况下,不进行身份验证。
- WITH AUTHENTICATION
- 指定使用可信连接需要使用带有授权ID的身份验证令牌来验证用户身份。 如果本地建立了可信连接,则认证令牌就是CONNECT语句中带有USER和USING子句的密码。 如果从远程客户端建立可信连接,认证令牌可以是以下令牌之一:
- 密码
- RACF 通行证
- Kerberos 令牌
- PUBLIC
- 指定任何用户都可以使用基于指定可信上下文的可信连接。 所有使用以“PUBLIC”定义的可信连接的用户,都使用与相关可信上下文的默认角色关联的权限。 如果未为可信环境定义默认角色,则使用基于指定可信环境的可信连接的用户将没有关联角色。
如果定义了可信上下文的默认安全标签,则所有使用可信上下文的用户必须将安全标签定义为用户 RACF SECLABEL值之一。 默认安全标签用于对所有使用可信环境的用户进行多级安全验证。
- WITHOUT AUTHENTICATION 或者 WITH AUTHENTICATION
- 指定使用可信连接是否需要用户认证。
- WITHOUT AUTHENTICATION
- 指定用户无需认证即可使用可信连接。 默认情况下,不进行身份验证。
- WITH AUTHENTICATION
- 指定使用可信连接需要使用带有授权ID的身份验证令牌来验证用户身份。 如果本地建立了可信连接,则认证令牌就是CONNECT语句中带有USER和USING子句的密码。 如果从远程客户端建立可信连接,认证令牌可以是以下令牌之一:
- 密码
- RACF 通行证
- Kerberos 令牌
创建可信环境注意事项
所有者特权 :在信任的上下文中没有特定的特权。
对可信连接的要求: 如果在安装面板 DSNTIPS 中将字段 1(重启或延迟)设置为延迟,并将字段 2(重启或延迟的对象)设置为全部,则无法使用受信任连接。
可信连接用户的优先级 :用户的规格按以下优先级确定:
- 授权名称
- 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“已验证”子系统参数设置为“是”,则系统身份验证仍然需要一个验证令牌。
在可信上下文定义中指定角色: 可信上下文定义可以为特定的授权 ID 指定角色,还可以为在可信上下文定义中没有指定特定角色的授权 ID 指定默认角色。 此角色可与基于可信上下文的可信连接一起使用,但无法在基于可信上下文的可信连接之外使用。 当使用可信连接发出非CREATE、GRANT或REVOKE的SQL语句时,除了语句授权ID直接持有的其他权限外,还要考虑关联可信上下文定义中授权ID所对应的角色的权限。 CREATE、GRANT和REVOKE语句仅考虑可信连接中有效的角色的权限,如果可信连接中不包含有效的角色,则仅考虑语句的授权ID。 如果“作为对象所有者的角色”对可信连接生效,则可信连接的授权ID所对应的角色将成为使用该可信连接时创建的任何对象的所有者。
当新创建的信任环境生效时 :新创建的信任环境在提交CREATE TRUSTED CONTEXT语句后生效。 如果CREATE TRUSTED CONTEXT语句导致错误或回滚,则不会创建可信环境。
例子 CREATE TRUSTED CONTEXT
CREATE TRUSTED CONTEXT CTX1
BASED UPON CONNECTION USING SYSTEM AUTHID ADMF001
ATTRIBUTES (ADDRESS '9.30.131.203',
ENCRYPTION 'LOW')
DEFAULT ROLE CTXROLE
ENABLE
WITH USE FOR SAM, JOE ROLE ROLE1 WITH AUTHENTICATION; CREATE TRUSTED CONTEXT CTX2
BASED UPON CONNECTION USING SYSTEM AUTHID ADMF002
ATTRIBUTES (JOBNAME 'WASPROD')
DEFAULT ROLE CTXROLE WITH ROLE AS OBJECT OWNER AND QUALIFIER
ENABLE
WITH USE FOR SALLY;