SETSESSIONAUTH 子句
GRANT SETSESSIONAUTH 语句将 SETSESSIONAUTH 权限授予一个或多个用户或角色。此权限允许持有者使用 SET SESSION AUTHORIZATION 语句来设置会话授权为 PUBLIC 或为指定用户的列表中的任一个。
SETSESSIONAUTH 子句

元素 | 描述 | 限制 | 语法 |
role | 要授予其该权限的角色 | 必须为角色的授权标识符 | 所有者名称 |
user | 在 TO 关键字之后,要授予其该权限的用户。在 ON 关键字之后,表示可在 SET AUTHORIZATION 语句中指定其被授权者身份的用户。 | 必须为用户的授权标识符 | 所有者名称 |
仅持有 DBSECADM 角色的用户可授予 SETSESSIONAUTH 权限。SETSESSIONAUTH 权限和 DBA 权限都需要执行 SET AUTHORIZATION 语句。
跟在 ON 关键字之后的用户或 PUBLIC 规范指定在使用 SET SESSION AUTHORIZATION 语句时,该 SETSESSIONAUTH 权限的被授予者可使用谁的身份。此可为用户或 PUBLIC,但不可为角色。如果指定 PUBLIC,那么该权限的被授予者可使用任何数据库用户的身份。
可跟在 TO 关键字之后的 USER 和 ROLE 关键字是可选的。user 或 role 都不可为发出 GRANT SETSESSIONAUTH 语句的 DBSECADM 角色的持有者。
下列示例授予用户 sam 将会话授权设置为用户 lynette 和 manoj 的能力:
GRANT SETSESSIONAUTH ON lynette, manoj TO sam;
下一示例授予用户 lynette 将会话授权设置为 PUBLIC 的能力:
GRANT SETSESSIONAUTH ON PUBLIC TO lynette;
仅持有 DBSECADM 角色的用户可取消 SETSESSIONAUTH 权限。要了解 LBAC 安全对象的讨论,请参阅您的 GBase 8s 安全指南。
代理用户属性(UNIX™、Linux™)
使用 GRANT 语句的 ACCESS TO PROPERTIES 子句来将用户映射到访问 GBase 8s 资源所需要的代理用户属性。
注:
仅 DBSA 可外部地将认证的用户映射到有效的代理用户属性。如果 USERMAPPING 配置参数设置为启用支持被映射的用户,则 DBSA 发出 GRANT ACCESS TO PROPERTIES 语句来将用户映射到与适当的授权级别对应的属性。
被映射的用户可以代理用户属性连接到 GBase 8s ,如果他们以可插拔的认证模块(PAM)或单点登录(SSO)认证的话。
被映射的用户可以代理用户属性连接到 GBase 8s ,如果他们以可插拔的认证模块(PAM)认证的话。
ACCESS TO PROPERTIES 子句

元素 | 描述 | 限制 | 语法 |
directory | 存储用户文件的目录的路径名称。 | 长度不超过 255 字节,且必须符合您的操作系统的规则。directory 还必须: · 属于被映射的 user_ID 和 group_ID · 有所有者的读、写和执行许可 · 没有 PUBLIC 写许可 | 引用字符串 |
group_ID | 您想要将 user 映射到的组标识符编号。group_id 值的列表或您指定的值必须括在括号中。 | group_ID 不可为: · 带有管理权限(DBSA、DBSSO、AAO 和 BARGROUP)的组 ID · 组 0(root,有时称为 wheel 或 system) · 与组 bin 或组 sys 关联的组 ID 组 ID 必须在 /etc/gbasedbt/allowed.surrogates 文件中存在。 | 精确数值 |
group_name | 现有的操作系统组的名称,该组有您想要映射 user 到的许可。group_name 值的列表必须括在括号中。 | 长度不可超过 32 字节。 组名必须在 /etc/gbasedbt/allowed.surrogates 文件中存在。 | 所有者名称 |
privilege | 分配给 user 的管理权限。有效值如下: · DBSA · DBSSO · AAO · BARGROUP privilege 值或多个值必须括在括号中。 | USERMAPPING 配置参数必须设置为 ADMIN 来以 AUTHORIZATION 关键字授予服务器管理权限。 | 引用字符串 |
user | 您正在映射到用户属性的指定用户的授权标识符。 | 必须为认证的授权标识符 | 所有者名称 |
user_ID | 您想要将 user 映射到的那个用户标识符编号。 | user_ID 不可为属于用户 root 或用户 gbasedbt 的用户。 用户 ID 必须在 /etc/gbasedbt/allowed.surrogates 文件中存在。 | 精确数值 |
OS_user_name | GBase 8s 主计算机上的现有的 OS 用户账号的名称,有您想要将 user 映射的许可。 | 必须符合您的操作系统的规则。 用户名必须在 /etc/gbasedbt/allowed.surrogates 文件中存在。 | 所有者名称 |
用法
最佳实践是将 user 映射到特定的 OS 用户名,保留该用户名仅作为代理用户身份。您可以 GROUP 关键字添加与代理用户身份相关联的组,并以 HOME 关键字更改 home 目录。如果操作系统管理员已在 /etc/gbasedbt/allowed.surrogates 文件中指定了可接受的代理,则您仅可将用户映射到指定的 OS 用户或组。
如果您将 user 映射到用户 ID 编号,那么请记住不要以相同的编号在 GBase 8s 主计算机上创建用户账号。
USERMAPPING 配置参数必须设置为 ADMIN,以便以 ADMINISTRATOR 关键字分配 user 一服务器管理权限。
注:
不推荐使用此 AUTHORIZATION 子句(以及 ALTER USER、CREATE USER 或 CREATE DEFAULT USER 语句的 AUTHORIZATION 子句)。不同的语法将在未来的版本中支持角色分离。
不可在同一语句中同时使用 PUBLIC 与 AUTHORIZATION 关键字,因为不可将服务器管理员权限授予 PUBLIC 组。
以 HOME 关键字指定用户文件的目录是可选的,但在有些情况下,强烈建议这样做。当将一个在外部认证了的用户映射到代理用户名,但未在 GRANT ACCESS TO 语句中指定 HOME 目录时,被映射的用户与 GBase 8s 主计算机上的用户账户有相同的 home 目录。当以不设置 home 目录的方式将用户映射到代理用户身份时,则 GBase 8s 在 $GBASEDBTDIR/users 中为用户文件创建目录。在后面这种情况下,$GBASEDBTDIR/users 中的目录名称采用 uid.ID_number 的形式(例如,uid.101)。
示例
此章节中的语法和解释是对下列环境的示例,此处的缩写词 GID 是 组 ID 编号的缩写,缩写词 UID 是 用户 ID 编号 的缩写:
l 在 GBase 8s 主计算机上,有一个有 OS 账号的用户 fred。用户 fred 以 UID 3000、GID 3000(users)、辅助组 200(staff) 和 home 目录 /home/fred 访问数据库服务器。
l 在同一台计算机上,存在用户 dbuser 的 OS 账户。此账户被锁定,因此 dbuser 不可登录。dbuser 仅为了代理用户映射的目的而存在,有 UID 3050、GID 4000(ifx_user)和 home 目录 /home/dbuser。
l 组 ifx_user 有 GID 4000,包括用户 bill 和 eileen。
l 建立被映射的用户的管理员知道,在 /etc/passwd (或其同义词)中没有 UID 101 的条目,且在 /etc/group(或其同义词)中没有 GID 10011 或 10101 的条目。
l 用户 bob 在 GBase 8s 主计算机上没有 OS 账户,但可通过 PAM 或 LDAP 认证。配置数据库服务器来通过 PAM 或 LDAP 模块接受认证。
l onconfig 文件中的 USERMAPPING 参数设置为 ADMIN。
将在外部认证了的用户映射到代理用户名称:
管理员通过发出下列 GRANT 语句将 bob 映射到用户 fred 已经存在的数据库服务器访问权限:
GRANT ACCESS TO bob PROPERTIES USER fred;
将 GBase 8s 访问授予所有在外部认证了的用户:
在此环境中, GBase 8s 主计算机上的用户 dbuser 账户的目的是将数据库服务器访问授权给被映射的用户。有这么一种情况,有许多被映射的用户且他们不需要知道在 home 目录中创建的用户文件,管理员可能发现将 PUBLIC 映射到 dbuser 代理用户身份非常高效且足够安全。管理员可以下列 GRANT ACCESS 语句,将所有认证了的用户(PUBLIC)映射到为 dbuser 建立的权限:
GRANT ACCESS TO PUBLIC PROPERTIES USER dbuser;




