我们有一个团队,我们都使用我们的Active Directory帐户,通过Windows身份验证从SSMS登录MSSQL Server。
我们的AD帐户被添加到AD组中,AD组用于授予MSSQL上的所有权限。为了简单起见,我们不直接向我们的帐户授予任何权限,为了安全起见,我们不使用本地MSSQL帐户。
我们很难设置权限,以便每个人(在AD组上)都能够列出、查看、编辑、开始、停止、启用、禁用等MSSQL作业,并在CmdExec步骤上列出和设置代理。这不应该是谁创造了每一个工作,我们都应该有充分的机会获得所有的工作。
我在谷歌上搜索过,在这里读过答案,自己问了个问题。我阅读了服务器代理固定数据库角色文档,并注意到SQLAgentOperatorRole是最有特权的角色,仍然不能完全访问所有的作业。
有没有办法为一个AD组设置这样的权限?
如果没有,我的下一步将是创建一个本地MSSQL帐户,拒绝它在所有数据库上的R/W权限,然后每个人都会知道它的密码,所有的作业都会从它创建和管理。但我真的不想做这种事。
发布于 2020-07-24 18:23:04
只有sysadmin角色中的用户才能编辑作业--他们不是via SSMS对象资源管理器的所有者--因此,如果将所有用户添加到位于sysadmin服务器角色中的AD组中,它将工作,但您可能不想这样做。
发布于 2020-07-24 18:50:13
正如@MSSQLServerDBA所说,只有sysadmin才能更改另一个用户的作业或更改作业的所有者。但是这样做的原因是,任何能够这样做的用户实际上都是一个系统管理员。
SQL代理TSQL作业步骤始终以代理服务的形式连接,该服务始终是sysadmin,但在作业步骤代理将作业所有者模拟为
EXECUTE AS LOGIN = N'JobOwner' WITH NO REVERT因此,如果用户可以更改sysadmin拥有的作业,或者将作业重新分配给sysadmin,则该用户可以作为sysadmin运行任意命令。
https://dba.stackexchange.com/questions/271584
复制相似问题