Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - 数据库管理 » 用户和数据库安全 » 用户安全性(角色和特权) » 模仿

 

深入了解模仿的必要条件

用户只要满足必要条件即可成功模仿其他用户。条件验证在执行 SETUSER 语句时进行,而不是在授予 SET USER 系统特权时进行。如果用户在发出 SETUSER 语句时不满足任何条件,则模仿尝试失败并返回错误。

要成功模仿需要满足以下四个条件:

  1. 已授予模仿者模仿目标用户的权限。

  2. 模仿者至少具有目标用户被授予的所有角色和系统特权。

  3. 已授予模仿者对角色和系统特权的类似或更多管理权限。

    为了满足管理权限条件,将考虑使用 WITH ADMIN OPTION 和 WITH ADMIN ONLY OPTION 子句授予类似的管理权限。与 WITH NO ADMIN OPTION 子句相比,考虑使用它们可授予更多的管理权限。例如,使用 WITH ADMIN OPTION 子句授予用户 1 角色 1,使用 WITH ADMIN ONLY 子句授予用户 2 角色 1,使用 WITH NO ADMIN OPTION 子句授予用户 3 角色 1。将认为用户 1 和用户 2 拥有角色 1 以及类似的管理权限。认为用户 1 和用户 2 也拥有角色 1,并比用户 3 具有更多的管理权限。

  4. 如果已授予目标用户支持附加参数(也称为扩展)的系统特权(例如,当授予 SET USER 系统特权时可提供用户 ID 列表),则用于向模仿者授予系统特权的子句是目标用户所用子句的超集。

    目前,仅 SET USER 和 CHANGE PASSWORD 系统特权支持扩展。向模仿者授予 SET USER 和 CHANGE PASSWORD 时指定的扩展必须与向目标用户授予 SET USER 或 CHANGE PASSWORD 时指定的扩展相同或是其超集。根据以下内容进行判断:

    • 将 ANY 扩展视为 role-list 扩展(角色列表)和 users-list 扩展(用户列表)的超集。如果目标用户具有含 ANY 扩展的 SET USER 系统特权(例如,GRANT SET USER ANY TO user1),模仿者也必须具有 ANY 扩展。

    • 如果目标用户具有同时包含 role-listusers-list 的 SET USER 系统特权,模仿者也必须具有包含这两个扩展的系统特权,并且每个扩展的列表必须与目标用户的相应扩展相同或是其相应扩展的超集。例如,如果模仿者和目标用户的扩展列表均分别包含用户 1、用户 2 及角色 1、角色 2,则授予每个子句的目标列表将视为相同。或者,如果模仿者的 users-list 分别包含用户 1、用户 2 、角色 1 、角色 2,而目标用户的 users-list 仅包含用户 1、角色 2,则认为模仿者的 users-list 是目标用户列表的超集。

    • 如果目标用户具有包含单个列表扩展的 SET USER 系统特权,则模仿者的扩展列表必须与目标用户的列表相同或是其列表的超集。例如,如果模仿者和目标用户的 user_list 均包含用户 1 和用户 2,则认为它们相同。如果模仿者的 user_list 包含用户 1、用户 2,而目标用户的 user_list 仅包含用户 2,则认为模仿者的 user_list 是目标用户 user_list 的超集。

    因此,如果模仿者具有的 SET USER 或 CHANGE PASSWORD 系统特权包含对使用对象有所限制的扩展,而目标用户具有的系统特权没有限制,则模仿将因未满足关于扩展的必要条件而失败。

 第 1 种情形
 第 2 种情形
 第 3 种情形
 另请参见