几年前,我们遇到了一种情况,我们将数据库所有者从 DBA 的登录名更改为 sa,此后我们立即收到投诉,说服务登录名(不是 DBA 的登录名)不再有权访问数据库。在检查时,服务登录确实失去了它的角色成员资格。
当时我们只有 3 个 DBA,没有其他人有权更改角色成员资格,所以我很确定没有人专门从角色中删除服务登录。但是,我还没有看到有关更改所有者的关于此类事件发生的任何警告,因此我无法对其进行解释,并且我们无法重现该问题。
因此,例如,数据库所有者已从 DOMAIN\jdoe 更改,并且 Windows 登录名“DOMAIN\appuser”神秘地失去了它的内置角色成员资格。
是否存在更改数据库所有者会导致权限或角色更改的情况?
请注意,此问题与更改实际数据库所有者有关,而不是从 db_owner 角色中删除登录名。
如果用户是数据库的所有者,则该用户会隐式获得db_owner权限,而无需显式分配该角色。
数据库所有者(单个用户)的分配与角色中的成员资格不同db_owner,但具有相同的效果。我喜欢记住它,因为数据库的所有者是一个实例级别设置(即,它位于 中sys.databases,但db_owner角色成员身份是数据库级别权限。
用户只能是(服务器级别)数据库所有者,并且在该数据库中没有任何权限。发生这种情况时,将数据库所有者更改为 sa 会有效地将该用户锁定在他们以前拥有的数据库之外。这不会撤销用户的权限,但会更改有效权限。
为了避免此问题,您需要db_owner首先将用户添加到该数据库的角色,然后更改所有者。
在您的问题的上下文中,如果服务帐户是先前的数据库所有者,那么这可以解释有效权限的更改,即使显式数据库级权限/角色分配没有更改。
| 归档时间: |
|
| 查看次数: |
523 次 |
| 最近记录: |