加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

active-directory – 在域帐户下运行的SQL Server无法注册其SPN

发布时间:2020-12-12 16:50:36 所属栏目:MsSql教程 来源:网络整理
导读:我正在尝试配置SQL Server的全新安装以在域帐户下运行.但是,尝试使用其他域帐户连接到服务器时出现间歇性错误,我仍然看到SQL Server网络接口库在拖网ERRORLOG文件时无法注册服务主体名称. 我已将我的服务帐户(不是托管服务帐户,只是常规用户帐户)添加到AD组(
我正在尝试配置SQL Server的全新安装以在域帐户下运行.但是,尝试使用其他域帐户连接到服务器时出现间歇性错误,我仍然看到SQL Server网络接口库在拖网ERRORLOG文件时无法注册服务主体名称.

我已将我的服务帐户(不是托管服务帐户,只是常规用户帐户)添加到AD组(例如SQL Server),并且我已将ACE添加到我的域计算机容器的ACL,对于该组,选择:

>适用于:Descendant Computer对象
>验证写入服务主体名称:允许
>阅读servicePrincipalName:允许
>写servicePrincipalName:允许

我已将此复制到所有域控制器,并使用“有效权限”选项卡和dsacls CN = SERVER01,CN = Computers,DC = fabrikam,DC = local,后者确认新ACE对特定计算机对象的继承性现在包括:

Allow FABRIKAMSQL Servers
                                  SPECIAL ACCESS for Validated write to service principal name   <Inherited from parent>
                                  WRITE SELF
Allow FABRIKAMSQL Servers
                                  SPECIAL ACCESS for Validated write to service principal name   <Inherited from parent>
                                  WRITE SELF
                                  WRITE PROPERTY
                                  READ PROPERTY

但是,当我重新启动SQL Server服务时,我仍然看到无法注册服务主体名称消息.我也重新启动了服务器,结果相同.

我使用Sysinternals Process Explorer来检查正在运行的sqlservr.exe; “安全”选项卡清楚地显示了正确的服务用户及其SQL Server组的成员身份.

我知道我可以手动添加带有setspn -A的SPN,但这不是重点.

我还需要做些什么来确保服务帐户(以及我在SQL Servers组中的任何未来帐户)可以自动注册自己的SPN而无需人工干预?

AND / OR

如何进一步诊断此处缺少哪些权限/权限?

解决方法

我找到了.

我手动将SPN注册到服务帐户,然后使用ADSIEdit检查AD,却发现手动注册的SPN未存储在计算机帐户的servicePrincipalName字段中,而是存储在特定用户帐户的servicePrincipalName字段中.

因此,我(无意中)授予他们更改由作为该计算机上的本地系统/网络服务帐户运行的服务注册的SPN的权限,而不是授予我的SQL Server组权限以注册他们自己的SPN.

我现在已经从Computers容器中删除了新的ACE,而是创建了一个新的SQL Server组织单元.我已将SELF添加到此OU,并将其限制为应用于后代用户:

> SQL Server OU ACL

>自我

>应用于:Descendant User对象
>阅读servicePrincipalName:允许
>写servicePrincipalName:允许

现在,当我启动SQL Server实例时,我看到预期的SQL Server网络接口库已成功注册了服务主体名称,而Kerberos现在正用于我的远程连接.

(现在更新我们的内部流程文档,因此需要在新OU下创建新的SQL Server服务帐户,而不是添加到组中)

编辑:请注意,域管理员还可以使用setspn.exe手动将SPN注册到域帐户.

setspn -S MSSQLSvc/myhost.redmond.microsoft.com:1433 DOMAINUser
setspn -S MSSQLSvc/myhost.redmond.microsoft.com DOMAINUser

Register a Service Principal Name for Kerberos Connections (TechNet).

编辑2:如果在ACE列表中看不到Read servicePrincipalName和Write servicePrincipalName属性,请转到对象属性对话框的“属性编辑器”选项卡,单击“过滤器”按钮并确保以下内容:

>仅显示具有值的属性未选中
>未显示仅显示可写属性
>显示属性:检查是否必需
>显示属性:选中可选
>显示只读属性:检查构造
>显示只读属性:检查反向链接
>显示只读属性:仅选中系统

(其他组合可能有用,但这对我来说是什么)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读