深入剖析 Sharepoint分散的网站管理

Pav Cherny

下载本文中所用的代码: SharePoint2008_06.exe (1160KB)

Microsoft Windows SharePoint Services (WSS) 3.0 和 Microsoft Office SharePoint Server (MOSS) 2007 支持灵活的管理和安全模型,使 IT 组织可以集中控制基础结构组件,如 Web 服务器和数据库服务器,并通过托管分散控制

网站集和网站。集中的 SharePoint® 基础结构有助于减少维护开销、统一业务逻辑,提供对 SharePoint 资源的单一访问点,并避免不必要的技术投资。

同时,分散的网站管理可确保各部门保留对各自 SharePoint 网站集、网站、文档库、列表、工作流解决方案和其他 SharePoint 资源的自主控制。不过,将网站管理委派给各个部门有一个副作用,即增加了 IT 部门的维护难度。例如,如果无法访问环境内的网站集和网站,如何跟踪资源使用情况、过期的 SharePoint 网站和集中式基础结构中的过时内容?

在本文中,我将讨论 WSS 3.0 的安全模型,包括将 SharePoint 网站的管理控制委派给各个部门同时维护 SharePoint 基础结构的集中式管理控制时,会带来什么好处和影响。我介绍的内容包括:委派的网站管理如何运作;网站、列表和项目级别的访问权限和安全修整如何帮助维护既安全又易用的工作环境;以及 Web 场管理员如何在不提高 SharePoint 权限的情况下访问必要的网站统计信息。

如果要在测试实验室中参照我的介绍,请从 technetmagazine.com 下载本专栏的随附材料。材料包括基于 Windows Server® 2008 Web 场的详细部署说明,这些内容合理反映了一家具有多个部门的公司的生产环境。

SharePoint 基础结构和网站集管理

您可以根据单一服务器部署或 Web 场部署构建 SharePoint 基础结构。实际上,许多公司兼有上述两种情况。单一服务器部署适用于需要直接快速的协作解决方案的各个部门。性能和可靠性要求最低。如果部门的 SharePoint 服务器(通常部署在工作站硬件上)不可用,用户比较容易谅解,因为部门本身要负起系统维护责任,而该部门内的用户毕竟不是 IT 管理员。

如果是由 IT 部门维护服务器资源,情形便会完全不同。性能和可靠性成为关键因素,用户经常要求部署高可用性解决方案以确保遵循服务级别协议 (SLA)。负载平衡的 Web 场部署、SQL Server® 故障转移群集以及存储在存储区域网络 (SAN) 中的数据库都有助于满足公司的性能和高可用性需求。参见图 1 提供的体系结构说明。

图 1 SharePoint 基础结构与 SQL Server 故障转移群集和 SAN

图 1** SharePoint 基础结构与 SQL Server 故障转移群集和 SAN **(单击该图像获得较大视图)

图 1 所示,在集中式 SharePoint 基础结构中,多种类型的管理员必须相互合作来维护资源,但这些管理员会从不同的角度观察环境。例如,网站集管理员不会注意到基础结构中的服务器。网站集管理员使用标准 SharePoint 用户界面进行工作。无论是将网站承载到在办公室中运行 WSS 3.0 的计算机上还是在数据中心的 Web 场上,此界面都不会改变。

数据库管理员和 SAN 存储工程师也不会看到 SharePoint 基础结构。对这些管理员来说,SharePoint 数据库与其他 SQL Server 数据库没什么不同,而且 SQL Server 故障转移群集的逻辑单元号 (LUN) 与其他 LUN 也没什么不同。Web 场管理员是与 SharePoint 基础结构最直接相关的管理员,不过他并不能控制网站集、数据库或 LUN。

也可以这样说,部门的网站集管理员通常不了解基础结构的详细信息。毕竟,在部门中设置网站和授予团队和组访问权限并不需要知道这些细节。创建新网站和开始协作的过程很简单,很少会出现与 SAN 技术相关联的高存储成本等问题。

在每个项目与计划中,新工作组网站出现、过期网站滞留、过时内容未删除,而且 SharePoint 环境迅速增长,直到范围大到系统管理员无法再忽视为止。例如,在 2006 年 Microsoft IT 发起简化计划前,Microsoft 内部的 SharePoint 环境包含的网站一度超过 180,000 个。

网站集管理员学习相关知识有助于控制集中式 SharePoint 基础结构中的情况。应用网站集配额和锁定也很有用,但是在处理浪费宝贵存储空间和备份资源的过时工作组网站和内容时,效果不是很明显。

过时内容不一定会使网站集超过其配额。当然,您可以使用 SharePoint 3.0 管理中心网站中的“网站使用确认与删除”功能,将 SharePoint 配置为向网站集所有者发送电子邮件通知并在指定期间后自动删除未使用的网站集,但这项功能对个别网站级别不起作用。网站集可以包含当前网站和过时网站,但“网站使用确认与删除”功能在此粒度级别不起作用。

稍后我将介绍如何通过检查文档和列表项目的上次修改日期来识别未使用的网站和过时的内容,即使没有对网站集的访问权限也无妨。此报告功能并非直接提供,但幸好实现方法并不困难。

分散的 SharePoint 网站管理

委派 SharePoint 网站管理特权非常简单。通过使用 SharePoint 3.0 管理中心网站、命令行工具 Stsadm.exe 或自定义设置工具,您可以在基础结构中创建 Web 应用程序、托管路径和网站集。作为 Web 场管理员,您可以在创建网站集时指定主要和辅助网站集管理员。这些网站集管理员可以是常规的域用户。他们不需要 Web 场或其他基础结构服务器的管理权限。这些管理员在 SharePoint 用户界面中直接使用其 Web 浏览器执行网站管理任务。

图 2 显示委派的网站管理,您可以在随附材料的工作表中找到分步说明。在本例中,Web 场管理员为 HR 部门 (http://sharepoint/hr) 和 IT 部门 (http://sharepoint/it) 设置单独的网站集。

图 2 委派的 SharePoint 网站管理

图 2** 委派的 SharePoint 网站管理 **(单击该图像获得较大视图)

然后,HR 和 IT 管理员可以使用 SharePoint 用户界面中“网站操作”菜单下的“网站和工作区”功能创建子级网站,而且可以应用父网站的权限,或针对子级网站定义新的管理和用户权限。注意,除非显式配置,否则 Web 场管理员无法访问任何顶级或子级网站,HR 管理员无法访问 IT 网站,而 IT 管理员无法访问 HR 网站,虽然所有网站都承载在同一 SharePoint 环境中。

网站集和网站层次结构的设计取决于组织需求。在图 2 示例中,我并未在 http://sharepoint/hr 和 http://sharepoint/it 上创建主网站。换句话说,http://sharepoint 路径上没有网站集。不过,您可以轻松地在此路径中或使用其他托管路径创建网站集,如 http://sharepoint/sites/hr 和 http://sharepoint/sites/it。

您也可以为 HR 和 IT 创建单独的 Web 应用程序,以便建立更直观的基础 URL(如 http://hr 和 http://it),针对各部门设置常规门户网站,然后使用汇总 Web 部件列出这些主网站的子级网站信息。单独的网站集可促进自我管理;有助于限制对部门信息的访问;为母版页、页面布局、模板、Web 部件和导航控制提供个别自定义功能;而且可用于在专属内容数据库中放置机密数据,以区别于其他网站集和内容数据库。

角色、网站权限和安全修整

如果存在网站集并已委派管理权限,则网站集管理员就可以打开顶级网站,并使用“网站操作”菜单下的“网站设置”功能来管理网站集。这包括添加(或删除)具有网站集中所有网站的完全权限的其他网站集管理员、创建组、使这些组与角色关联,以及将用户添加到这些组以获取读取和参与者权限。它还包括设置子级组网站和工作组网站的功能。

虽然您可以分别为用户授予 SharePoint 权限,但最好根据特定角色创建 SharePoint 组。例如,SharePoint 包含针对访问者、参与者和所有者角色的三个默认组。访问者拥有只读访问权限;参与者可以将项目添加到列表和文档库,也可以个性化网页;所有者拥有完全控制权限。

有一项功能值得一提,就是 SharePoint 会根据用户角色执行安全修整,这意味着用户在用户界面中看到的链接和项目仅限于他们实际上有权访问的链接和项目。如果禁止用户访问某项资源,如某列表(通过在“列表设置”下配置显式权限)或所选列表项(通过使用项目上下文菜单中的“管理权限”命令),该列表或项将消失。如果用户在浏览器中直接指定项目的 URL,用户就会看到“错误:拒绝访问”页面。

图 3 显示安全修整的运行情况。HR 管理员具有完全权限,并且能够使用“网站操作”菜单执行管理任务。另一方面,HR 访问者只有网站集的只读权限,而且看不到此菜单。

图 3 SharePoint 界面中基于用户角色的安全修整

图 3** SharePoint 界面中基于用户角色的安全修整 **(单击该图像获得较大视图)

安全修整非常有用,因为它会隐藏无法访问的功能、链接和项目,但这也意味着 Web 场管理员如果没有访问权限,就无法使用 SharePoint 用户界面列出网站和网站资源。您将无法在网页或 Web 部件中看到这些资源。此外,无法访问的资源不会显示在搜索结果中,因为 SharePoint Enterprise 搜索会根据提交查询的用户的身份来运行安全修整。

那命令行呢?

如果图形用户界面无法在不提高网站集级别权限的情况下提供访问所需信息的方法,也许命令行工具 Stsadm.exe 能提供解决方案。例如,您可能认为可以使用命令

Stsadm -o enumsites -url http://sharepoint

列出 http://sharepoint Web 应用程序中的所有网站集和所有者。然后,您应该可以使用以下命令列出所有子网站:

Stsadm -o enumsubwebs -url <site collection>

但是,在 Web 场环境中,Stsadm.exe 的响应往往是一条错误消息,指示缺少该数据库的访问权限。即使您是 Web 场管理员,而且可以管理 SharePoint 3.0 管理中心中的网站集,Stsadm.exe 也还是无法枚举网站集。如果您在没有 SQL Server 访问权限的情况下在 Web 场上使用 Stsadm.exe,则会收到以下错误消息:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\BIN>stsadm -o enumsites -url http://sharepoint

<Sites Count="2">

<Site Error="Cannot open database &quot;WSS_Content&quot; requested by the login.The login failed.&#xD;&#xA;Login failed for user 'CONTOSO\SPAdmin'.">

<Site Error="Cannot open database &quot;WSS_Content&quot; requested by the login.The login failed.&#xD;&#xA;Login failed for user 'CONTOSO\SPAdmin'."/>

Web 场管理员之所以会收到此错误消息,是因为 Stsadm.exe 在已登录用户(如 CONTOSO\SPAdmin)的环境中运行,而 SharePoint 3.0 管理中心网站是在与 SharePoint 管理中心 v3 应用程序池相关联的系统帐户(如 CONTOSO\WssConfigAdmin)的环境中访问 SharePoint 数据库。虽然授予您在 SQL Server 内容数据库中的 db_owner 帐户权限可让您运行 Stsadm -o enumsites -url http://sharepoint 命令,但您仍无法枚举网站集中的子级网站。命令 Stsadm -o enumsubwebs -url <site collection> 返回访问被拒绝。(HRESULT 发生异常:0x80070005 (E_ACCESSDENIED)),您又得重新开始。不过,有一个更好更有效的方法,该方法无需提高 SQL Server 权限。

内容数据库中的网站信息

如果无法通过标准 SharePoint 界面和工具获取所需信息,则必须直接使用 SharePoint 内容数据库。不过先要提醒您 — 这是最后一招!内容数据库依靠专属架构和数据库结构,而 Microsoft 只在 WSS 3.0 SDK 中记录部分专属架构和数据库结构,旨在劝阻客户直接使用数据库。您应该尽可能使用 SharePoint 用户界面、命令行工具、对象模型或 Web 服务来访问所需信息。

如果没有其他选择,必须直接使用数据库,则您至少要将解决方案限制为只读访问。不要试图修改数据库架构或数据库结构,否则会导致严重问题,使得您必须从备份还原网站集或重新安装 SharePoint Web 场。

实现报告解决方案来直接访问内容数据库还有一个替代方案,就是将 Web 场管理员帐户指定为网站集配置中的辅助所有者。Web 场管理员可以在 SharePoint 3.0 管理中心网站中执行这个步骤。您可以在“应用程序管理”页的“SharePoint 网站管理”下找到对应的“网站集管理员”链接。

作为辅助网站集管理员,您可以在 Web 浏览器中打开网站集,显示“网站设置”,然后单击“网站管理”下的“网站使用率报告”链接(前提是您在 SharePoint 3.0 管理中心内启用了“使用率分析处理”)。如果要跟踪 SharePoint 服务器上日志文件中的使用率数据,请参考“操作”页面上的“日志记录和报告”。默认情况下,“网站使用率报告”功能处于禁用状态。

但是,如果环境中有大量网站集或严格要求,使您无法对 Web 场管理员授予必要的权限,那么针对各个网站集手动创建“网站使用率报告”就不切实际了。更务实的方法是实现直接 ASP.NET 报告应用程序,从内容数据库列出所有网站集和网站,同时也列出重要的统计信息,如项目数量、所有项目的总大小以及项目的上次修改日期,如图 4 所示。

图 4 直接从内容数据库获取网站统计信息

图 4** 直接从内容数据库获取网站统计信息 **(单击该图像获得较大视图)

如果您以 SharePoint 管理中心 v3 应用程序池帐户的身份来运行此应用程序,则可以访问内容数据库,而无需提高 SQL Server 权限。如前所述,管理中心帐户已经具备必需的 SQL Server 权限。

随附材料包含对 SQL 服务器的内容数据库使用 SELECT 查询的简单报告解决方案,还包含在 Web 服务器上部署此解决方案的分步说明。务必注意,我并未实现任何安全性检查。此解决方案会通过匿名验证运行。

管理中心帐户提供必需的安全上下文以访问内容数据库,因此无需验证用户。对于解决方案的网站,我使用了自定义端口,通过 Windows Server 2008 的 Windows® 防火墙进行了锁定,因此只有本地用户才能打开 Web 应用程序。这样可满足测试环境的安全性需求,但是在生产环境中,您应该进一步加强安全性,如启用 Windows 验证和针对 ASP.NET 应用程序的虚拟目录配置受限的访问权限。

结束语

SharePoint 提供了灵活的网站集和网站管理功能,使您可以集中处理 SharePoint 基础结构,同时根据公司的特定需求分散网站管理。集中式基础结构对于任何规模的公司都有帮助,因为统一的环境有很多优点:有助于降低成本;促进部门内部和跨部门的信息共享;提供应用专业知识的基础,使用目标方法维护环境的高安全性、可靠性和可伸缩性;以及为用户提供公司网络中网站与 SharePoint 资源的单一访问点。

同时,各个部门和业务部门仍可以继续控制其 SharePoint 资源。Web 场管理员可以指定网站集管理员,然后这些管理员会在其责任范围内执行网站管理任务,而无需 IT 部门介入。

然而,将控制权交给各部门的同时,Web 场管理员也丧失了使用标准 SharePoint 功能和工具监视基础结构中资源使用情况的能力。对内容数据库应用配额、向网站集管理员发送电子邮件提醒以及基于报告目的跟踪使用率数据,这些方法都能帮助减缓问题;但是,若要有效管理 SharePoint 基础结构,Web 场管理员还需要其他工具才能以只读方式直接从内容数据库检索所需的网站元数据。

可选的方法包括使用 SQL Server 2005 Reporting Services 或类似的企业级报告解决方案。如随附材料中的示例所示,您也可以使用 SQL Server SELECT 查询获取必需的信息。

Pav Cherny 是一位 IT 专家兼撰稿人,专门研究 Microsoft 协作与统一通信技术。他的作品包括白皮书、产品手册和书籍,其内容主要介绍 IT 运营和系统管理。Pav 是 Biblioso Corporation 的总裁,该公司主要经营托管文档和本地化服务。

© 2008 Microsoft Corporation 和 CMP Media, LLC。保留所有权利;未经允许不得复制本文的部分或全部内容.