65.9K
CodeProject 正在变化。 阅读更多。
Home

审计 - SharePoint 的内置功能

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.50/5 (2投票s)

2012年7月30日

CPOL

5分钟阅读

viewsIcon

79814

downloadIcon

867

SharePoint 2010 的审计功能。

引言

在本文中,我们探讨了 SharePoint 2010 的审计功能。这是一项内置功能,为管理员和开发人员提供了极大的灵活性。

SharePoint 中的审计是什么?

审计涉及 SharePoint 环境内的活动跟踪。生成的审计报告可由管理员或经理用来确定 SharePoint 资源的使用情况。

通过启用审计,我们可以跟踪以下活动:

  • 列表访问
  • 库访问
  • 打开文档
  • 编辑项目
  • 签入/签出
  • 复制/移动/删除项目
  • 搜索
  • 编辑权限

以下是详细审计报告示例的外观:

底层方面,SharePoint 使用事件和 SQL Server 表来检索和保存审计条目。以下是我们将在本文中讨论的主题:

  • 启用审计
  • 查看审计条目
  • 自定义报告
  • 服务器对象模型
  • 审计事件类型
  • 编写自定义审计条目

启用审计

我们可以从“站点设置”>“审计设置”链接启用某个网站集 (site collection) 的审计。

在打开的“配置审计设置”页面中,指定要审计的事件。

启用审计后,您就可以继续尝试访问/修改现有列表/库项。这些活动应触发审计条目的创建。

注意:请注意,在实际场景中,您应该只启用所需的事件。过多的事件审计队列会给服务器带来更多工作量,并可能降低性能。

查看审计条目

现在,我们可以继续查看刚刚创建的审计条目。您可以从“站点设置”页面使用“审计日志报告”。

在出现的“查看审计报告”页面中,您可以看到有各种报告类别,例如:

  • 内容修改
  • 内容查看
  • 删除        
  • 策略修改等。

单击“内容查看”,因为这次我们只对查看报告感兴趣。在出现的对话框中,输入您要保存报告的文档库。单击“确定”生成报告。(报告是一个文档,因此需要一个文档库来保存它。)

单击“点击此处查看报告”链接以查看报告。它应该在 XLSX 文档中打开。XLSX 文件上有两个选项卡——摘要和详细信息。

自定义报告

现在我们可以尝试使用自定义报告生成。当我们需要基于或组合以下项获取报告时,此选项非常有用:

  • 自定义列表
  • 特定用户
  • 日期范围

请注意,SharePoint 的底层已保存所有事件记录。自定义报告将根据用户选择来过滤记录。

要生成自定义报告,请转到“站点设置”>“审计日志报告”>“运行自定义报告”。

您应该会看到以下带有筛选选项的页面。

您可以选择保存位置、列表、日期、用户和事件,然后单击“确定”按钮将报告生成为 XLSX 文件。

服务器对象模型

好处是我们可以使用服务器对象模型与审计进行交互。以下是 `Microsoft.SharePoint` 命名空间中一些重要的审计类:

  • SPAudit
  • SPAuditEntry
  • SPAuditEventType
  • SPAuditQuery

SPAudit

SPAudit 是主要类,可用于访问关联对象的审计设置。服务器对象模型,如 SPSiteSPWebSPListSPDocumentLibrary,包含一个名为 Audit 的属性,该属性代表底层的 SPAudit 设置。

SPAudit 类包含以下操作的方法:

  • GetAuditEntries() 用于获取审计条目
  • Update() 用于更新审计设置的修改

以下是获取审计条目的代码:

private void GetAuditEntriesButton_Click(object sender, EventArgs e)
{
    SPSite site = new SPSite("https://");
    SPAudit audit = site.Audit;
    var collection = audit.GetEntries();
}

以下是更新站点审计设置的代码:

private void UpdateButton_Click(object sender, EventArgs e)
{
    SPSite site = new SPSite("https://");
    SPAudit audit = site.Audit;
    audit.AuditFlags = SPAuditMaskType.None;
    audit.Update();
}

上面的代码通过将 AuditFlags 属性设置为 None 来清除所有审计事件。执行代码后,您可以重新访问网站集审计设置,以查看所有事件均已取消选中。

注意:您可以使用 SPAudit 类一次性更新多个网站集的审计设置。此外,您还可以使用 DeleteEntries() 方法自动化清除审计条目。

SPAuditEventType

枚举 SPAuditEventType 需要指定审计条目的事件类型。该枚举包含以下成员:

public enum SPAuditEventType
{
    AuditMaskChange = 14,
    CheckIn = 2,
    CheckOut = 1,
    ChildDelete = 7,
    ChildMove = 0x10,
    Copy = 12,
    Custom = 100,
    Delete = 4,
    EventsDeleted = 50,
    FileFragmentWrite = 0x11,
    Move = 13,
    ProfileChange = 6,
    SchemaChange = 8,
    Search = 15,
    SecGroupCreate = 30,
    SecGroupDelete = 0x1f,
    SecGroupMemberAdd = 0x20,
    SecGroupMemberDel = 0x21,
    SecRoleBindBreakInherit = 40,
    SecRoleBindInherit = 0x27,
    SecRoleBindUpdate = 0x26,
    SecRoleDefBreakInherit = 0x25,
    SecRoleDefCreate = 0x22,
    SecRoleDefDelete = 0x23,
    SecRoleDefModify = 0x24,
    Undelete = 10,
    Update = 5,
    View = 3,
    Workflow = 11
}

SPAuditQuery

SPAuditQuery 代表用于过滤审计条目的类。它提供了以下方法和属性:

您可以看到这些方法与自定义报告生成页面中可用的选项类似。使用 SPAuditQuery 的示例代码包含在源附件中。

编写自定义审计条目

有时我们需要为 SharePoint 解决方案编写自定义审计信息。在这种情况下,我们可以重用审计服务器对象模型机制来执行此操作。

以下是将内容写入审计条目的代码:

private void WriteAuditEvent_Click(object sender, EventArgs e)
{
    SPSite site = new SPSite("https://");
    SPAudit audit = site.Audit;
    audit.WriteAuditEvent(SPAuditEventType.Custom, "MySource", "<xml/>");
}

执行后,您可以通过调用 GetAuditEntries() 方法看到新条目。您可以使用关联的应用程序来查看它。

关于数据库使用的说明

审计条目存储在 SharePoint 数据库中。您可以在 SharePoint SQL Server 实例中查看此数据库。存储审计记录的表是 **AuditData**。为了插入您自己的记录到表中,建议使用服务器对象模型。

摘要

在本文中,我们探讨了 SharePoint 的审计功能。我相信您现在会同意这是一项很好的功能,可以节省我们大量的时间,这些时间否则会花在编写事件和持久化代码上。

关联的代码包含我们讨论的示例。

参考文献

© . All rights reserved.