通过Internet访问 SharePoint
一旦在你的企业内部开始部署SharePoint,你会发现越来越多重要的业务信息出现在SharePoint的站点上。所有这些信息,如工作文档,项目信息和其他任何存储在SharePoint服务器上的数据都需要在线才能被访问。这些信息和数据如此重要,于是离开办公室也能访问这些数据的需求就会越来越多。 好消息是SharePoint可以实现需求,而且不止一种手段。
第一种,利用Outlook 2007的离线功能,通过把一个文档库的内容拷贝到一个Outlook folder中,你可以在离线状态下继续使用这些文档。
第二种,将SharePoint站点放到Internet上,在保证安全的前提下,提供从公司外部访问的能力。但这需要非常仔细的计划以保证系统的安全性,例如使用安全性服务产品如防火墙。这种方法的一个好处是,你可以用手机在任何地方通过无线网络访问公司的SharePoint站点,SharePoint专门为移动设备提供了特殊的文字界面以适应移动设备的屏幕。
因为SharePoint 是运行在 IIS 6上的一个web应用,因此很容易将它的访问开放到公司的外部网络。我们可以简单地打开防火墙,允许从外部连接到SharePoint 服务器。但是从安全性角度考虑,这并不是一个值得推荐的方式。 这会使SharePoint 服务器暴露在整个Internet上,面临各种各样的安全性威胁。另一个大问题是,取决于你选用的认证方式,用户名和密码可能会在Internet上以未加密的方式被传输。
更好的方案是在IIS 6上安装Secure Socket Layer (SSL) ,要求所有对SharePoint 服务器的访问都通过SSL连接,即所有的用户都通过https://网址进行访问。
最好的方案是禁止外部直接访问SharePoint 服务器。外部客户可以访问的是一个镜像站点。镜像站点在这里起到了代理的作用。微软的Internet Security and Acceleration Server, (MS ISA 服务器)可以用于这种方式的实现。这种方案提供了:
- 客户从Internet 上可以通过URL地址(如https://intranet.filobit.com)访问SharePoint站点。这个地址和公司内部使用的可以是同一个地址,除了https://的协议。
- 外部用户的访问将通过防火墙,然后直接被定向到MS ISA 服务器而不是实际的SharePoint服务器。
- MS ISA 服务器根据设置的规则检查请求的URL地址,如果一切正常,则从SharePoint服务器请求这个地址对应的网页,并将结果返回给客户端。
- 客户从客户端浏览器上看到的地址让他认为他当前连接的是真实的SharePoint服务器。当他点击页面上的一个链接后,上述过程再次启动。
这个方案的优点是客户无法访问到任何不被MS ISA 服务器允许的内容。MS ISA服务器一般被安置在公司内部网的安全隔离区 (DMZ) ,这个区内的服务器,如对外的Web服务器,可以被外部访问到 。管理员可以通过MS ISA 服务器上的规则设置来精确地控制外部客户可以访问的内容和可以执行的操作。例如,在很多组织里,根据用户当前所处的位置,会授予用户拥有不同级别的访问权限:当用户在公司内部网络访问时,他们可以访问全部内容,但如果用户现在处于公司的外部网络上,他们只能访问受到限制的一部分内容。这种能力是只有 MS ISA 才能够提供的, SharePoint 自身无法做到这一点。另外一个优势是对某些网页的频繁访问可以通过MS ISA 服务器的缓存来提高效率。
现在,我们讨论了如何让公司员工从外部网络访问公司的SharePoint 站点。那么,如何让合作伙伴和外部用户访问我们的SharePoint 站点呢?如果这样的用户需要受限地对SharePoint 站点进行访问,我们可以再给出一种解决方案。
开始之前,我们先要了解SharePoint如何管理用户,如何控制和分配权限。
任何要访问SharePoint的用户都要加入到SharePoint的用户组中,用户组被分配了具体的权限。SharePoint有一些缺省的用户组:
- q Visitor: 可以打开和阅读站点的信息,包括文档,图片,列表的内容等等。但不可以创建、修改和删除信息。
- q Member: 除了拥有Visitor的全部权限外,还可以创建、修改和删除信息,如新闻,文档,联系人等等。
- q Owner: 拥有站点所有的权限,可以做任何事情,如增加和删除用户组中的用户,修改用户组的权限。这个用户组是为站点的管理员设计的。
首先看一下如何在公司内部网上做访问控制。假设一个雇员Anna 需要通过内部网络访问SharePoint 站点,她需要只读访问的权限。管理员需要将Anna的账号加入到SharePoint 站点的Visitors组中。不久,Anna又要求对SharePoint 站点中的某个项目子站点拥有读写权限。 管理员只需将Anna的账号加入到子站点的Members组即可。 现在,Anna在SharePoint站点的不同位置拥有不同的权限了。无论Anna何时访问SharePoint 站点,SharePoint都要根据她所在的用户组来判断她的权限。
如果要允许用户从公司外部访问SharePoint 站点,必须对用户进行身份的验证。换句话说,用户必须先登录,然后SharePoint根据用户的身份进行权限的控制。对于系统外部的用户,这就造成一个问题,因为他们在公司内部网络上没有自己的账号。
方案一:创建内部账号
一个简单的办法是为每一个外部用户创建一个内部账号,然后将这个帐号加入到SharePoint站点的所有用户组中。在MS ISA服务器上对这个帐号的权限进行设置。这个外部用户要访问时,必须使用这个帐号登录。这个办法对于简单的情况是适用的。
方案二:使用表单认证
SharePoint 2007一个简单新的功能是支持表单认证(Forms Based Authentication),办法是为外部用户建立一个登录页面,并将外部用户的账号保存在SQL数据库中。这个方案因为需要数据库和代码的开发,不适合由管理员完成,会在另外的报告中单独讨论。
方案一,方案二的问题
但这2个方案并不是完善的解决方案。它可以使外部用户访问内部SharePoint站点,但如果外部用户离开原来的公司会发生什么呢?例如,假设Michael现在是合作伙伴ABC公司的雇员,因为参与到公司的一个项目,需要给Michael从外部访问SharePoint站点的权限。管理员为他创建了本地的账号,分配了权限,并告诉他通过什么URL地址来访问。Michael可以正常地访问SharePoint站点了,目前为止还一切正常。但1个月后,Michael离开了ABC公司,到竞争对手XYZ公司工作了。而公司和XYZ 没有业务关系,也不能允许XYZ的雇员访问内部SharePoint站点。这时管理员应该将Michael的帐号停用。但问题是管理员无法知道Michael 已经离开了ABC公司。如果幸运的话,也许ABC公司的某个好心人会告诉管理员这个消息。但如果外部用户的数量超过10个,这类问题就会非常难以处理。
从Windows 2003 Server R2开始,Microsoft发布了一个新的功能:活动目录联合服务(ADFS)。ADFS目的就是解决上面提到的问题,让两个完全独立的组织能够共享对web服务(如SharePoint)的访问,而不需要为远程用户创建内部的账号。这个思想非常简单,而且很好理解,但涉及的底层技术却足够单独写一本书了。
ADFS基本思想是让一个组织的用户可以用自己的账户去访问远程的,另外一个组织的web服务。例如现在有2家公司:A 公司和 B公司。Bob是 B公司的雇员,需要访问A 公司的SharePoint站点,他去找A 公司的管理员。A 公司的管理员将B/Bob账号加入到指定的用户组就可以了。
两个公司的Active Directory都将对方的AD服务器设置为信任服务器。主ADFS服务器被称作联合服务器,需要安装相应的组件,其主要任务是路由来自Internet的用户访问请求。它也负责创建需要传递给web应用的security token。ADFS Web 代理运行在web 服务器(这里是SharePoint服务器)上,用来验证外部客户。大多数组织都不希望自己的联合服务器暴露在Internet 上。通过安装联合代理服务器可以使的联合服务器不需要直接暴露出来。
方案四:MS Groove
SharePoint 2007还提供了一种新解决方案。通过MS Groove,一个项目成员可以共享和同步SharePoint的列表和文档库而不需要使用内部帐号。对于15人以下的团队,这是一个非常好的解决方案,Groove会自动进行信息的同步和更新。MS Groove拥有自己的用户数据库,所以不需要团队的成员都是来自同一个Windows域。.
需要注意的是,Groove是一个完全独立的应用,虽然它可以和SharePoint进行内容同步。虽然它们各自的产品定位是不一样的,但从某种角度讲, Groove和SharePoint都给团队和工作组提供了可以共享的工作空间。