Brien Posey
即使毫无经验的管理员也可以在几个小时内成功部署 Microsoft Office SharePoint Server 2007。尽管基本的部署确实能够正常使用,但是它很可能未经过相应的配置以实现最佳安全性。SharePoint Server 2007 是一种很容易安装、但很难正确安装的应用程序。
使得安全性极具挑战性的原因是 SharePoint 2007 试图通过一款产品来满足所有人的所有需要。SharePoint 2007 是一款 Web 应用程序,但您也可以将其当作协作工具、文档服务器,甚至开发框架。SharePoint 的抽象和高度可定制的本质使得很难保护其安全。
正如您可能已经指出的那样,没有什么神奇的解决方案可以保护 SharePoint 的安全。每一个 SharePoint 部署都是独特的,因此不可能有什么“万能型”的解决方案。但是,有一些基本的方法适用于所有部署。
如果您曾经创建过 SharePoint 站点,您一定知道 SharePoint 采用了模块化设计,它提供了一些构造块,用于创建 SharePoint 站点、站点集合、列表、库等等。谈到安全性,您可以充分利用这种模块化的本质。
具体的思路是重点保护 SharePoint 部署中各个组件的安全。SharePoint 的模块化本质意味着您的部署通常需要许多单独的 SharePoint 服务器。因此,如果您希望保护部署的安全,就必须保护这些单独的服务器的安全。
SQL Server
SharePoint 列表和库中包含的所有数据均存储在基础 SQL Server 数据库中,后者还存储了大部分 SharePoint 配置设置。很明显,正确保护 SQL Server 的安全是至关重要的。
小型组织通常将 SQL Server 和 SharePoint 安装在同一台服务器上,以便降低服务器硬件的成本。但是,无论是从安全性还是从性能的角度来看,将 SQL Server 和 SharePoint 部署在一台公用的机器上都不是一个好主意。
IT 安全中的一条最基本的概念是尽可能减少服务器的受攻击面。如果 SQL 和 SharePoint 位于同一台服务器上,该服务器的受攻击面就会非常大。因此,我的第一条建议是在专用的机器上运行 SQL Server。如果专用的 SQL Server 超出了您组织的预算,可以考虑使用服务器虚拟化技术来隔离 SQL 和 SharePoint。
另一个好主意是禁用所有不使用的服务和组件。基本的 SharePoint 部署需要使用 SQL Server 的数据库引擎、SQL Server 代理和 SQL Server 浏览器组件。更高级的安装可能需要全文索引、分析或报告服务。
如何确定您要禁用哪些功能?Microsoft 提供了一个名为 SQL Server 外围应用配置器(如图 1 所示)的工具,可以帮助您完成此过程。此工具用于分析您的 SQL Server 实施并禁用任何未使用的功能。您应该在 SharePoint 正常运行后运行此工具。
若要访问此工具,请从服务器的“开始”|“所有程序”|“Microsoft SQL Server 2005”|“配置工具”菜单中选择“SQL Server 外围应用配置器”选项。
图 1 SQL Server 外围应用配置器可帮助您找出可以禁用哪些组件和服务。
您还应该慎重考虑为 SQL Server 安全性选择的身份验证方法。尽管您可以选择混合模式或 Windows 身份验证模式,但是您应该尽可能将 SQL Server 配置为使用 Windows 身份验证。Windows 模式比混合模式更安全,因为它在身份验证过程中使用 Kerberos 安全协议。而且,由于 Windows 身份验证使用域用户帐户,因此您在 Active Directory 中建立的任何密码策略仍然生效。
服务帐户
管理员在部署 SharePoint 2007 时犯的最大的安全错误之一是他们没有正确配置服务帐户。如果您曾经安装过 SharePoint 2007,您肯定知道,在部署和配置过程中会多次要求您提供服务帐户。
管理员经常会创建一个单独的服务帐户,然后在整个 SharePoint 安装过程中使用该帐户。尽管所获得的 SharePoint 服务器能够正常使用,但是此方法从安全角度来看是有风险的。
问题在于:只要您向 SharePoint 提供服务帐户,都会向该帐户授予执行当前任务的权限。SharePoint 仅仅向帐户提供执行其工作所需的权限,而不会提供更多权限。但是如果您在整个部署过程中多次使用同一个服务帐户,最终该帐户就会拥有过多的权限,因为在您每次使用时,它都会获得更多权限。以后就可能会有人利用这些过多的权限在 SharePoint 服务器上运行代码,进而控制服务器。
对于如何规划 SharePoint 所使用的帐户结构,存在大量相互矛盾的信息,甚至很难确认哪些是推荐的最佳做法。毫无疑问,如果您执行基本的 SharePoint 部署,建议最少使用五个单独的帐户。
此外,还建议您单独创建一个特殊的用户帐户,专门用于安装 SharePoint 和 SQL Server。管理员的常见做法是在部署 SharePoint 时,使用自己的个人帐户或域管理员帐户进行登录。从安全角度来看,使用现有帐户可能是一个错误,因为该帐户将被授予更多权限,以便完成安装过程。
如果您决定使用专用的安装帐户,则必须使该帐户成为每台 SharePoint 服务器上的本地管理员组的成员。您还必须使该帐户成为 SQL Server 登录组的成员,从而使该帐户能够登录您的 SQL Server 实例。
最后,您需要向该帐户授予 SQL Server 上的“SQL Server 数据库创建者”和“SQL Server 安全管理员”角色。这些角色使得该帐户有权创建和修改数据库以及管理 SQL Server 的安全性。这些特殊权限是建议使用专用的用户帐户的根源。
除了创建专用于 SharePoint 安装过程的帐户以外,您还必须创建其他一些服务帐户:
数据库访问帐户。这是 SharePoint 用来与 SQL Server 数据库通信的帐户。
SharePoint 搜索服务帐户。SharePoint 搜索服务将使用此帐户把内容索引文件写入索引服务器,以及把索引信息复制到服务器场中存在的任何查询服务器。
内容访问帐户。此帐户用于在特定的共享服务提供程序内遍访内容。在有些情况下,您可能需要创建多个内容访问帐户,以便分别遍访多个内容源。
应用程序池服务帐户。此帐户由 IIS 内的工作进程使用。池内的 Web 应用程序必须能够访问 SharePoint 内容数据库,并且“应用程序池标识”帐户也利用了此进程。
SQL Server 服务帐户。SQL Server 也需要一个服务帐户,您应该为此目的使用一个专用的帐户。
更加高级的 SharePoint 部署可能需要使用更多服务帐户。本文末尾的“相关内容”部分中有一个链接指向一篇 TechNet 文章,该文章提供了您可能需要的其他服务帐户的相关详细信息。
命名约定
到现在为止,您可以看到,在开始部署 SharePoint 之前就需要创建大量帐户。确保顺利完成部署的一项技巧是在您创建服务帐户之前先确定它们的命名约定。
您可以使用不同的方法来建立服务帐户命名约定,但是应该遵循一些基本的规则。建议尽可能使用描述性的名称,并花时间记录所选的名称及其目标用途。例如,您可以将 SharePoint 搜索帐户命名为类似 SPT_Search 的形式。
不拼写出 SharePoint,是由于存在一些旧的限制。Windows 允许用户名的总长度超过 100 个字符,但是每个用户名的长度不能超过 16 个字符。长用户名偶尔会由于旧的硬件或软件而导致意外的问题。尽管这种情况很少见,但确实存在,因此最好坚持使用短用户名。
请注意,尽管我建议使用描述性的服务帐户名称,而且这种名称确实会使管理员的工作更加轻松,但是这么做并非总是能提供最佳安全性。服务帐户是黑客中意的目标,因为它们比普通用户帐户拥有更高的权限。它们经常使用静态的、一成不变的密码。对于这种情况,您可能需要考虑隐藏您的服务帐户。如果您这么做,务必记录服务帐户的名称和功能。
加密流量
在规划 SharePoint 部署时,管理员花费大量时间来设计服务器的体系结构。有时候会忽略的一个要素是公钥基础结构 (PKI)。您需要在部署 SharePoint 之前准备好 PKI,这样才能正确加密 SharePoint 流量。SharePoint 服务器与最终用户之间的 HTTP 流量必须进行 SSL 加密(使用 HTTPS)。
同样,SharePoint 服务器之间的流量也应该使用 IPSec 进行加密。这两种加密均依赖于证书和基础 PKI 结构。
这些最佳安全做法并不全面。但是,要尽可能保护 SharePoint 安装的安全,它们是一个好的开头。