原文出处:http://blog.csdn.net/dba_huangzj/article/details/38017703,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349
未经作者同意,任何人不得以“原创”形式发布,也不得已用于商业用途,本人不负责任何法律责任。
前一篇:http://blog.csdn.net/dba_huangzj/article/details/37927319
前言:
托管服务帐号(Managed Servcie Account)从Windows Server 2008 R2出现, 它的目的是使用于运行服务的活动目录帐号更加容易管理。在此之前,必须创建用于作为服务帐号的域帐号相同类型的用户,但是需要禁用密码策略以免密码过期导致服务运行发生错误。但是禁用密码策略又会降低安全性。
为了解决这些问题,出现了托管服务帐号,它是一个绑定到特定计算机上的活动目录帐号,它的密码由活动目录自动管理,并且可以在不影响服务运行的情况下定期修改密码。另外还能简化Service Principal Name(SPN/服务主体名称,客户端的唯一标识,在后续详细介绍)。
实现:
托管服务帐号必须运行在Windows Server 2008R2或Win 7以上,并且需要打上一个热修复补丁:http://support.microsoft.com/kb/2494158 。了另外,创建托管服务帐号需要使用PowerShell实现,并且在活动目录上安装PowerShell 管理单元(Snap-In):
1.如果没安装PowerShell管理单元,可以在活动目录上,打开服务器管理器,右键【功能】节点,选择【添加功能】,在【远程服务器管理工具】→【角色管理工具 】→【AD DS 和AD LDS 工具】节点上勾选【Windows PowerShell 的 Active Directory 模块】并进行安装,如下图:
2. 以活动目录下有足够权限的帐号打开PowerShell ,导入ActiveDirectory模块:
Import-Module ActiveDirectory
如果发生上面的警告,是因为ADWS服务没有启动,这种问题一般出现在虚拟机,临时解决方法就是在Powershell里面输入
restart-service adws
根本解决方法就是把adws服务设置成延时启动。
3. 创建托管帐号:
New-ADServiceAccount -Name SQL-SRV1 -Enabled $true
其中SQL-SRV1就是创建的帐号名。
4. 把新加的帐号关联到SQL Server计算机上,本例关联到机器名为【SQL-A】上。
Add-ADComputerServiceAccount -Identity SQL-A -ServiceAccount SQL-SRV1
5.托管服务帐号必须安装在运行有SQL Server的服务器上,所以在SQL-A上打开PowerShell,先导入ActiveDirectory模块(步骤2),然后输入下面命令:
Install-ADServiceAccount -Identity SQL-SRV1
如果此过程报错,可以在SQL-A(也就是域成员服务器上)的PowerShell中输入:
Import-Module ServerManager Add-WindowsFeature RSAT-AD-PowerShell
然后再根据步骤2的命令导入模版,再输入:
Install-ADServiceAccount -Identity SQL-SRV1
即可,如图:
6. 注意不要创建超过15个字符的托管帐号名,否则会存在Bug。
现在你可以用这个帐号来作为服务帐号,帐号名必须使用$符号,比如:(DOMAIN\SQL-SRV1$)。密码和确认密码留空。参考http://blog.csdn.net/dba_huangzj/article/details/37924127 进行配置,需要提醒的是这里先要在Windows上的服务管理器配置帐号,而不能直接在SQL Server配置管理器中配置,否则报错。
在服务管理器中配置完之后,在SQL Server配置管理器中重启SQL Server服务即可,不需要再次配置:
原理:
托管服务帐号是绑定到单独的机器上,并且仅用于服务所用,所以不能用来登录,也不能用于群集服务,因为群集需要需要服务帐号能够跨多个群集节点。但是和本地内置帐号不同,托管帐号的名字在网络中发现,同时可以用于访问网络共享资源。
当你创建一个托管帐号在活动目录上时,不需要指定密码,密码会由活动目录自动管理。并且根据密码策略(默认30天)自动刷新,期间不影响SQL Server 服务。
在创建完之后,可以在活动目录的【Active Directory 用户和计算机】工具中的【Managed Service Accounts】节点看到你的帐号,但是只能看不能改,一切操作都需要使用PowerShell。
在上面过程中,使用New-ADServiceAccount命令可能会出现拒绝访问(Access is denied error)错误,这是因为用户帐号控制(User Account Control,UAC)策略导致的,可以使用域管理员帐号登录操作,或者临时禁用Admin Approval Mode。
禁用Admin Approval Mode 可以在域管理器中运行【secpol.msc】,然后找到下图中的配置,并禁用,然后重启计算机。
更多信息:
如果你不再使用托管服务帐号,应该把它移除:
移除托管帐号:
在对应服务器上运行:
Uninstall-ADServiceAccount -Identity SQL-SRV1
在AD上运行:
Remove-ADServiceAccount -Identity SQL-SRV1
更多信息可以访问: