扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:邹铮 来源:IT专家网 2008年10月15日
关键字: SharePoint 安全策略
Microsoft Windows Sharepoint Services(WSS)3.0和Microsoft Office Sharepoint Server(MOSS)2007是用来实现公司信息共享并能够提高团队协作能力的工具,用户可以访问Sharepoint网站中所有他们的个人用户账号允许访问的信息。正是由于这种设计,所以你必须要确保鉴权服务是迅速的,安全的,并且还要是符合公司政策的。
在这篇文章中,我们将探讨在Sharepoint环境中如何运用Kerberos的一些基本操作。对于互联网中各种不同情况,在本文你都能找到相应的配置指南,并且我将搜集了很多有用的技巧附在后面。我希望能够更好地帮助你们在自己的环境中运行Kerberos。
在Sharepoint使用Kerberos
Kerberos是一种网络认证协议。当客户机向包含有效的用户认证信息和有效的服务主题名称(SPN)的密钥分配中心(KDC)发送请求,要求得到某服务器的认证时,Kerberos能够确保认证过程的正确进行。Kerberos是Sharepoint首选的认证协议,因为相比于NTLM,Kerberos能够提供更快更安全的认证,并且它能够减少用户名和密码弄错的几率。如果Sharepoint使用外部数据(位于Sharepoint服务器本身外其他不同服务器上的数据),例如通过webparts访问SQL数据库,Sharepoint服务器就需要Kerberos来代表客户机认证信息(认证信息绝不能通过电缆来发送,只有受KDC保持跟踪的ticket才可以)。
那么,当你在访问受Kerberos保护的网站时,客户端和服务器之间到底进行了怎样的认证过程呢?我做了一个比较直观的图来演示“后台”的运作,如图1所示,图中演示的是以MOSS为基础的Windows Sharepoint Services3.0运作图。使用的是同样的Kerberos技术,只是在MOSS中我们有更多的服务和用途。
图1: Kerberos在Sharepoint中运行
第一步,客户端使用匿名账户访问http://intranet.domain.
第二步,WSS 服务器返回IIS error 401.2并tonghi返回一个WWWAuthenticate header.
第三步,客户端为本地互联网浏览器: HTTP/intranet.domain.local制造的SPN向服务器发送请求,要求得到ticket。
第四步,如果出现的SPN为有效,则KDC会返回ticket。并且会使用注册账户管理密钥为这个SPN(domain\spcontentpool)进行加密。
第五步,客户机为web应用程序对ticket进行验证。
第六步,该web应用程序账户解密ticket并且对它进行验证。
第七步,Web应用程序账户为SQL客户端: MSSqlSvc/sql1.domain.local:1433.发出请求,要求得到ticket。
第八步,如果出现的SPN为有效,则KDC会返回ticket。并且会使用注册账户管理密钥为这个SPN(domain\sqlsvsacct)进行加密。
第九步,Web应用程序服务使用web应用程序账户ticket对SQL数据库进行验证,并且使用代表权模拟用户操作。
第十步,该SQL服务账户解密ticket并且对它进行验证。
第十一步,SQL服务器将请求数据返回给WSS服务器。
第十二步,WSS服务器返回网页。
如果Kerberos未配置SQL通讯,则可以直接从第六步跳到第十二步。需要记住的是,只有在首次登录时才能获取ticket,并且会持续到最后。仔细看看这个流程图,以及箭头所指方向和所指的内容。
为Sharepoint配置Kerberos
首先,在重新配置你的生产环境之前,让我来教你创建一个测试程序。我知道这很麻烦,但是如果你使用的是虚拟服务器,就可以非常迅速的建立厕所服务器。同时,如果期间发生任何问题的话,你都可以将配置与最终配置进行比较。
那么我们需要解除我们的web应用程序上的NTLM(身份验证),并将其配置成使用Kerberos.首先你要保证前端服务器和后端服务器的通讯协议的有效性,然后需要确保客户端与个人web应用程序间的Kerberos能够通过Sharepoint服务器进行认证过程(我们称之为双认证或者双跃点认证)。
让我们一起来看看为设置此功能所要进行的操作。
收集所需信息并创建Sharepoint用户。
为SQL通讯启用Kerberos
在Active Directory中配置服务主体名称(SPN,Service Principal Names)
对计算机/用户账户配置“信托代表”
在Sharepoint服务器中配置Component Services.
为web应用程序和SSP(Shared Service Provider)启用Kerberos
测试Sharepoint环境
收集所需信息
为了使我们的操作过程尽可能地快捷,我们需要准备好所有必须的条件。我假设在你的环境中运行的是Active Directory,并且每个服务器都有一个唯一的IP地址。这个IP地址必须在你的DNS服务器上注册,而且不能重复,存在搜索区域的前端或反向端以便Kerberos能够工作。同样的,所有的客户端和服务器必须有正确的日期和时间,因为Kerberos需要正确的日期时间来保障对ticket的验证以及对内部DNS服务器的安全访问。
在你安装Sharepoint前,需要在Active Directory中创建适当的用户组(查看链接栏链接到官方指南)。如果你已经创建了所需要的账户,请继续阅读。
以下是关于在Sharepoint环境中建立Kerberos所需要事项的清单。
SPN的服务类别(WSS/MOSS web 程序的HTTP;SQL服务器默认实例的MSSQLSvc)
你的SPN的主机名称 (只有主机名称。通常是没有域名部分的FQDN)
所有web应用程序和服务器的完全合格的域名(FQDN)
你的SPN的端口号(WSS 和 MOSS的 web应用程序无端口. SQL的端口号为1433)
你的SPN的Active Directory账户 (服务和应用程序账户)
为SQL通讯启用Kerberos
微软公司强烈要求在安装Microsoft Sharepoint之前必须为SQL通讯启用Kerberos,以确保你的SQL通讯能正常运行。配置数据库是位于你的SQL服务器上的,如果连接失效,那么你就需要在Sharepoint网站重新运行前修复连接。如果你在初次安装时更改了身份验证,只要要先关闭Sharepoint服务以避免数据损失。
你可以这样来启用Sharepoint前端服务器间的Kerberos到你的SQL服务器:
为它配置SPN
如果你需要为其他服务模拟用户操作,则要配置信托代表
如果你只是需要验证到Sharepoint前端的客户端,而且没有其他数据连接/Excel 服务/SQL报表服务的话,那么就没有必要在SQL通讯中启用Kerberos.
在Active Directory中配置SPN
服务主题名称映射是Kerberos用来允许一个服务代表来模拟某个特定用户账户的。通常一个SPN包含一个服务类别,主机名,有时还有一个端口号。例如这种情况:HTTP/intranet.domain.local和MSSqlSvc/sql1.domain.local:1433.最好的做法就是同时注册主机名和web程序的FQDN,及时你只是打算使用其中一个。
配置服务主题名称时,你可以使用多种工具。我比较喜欢的是默认安装在Windows Server2008中的SetSPN工具。而在Windows Server2003中,你可以在安装程序CD-ROM里的支持工具中找到这种工具,或者也可以从Microsoft网站的资源工具包中下载使用。你同样可以使用ADSIedit来配置SPN,但是可能需要花费更多时间,来通过你的Active Directory导向并编辑条目以及更改他们的SPN。
注册SPN的命令: setspn.exe –A HTTP/intranet.domain.local DOMAIN\Account
为账户列明SPN的命令: setspn.exe –L DOMAIN\Account
删除SPN的命令: setspn.exe –D HTTP/intranet.domain.local DOMAIN\Account
使用图2或者图3中的表格来查看你在MOSS/WSS环境中需要进行的注册项目。
图2: MOSS中的代表和SPN
图3: WSS中的代表和SPN
对计算机/用户账户配置“信托代表”
现在我们需要处理的就是Active Directory中的代表权问题了。这是为了上面表格中所显示的计算机以及用户账户来配置的。右键点击Active Directory Users and Computers中的账户,选册属性并勾选代表信托(参见下面的图4和图5),在不同版本的Windows Server中文本和程序也会有所不同。
图4:计算机账户的代表
图5:用户账户的代表
参看图2或者图3以确定这种情况下需要配置代表的账户
在Sharepoint服务器中配置Component Services
web应用程序暂记账户需要有一定的权力或者你将在事件日志中获得事件id 10017的一个DCOM错误,如微软在KB920783中描述的:
“针对特定应用程序的权限设置不给予COM服务器程序使用CLSID[CLSID]到用户域名/用户名SID[SID]本地激活权限,而这种安全许可可以使用组件服务管理工具进行修改。”
要想为账户设置正确的安全许可,只要进入控制面板、组件服务、计算机、我的电脑、DCOM配置并编辑“IIS WAMReg Admin Service”的属性即可。编辑安全选项中的“Launch and Activate”,然后给予对所有应用程序暂记账户进行 “本地激活”的权利(见图2或者图3).
然后你在组件服务中通过编辑“我的电脑”的属性来设置 “默认模拟级别”为“代表”。参看Microsoft KB917409,以获取更多信息。
为web应用程序和SSP(Shared Service Provider)启用Kerberos
好吧,现在您的基本配置应该做得差不多了。要使用Kerberos,你必须将你的web应用程序通过Central Administration来启用它。我们可以为个人web应用程序在NTLM和Kerberos间作出选择,这里所说的个人web应用程序是指程序管理面板中的认证供应商页面中的应用程序。
按照以下路径进行配置:
Central Administration,应用程序管理,认证供应商
选择你需要使用Kerberos的web应用程序,例如:
点击“默认”
选择/检查Kerberos选项:
记住要重新启动IIS,使用你的web前端服务器中的一个附有iisreset /noforce命令提示符。
在MOSS环境中,你的共享服务器供应商也必须被配置,你可以在命令提示符窗口进行操作。SetSharedWebServiceAuthn命令并不存在WSS中。导向到12-配置单元bin目录(通常是放在C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\bin),并且运行以下命令:stsadm.exe -o SetSharedWebServiceAuthn –negotiate
测试Sharepoint环境
现在我们还要做的工作就是:确保一切工作都如我们所料想的那样在运作。像其他任何人一样,当我检查程序时,我会产看配置更改。你的SQL通讯在继续进行其他操作前就能够使用kerberos,事情会更加顺利。但是我们怎么检查安装的其他个别部分呢?
你只需要简单地检查你的安全事件日志中关于Kerberos登录的事件日志,检查使用的域账户是否成功。如果日志上显示账户失败,请检查下列条目:
所有服务器的日期和事件都是正确设置的
该账户没有被锁定在网域内
该服务或者应用程序运行的是正确的账户
计算机账户和用户账户都配置了相应的代表
Active Directory中配置了正确的SPN
在DNS正向和反向区域的服务器上不能存在重复
所有服务器都配置了正确的DNS服务器
众所周知的Internet Explorer问题
如果你的IIS虚拟服务器使用的是非默认端口,请确保你使用的Internet Explorer6或者更早版本浏览器已经修补,并配置了SPN中的端口号。Central Administration将包含一个非默认端口号。如果你使用的是旧的或者未配置版本的Internet Explorer,你就不能得到提示错误的错误信息。阅读链接栏中,我所列出的涉及这个问题的文章。我听说Internet Explorer7存在同样的问题,不过已经被修复了。
总结
Microsoft Windows Sharepoint可以在复杂的需要Kerberos进行安全验证的环境中运用。我希望通过这篇文章让大家了解一下Kerberos在Sharepoint安装中的大致情况。工具和相应的基础配置都是有效的,遵循我的方法你自己就可以开始使用功能强大的Sharepoint双跃点验证了。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者