1 场景描述
客户的物理环境和安装的软件如下:
机器名
|
是否加入域
|
主要功能
|
安装的主要软件和组件
|
DC
|
域控制器
|
域控制器和DNS服务器
|
· Windows 2003 + SP1
· Windows 2003 Support Tools
|
SQL
|
加入域
|
数据库服务器
|
· Windows 2003 + Sp1
· .Net Framework 2.0
· SQL Server 2005 企业版 + Sp2
o DB Engine
o SSIS
o SSAS
|
WSS
|
加入域
|
前端服务器
|
· Windows 2003 + Sp1
· .Net Framework 2.0
· .Net Framework 3.0
· Windows SharePoint 3.0 SP1
· SQL Server 2005 (Reporting Services) + Sp2
· Microsoft SQL Server 2005 Reporting Services Add-in for Microsoft SharePoint
|
Client1
|
没有加入域,但dns 指向DC的IP地址
|
客户端
|
· Windows XP + Sp2
|
· 要求MOSS和SSRS能良好的集成,在点击报表的时候,也不弹出Windows 登录窗口。
· SSRS的Data Source 使用Windows 集成验证方式,SSAS能通过USERName函数获取到当前的AD用户。
2 问题以及解决思路
· 因为使用了SQL Server Analysis Services 中的Dynamic Dimension Security,也就是需要根据访问Cube的当前用户,返回不同的维度数据阅读权限。所以SQL Server Reporting Services在部署的时候其数据源需要使用Windows 集成验证的模式。
· 因为SQL Server 和Reporting Services 部署在不同的机器上,所以需要设置SQL Server, IIS, SSAS, SSRS都为Kerberos 的验证方式。
· 在客户端加入域的情况下,访问报表的时候,想要不弹出Windows 登录验证窗口,MOSS那边也需要使用Windows 集成验证的方式。
· 在客户端不加入域的情况,访问报表的时候,想要不弹出Windows登录验证窗口,需要安装Microsoft SQL Server 2005 Reporting Services Add-in for Microsoft SharePoint ,并使用其Web Part来做WSS和SSSRS的整合。
3 解决步骤
在每台机器上在安装完【场景描述】中的软件和组件之后,请执行如下脚本:
所在机器
|
步骤说明
|
详细执行脚本
|
AD
|
· 使用SetSpn为AD帐号设置Service Principal Names
|
Cd c:\Program files\Support Tools\
setspn -A MSOLAPSvc.3/sql.ccpe.com CCPE\Administrator
setspn -A MSOLAPSvc.3/sql CCPE\Administrator
setspn -A http/wss.ccpe.com CCPE\Administrator
setspn -A http/wss CCPE\Administrator
setspn -A MSSQLsvc/sql.ccpe.com:1433 CCPE\Administrator
setspn -A MSSQLsvc/sql:1433 CCPE\Administrator
|
AD
|
· 在AD管理器里面设置前端服务器为“Trust computer for delegation”
· 设置运行SSRS的IIS的AppPool 帐号为“Account is trusted for delegation”
|
1) 进入Active Directory Domains and Trust
2) 选择Computers,右键点击WSS,选择Properties,选中Trust computer for delegation,点击确定退出
3) 选择User,找到Administrator,右键点击Propertis,选择Account Tab页,选择Account is trusted for delegation,取消选择Account is sensitive and cannot be delegated.
|
WSS
|
· 设置COM+ 的Security从Impersonate 改为 Delegate
|
1) 在控制面板里面,单击Component Services
2) 展开Computers ,右键点击My Computer,选择Properties ,选择Default Properties TAB也,从Default Impersonation Level 那里选择Delegate,点击确定退出
|
WSS
|
· 设置IIS为Kerberos验证方式
|
CD c:\InetPub\AdminScripts\
cscript adsutil.vbs set w3svc\NTAuthenticationProviders "Negotiate,NTLM"
iisreset
|
其他
|
其他注意事项
|
· 所有报表的Data Source需要加入SSPI=Kerberos连接字符串
· 假如在AD里面加了一个ReportGroup组作为访问报表的用户组。则需要在AS里面把ReportGroup加入能访问AS的Security List中去。用SQL Server Management Sutdio连接到AS,右键点击选择Properties-选择Security。
· 需要在WSS里面加入ReportGroup到访问者角色
· 需要配置SSRS 的Services, Web App Pool 的运行账户为指定的域用户
· 在WSS网站应该配置成Kerberos 验证方式
· 在Visual Studio 2005里面发布Reporting Services项目的时候,要注意TargetDataSourceFolder,TargetReportFolder, 都要指向http开头的WSS站点完整路径,TargetServerURL则指向WSS站点URL
|
4 附录
通过命令行初始化和配置WSS
cd C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN
psconfig -cmd configdb -create -server sql -database WSS_Config -admincontentdatabase WSS_Content
psconfig -cmd helpcollections -installall
psconfig -cmd secureresources
psconfig -cmd services -install
psconfig -cmd installfeatures
psconfig -cmd adminvs -provision -port 8080 -windowsauthprovider enablekerberos
psconfig -cmd applicationcontent -install
5 参考链接
Setspn Overview
指定凭据和连接信息
Kerberos Checklist
How to configure SQL Server 2005 Analysis Services to use Kerberos authentication
HOW TO:配置 IIS 以支持 Kerberos 和 NTLM 身份验证
如何确保在创建到 SQL Server 2005 实例的远程连接时使用 Kerberos 身份验证
如何在 SQL Server 中使用 Kerberos 身份验证