我正在组织我们的 SQL Server 实例的权限。我想停止使用 SQL Server 帐户,而是向 Active Directory 组授予权限,然后将用户和服务帐户添加到这些组。我还试图从用户中删除 sysadmin 角色。
我已按照向 SQL Server 中的 Active Directory 帐户授予管理员和拒绝用户在 master 中创建表的权限的说明进行操作。
进行这些更改后,一切似乎都正常......直到我尝试手动开始工作。我收到了消息non-sysadmins have been denied permission to run dts execution job spets without a proxy account
。
如果我将 AD 组添加到 sysadmin,它就可以工作。如果我删除,它会失败。
在使用代理帐户从 SQL Server 代理运行 SSIS 包之后,我创建了一个代理。然后我开始收到消息Unable to start execution of step 1 reason jobowner doesn't have permission to use proxy 1 for subsystem
。
How to give SQL Server Job Owner permission to Proxy a Credential解释了如何将用户设置为代理的主体。它没有用。我尝试添加组和用户。但是当我单击确定并重新打开对话框时,我添加的对话框不再列出。
那么,基本上,如何授予非系统管理员用户执行作业的权限?最好将其授予 AD 组而不是特定用户。
处理工作权限的帖子可以在以下位置找到:
允许 SQL Server 代理作业的非系统管理员、非所有者执行它
这篇文章概述了:
使用标准 SQL 代理角色,例如
SQLAgentOperatorRole
.注意: Active Directory 组无法登录以开始工作。
Erland Sommarskog 的帖子http://www.sommarskog.se/grantperm.html#countersignatures概述了使用会签。这是一个更复杂的设置,但它确实有效。
指向自定义
StartAgentJob
存储过程以允许在该过程的上下文中授予权限。 这也包括对 AD 组的支持。 自定义StartAgentJob
中包含明确允许Active Directory 组(但不是Active Directory 组本身)的成员启动他们不拥有的作业的代码。