使用 SharePoint Server 实现项目级审核.docx
《使用 SharePoint Server 实现项目级审核.docx》由会员分享,可在线阅读,更多相关《使用 SharePoint Server 实现项目级审核.docx(36页珍藏版)》请在冰豆网上搜索。
使用SharePointServer实现项目级审核
使用SharePointServer2007实现项目级审核
发布日期:
2007-05-16|更新日期:
2007-05-16
摘要:
了解内置于MicrosoftWindowsSharePointServices3.0和MicrosoftOfficeSharePointServer2007中的审核支持,以及如何使用自定义的项目级审核解决方案扩展此支持。
TedPattison,TedPattisonGroup
JoannaBichsel,MicrosoftCorporation
适用于:
2007MicrosoftOffice系统、MicrosoftOfficeSharePointServer2007、MicrosoftWindowsSharePointServices3.0。
下载MOSSSampleItemLevelAuditing.exe
本页内容
使用SharePointServer2007实现审核
WindowsSharePointServices和OfficeSharePointServer2007中内置的审核支持
项目级审核:
自定义的审核解决方案
显示审核日志中的条目
项目级审核
编写自定义审核条目
OfficeSharePointServer2007对审核的增值支持
OfficeSharePointServer2007对审核报告的支持
生成包含审核日志信息的Excel工作簿
使用ExcelServices实现服务器端工作簿呈现
打包项目审核解决方案以便进行部署
结束语
其他资源
使用SharePointServer2007实现审核
许多公司和政府机构都有一些政策和法规,要求公司和政府机构仔细跟踪用户在何处以及采用何种方式访问重要记录和文档。
特别是,这些公司和机构还需要维护审核日志,这些审核日志详细记录了跟踪数据的事件(如哪些用户查看和更新了记录和文档)以及这些事件发生的时间。
先前的MicrosoftWindowsSharePointServices2.0不能提供广泛的审核支持。
例如,不能使用组件审核对页面的访问,也不能审核对列表中的项目的访问。
而且,仅当库中的某个文档进行了更新才会触发WindowsSharePointServices2.0文档库中的事件处理程序。
因此,WindowsSharePointServices2.0文档库中的事件处理程序不能审核用户查看文档时发生的事件。
为适应用户的要求,最新版的MicrosoftSharePointProductsandTechnologies现在在审核支持方面提供了大量增强功能,所有这些增强功能都包含在2007MicrosoftOfficesystem中。
MicrosoftWindowsSharePointServices3.0和MicrosoftOfficeSharePointServer2007都提供了对用户访问页面、内容和文档的审核支持,并且它们都包含了一些诸如查看和更新一类的可审核的事件。
返回页首
WindowsSharePointServices和OfficeSharePointServer2007中内置的审核支持
WindowsSharePointServices3.0引入了内置的审核日志记录,您可以在网站集范围内启用和配置该功能。
在您启用审核功能时,WindowsSharePointServices会将审核事件条目写入到存储在内容数据库中的一个内部审核日志表中。
网站集的审核事件条目与所有其他的WindowsSharePointServices内容(如列表项目、文档和Web部件自定义内容)存储在一起。
当您备份一个网站集时,会同时备份审核日志中的所有信息。
虽然WindowsSharePointServices提供了基本的审核机制,但用户不能直接启用审核功能。
因为WindowsSharePointServices没有提供对写入审核日志的条目进行查看的功能,所以必须由开发人员编写代码才能启用WindowsSharePointServices审核日志记录功能。
开发人员还必须提供代码和用户界面,以读取审核日志中的条目和向网站用户显示这些数据。
本文提供的示例代码显示了如何创建这种类型的自定义审核解决方案。
虽然WindowsSharePointServices只提供基本审核机制,但OfficeSharePointServer2007通过提供一个允许在网站集级别进行审核的管理用户界面提高了价值。
OfficeSharePointServer2007在审核功能上更进一步,它能够在列表或文档库级别启用审核,并能够控制审核日志中应记录的事件类型。
OfficeSharePointServer2007还提供了一个报告功能,该功能使用MicrosoftOfficeExcel工作簿显示和保留审核日志的记录。
因此,OfficeSharePointServer2007使您能够利用WindowsSharePointServices的审核支持而不需要编写任何自定义代码。
返回页首
项目级审核:
自定义的审核解决方案
本文还提供了一个名为“项目级审核”(MOSSSampleItemLevelAuditing.exe)的自定义解决方案,该方案演示了一些在WindowsSharePointServices和OfficeSharePointServer2007中可使用的扩展审核支持的技巧。
首先,该自定义解决方案显示了如何通过编程方式启用审核日志记录来扩展WindowsSharePointServices。
它还提供了一个向WindowsSharePointServices网站用户显示审核日志内容的用户界面组件。
该自定义解决方案还演示了如何使用新的OfficeOpenXML格式生成包含审核信息的Excel工作簿,从而对报告功能提供更好的支持,以扩展OfficeSharePointServer2007。
项目级审核解决方案还显示了如何解决目前尚不能由WindowsSharePointServices或OfficeSharePointServer2007解决的问题。
特别是,该自定义解决方案演示了如何显示和报告与列表中单个条目或文档库中单个文档相关联的审核日志条目。
此解决方案的所有示例代码都包含在一个名为ItemAuditing.csproj的MicrosoftVisualStudio2005项目中。
图1显示了组成该解决方案的各种文件。
这些项目文件使用了WindowsSharePointServices3.0中引入的许多新的开发技巧,如自定义应用程序页、功能和解决方案包。
图1.ItemAuditing项目
在开始之前,请确保您的开发计算机已安装下列程序:
•
Microsoft.NETFramework3.0(RTM版本)
•
MicrosoftVisualStudio2005
•
MicrosoftWindowsSharePointServices3.0
•
MicrosoftOfficeSharePointServer2007
接下来,下载MOSSSampleItemLevelAuditing.exe文件并将其内容解压到开发计算机的某个目录中。
现在您就可以按照SetupDocument.docx中的说明运行该示例解决方案了。
在完成安装文档中的操作之后,就会在您的计算机上生成一个完整的VisualStudio2005项目。
本文以下部分解释了使此解决方案能够发挥作用的各个组件。
项目级审核解决方案由以下部分组成:
•
一个名为ItemAuditing的WindowsSharePointServices功能组件
•
两个名称分别为AuditLogViewer.aspx和ItemAudit.aspx的应用程序页
•
一个名为AuditLogWorkbook.ashx的自定义处理程序
•
一个名为ItemAuditing.dll的程序集
我们首先来查看一下ItemAuditing功能组件及其feature.xml文件。
Xml
Title="ItemAuditing"
Description="Thisfeatureallowsusertoviewtheaudithistoryofdocuments."
ImageUrl="CALVIEW.GIF"
Version="1.0.0.0"
Scope="Site"
ReceiverAssembly="ItemAuditing,Version=1.0.0.0,Culture=neutral,PublicKeyToken=7fd3ed697555604d"
ReceiverClass="ItemAuditing.ItemAuditingFeatureReceiver"
xmlns="
WindowsSharePointServices3.0功能组件始终安装在服务器场级范围内。
不过,您可以将功能组件的激活范围设置为四种级别中的一种。
可以在网站范围内激活功能组件,也可以在网站集、Web应用程序或服务器场中激活它。
在此,我们将ItemAuditing功能组件设计成在网站集级别激活。
您可以看一下前面讲到的Feature元素,其Scope属性设置为Site,这意味着它是在网站集范围内激活。
如果想创建一个在网站范围而不是在网站集范围内激活的功能组件,可通过将Scope属性的值指定为Web而不是Site来实现。
在WindowsSharePointServices服务器场中安装了ItemAuditing功能组件之后,就可以在该服务器场中的任何网站集中将它激活。
如果导航到“SiteCollectionFeatures”(网站集功能组件)管理页,则您能够激活功能组件,如图2所示。
图2.网站集功能组件管理页
如果查看feature.xml文件中的Feature元素,您就会注意到它有ReceiverAssembly属性和ReceiverClass属性。
这一技巧允许功能组件引用具有特定类的程序集,该类提供了一个随功能组件激活而触发的事件处理程序。
此种特定于功能组件的事件处理是由一个授权的自定义类实现的,该自定义类从SPFeatureReceiver类继承而来,如下面代码中ItemAuditingFeatureReceiver类所示。
C#
usingSystem;
usingMicrosoft.SharePoint;
namespaceItemAuditing{
publicclassItemAuditingFeatureReceiver:
SPFeatureReceiver{
publicoverridevoidFeatureActivated(SPFeatureReceiverPropertiesproperties){
//功能组件激活代码转到这里。
}
publicoverridevoidFeatureInstalled(SPFeatureReceiverPropertiesproperties){}
publicoverridevoidFeatureUninstalling(SPFeatureReceiverPropertiesproperties){}
publicoverridevoidFeatureDeactivating(SPFeatureReceiverPropertiesproperties){}
}
}
为项目级审核解决方案创建的功能组件接收器类仅在FeatureActivated事件处理程序方法中提供了代码。
不过,在安装功能组件时,以及取消激活和卸载时,也可以编写其他三种方法来提供事件处理行为。
在激活ItemAuditing功能组件时,其FeatureActivated事件处理程序方法将执行打开WindowsSharePointServices审核功能所需的代码。
事件处理程序中的代码通过获取一个对当前网站集的SPSite对象的引用来完成这一操作,然后在SPSite对象的Audit属性上设置正确的审核标志。
C#
publicoverridevoidFeatureActivated(SPFeatureReceiverPropertiesproperties){
SPSitesiteCollection=(SPSite)properties.Feature.Parent;
//启用审核标志。
siteCollection.Audit.AuditFlags=SPAuditMaskType.All;
siteCollection.Audit.Update();
//修改首要网站标题。
SPWebsite=siteCollection.RootWeb;
site.Title+="(audited)";
site.Update();
SPListTemplatetemplate=site.ListTemplates["DocumentLibrary"];
GuiddocLibID=site.Lists.Add("AuditLogs","LibraryforAuditLogWorkbooks",template);
SPListdocLib=site.Lists[docLibID];
docLib.OnQuickLaunch=true;
docLib.Update();
}
正如上面代码所示,FeatureActivated事件处理程序还更新了首要网站的标题,以使您能够直观地看到它已成功运行。
此外,程序代码还在首要网站创建名为AuditLogs的文档库。
此文档库用作一个包含了审核日志记录数据的OfficeExcel工作簿存储库。
本文稍后还将提供更详细的信息。
现在我们专门分析一下在网站集级别启动日志记录功能的代码。
Audit属性公开了一个SPAudit对象,该对象提供了一个AuditFlags属性。
AuditFlags属性基于SPAuditMaskType枚举,并且只需指定一个All值即可启用所有的审核功能。
另外需要注意,在修改SPAudit对象上的审核标志之后,还要调用Update方法。
C#
siteCollection.Audit.AuditFlags=SPAuditMaskType.All;
siteCollection.Audit.Update();
上面您看到的是如何对整个网站集启用审核功能。
不过,您应明白,对于具有巨大流量的大型网站集,这一功能可能是一项非常繁重的任务。
例如,如果您的大型网站集上有许多活动用户,或者,如果您在审核一些频繁的操作(如页面读取),则大量数据会非常迅速地填满审核日志。
在某些情况下,例如,当为政府机构中的分类文档设计存储库时,您可能想记录每一项可审核的事件。
这可能要求您在网站集级别启用所有审核事件。
您可能还要考虑将分类文档划分到它们自己的网站集中,这样,当用户查看未分类的文档时,您就不必记录同一级别的审核信息。
此外,您可能想在单个网站集范围内对审核内容有更灵活的控制。
例如,您可能想只审核更新操作而不审核读取操作。
也许,您需要对同一网站内某一文档库(而不是其他文档库)的访问进行审核。
幸运的是,在启用审核方式上,WindowsSharePointServices提供了更多的选择余地。
例如,您可以针对一个单独的文档库启用审核功能。
C#
SPSitesiteCollection=newSPSite("http:
//LitwareServer1");
SPWebsite=siteCollection.OpenWeb();
SPListlist=site.Lists["Proposals"];
list.Audit.AuditFlags=SPAuditMaskType.All;
list.Audit.Update();
另外还要注意,在启用审核功能时,您不需要记录所有类型的可审核事件。
您可以使用审核标志控制需要WindowsSharePointServices记录的审核事件的类型。
SPAuditMaskType枚举值就是一些按位标志,您可以结合使用这些标志配置想捕获的审核事件集。
C#
list.Audit.AuditFlags=SPAuditMaskType.View|
SPAuditMaskType.Update|
SPAuditMaskType.Delete;
list.Audit.Update();
上面的代码是一个可包含在审核日志中的事件类型子集的示例。
下面列出了所有可用的不同枚举值。
C#
SPAuditMaskType.CheckIn
SPAuditMaskType.CheckOut
SPAuditMaskType.ChildDelete
SPAuditMaskType.Copy
SPAuditMaskType.Delete
SPAuditMaskType.Move
SPAuditMaskType.ProfileChange
SPAuditMaskType.SchemaChange
SPAuditMaskType.Search
SPAuditMaskType.SecurityChange
SPAuditMaskType.Undelete
SPAuditMaskType.Update
SPAuditMaskType.View
SPAuditMaskType.Workflow
返回页首
显示审核日志中的条目
现在您已经学会如何启用审核日志记录,接下来我们要重点讨论如何将审核日志中的事件信息显示给网站用户。
项目级审核解决方案提供了一个名为AuditLogViewer.aspx的应用程序页。
它主要用于向网站管理员显示网站集审核日志的全部内容。
该项目级解决方案还包含一个名为elements.xml的文件,该文件提供了两个CustomActionElement(自定义操作)元素。
CustomAction元素用于向“网站操作”菜单添加菜单项,这样网站管理员就可以借助菜单定位到AuditLogViewer.aspx文件。
Xml
--AddCommandtoSiteActionsDropdown-->
GroupId="SiteActions"
Location="Microsoft.SharePoint.StandardMenu"
Sequence="1001"
Title="AuditLogViewer"
Description="Thispageallowsyoutoseetheauditlog."
RequireSiteAdministrator="True"
ImageUrl="/_layouts/images/LTTXTBOX.GIF">
此CustomAction元素是为添加如图3所示的菜单项而设计的,该元素的定义中包含RequiresSiteAdministrator属性,并赋予一个true值。
由于承载ItemAuditing功能组件仅在网站集的范围内有效,因此只有拥有网站集的用户才可以查看菜单项。
您还会发现,UrlAction元素的URL属性配置了一个包含“~sitecollection”令牌的URL。
这就是说,WindowsSharePointServices可以动态地分析URL,将用户重定向到基于当前网站集根路径的该应用程序页。
图3.自定义菜单项
网站集所有者在单击该菜单项以定位到“AuditLogViewer”(审核日志查看器)页面时,会被重定向到layouts虚拟目录下名为AuditLogViewer.aspx的自定义应用程序页。
此自定义应用程序页会从网站集的审核日志中读取所有事件信息,并使用SPGridView控件来显示这些信息,如图4所示。
图4.审核日志查看器页面
创建诸如AuditLogViewer.aspx的自定义应用程序页为向含有自定义代码的WindowsSharePointServices解决方案添加用户界面组件提供一个功能强大的武器。
与网页(例如,default.aspx)不同,自定义应用程序页要针对每个服务器场进行部署,而且不能一个站点接一个站点地进行自定义。
由于应用程序页运行于virtual_layout目录之外,并被编译成单独的程序集DLL用于服务器场内的所有网站,因此其性能要优于网页。
应用程序页与网页的不同之处还在于,您可以直接向它们添加代码。
通常,创建的自定义应用程序页会链接到application.master,这是标准WindowsSharePointServices应用程序页使用的主母版页文件。
通常,对于编写应用程序页,应该采取从Microsoft.SharePoint程序集内定义的名为LayoutsPageBase的基类进行继承的方法。
下面是诸如AuditLogViewer.aspx的自定义应用程序页的一个起始点,并带有基本布局。
<%@AssemblyName="Microsoft.SharePoint,Version=12.0.0.0,Culture=neutral,
PublicKeyToken=71e9bce111e9429c"%>
<%@PageLanguage="C"MasterPageFile="~/_layouts/application.master"
Inherits="Microsoft.SharePoint.WebControls.LayoutsPageBase"%>
<%@ImportN