审计 - SharePoint 的内置功能






4.50/5 (2投票s)
SharePoint 2010 的审计功能。
引言
在本文中,我们探讨了 SharePoint 2010 的审计功能。这是一项内置功能,为管理员和开发人员提供了极大的灵活性。
SharePoint 中的审计是什么?
审计涉及 SharePoint 环境内的活动跟踪。生成的审计报告可由管理员或经理用来确定 SharePoint 资源的使用情况。
通过启用审计,我们可以跟踪以下活动:
- 列表访问
- 库访问
- 打开文档
- 编辑项目
- 签入/签出
- 复制/移动/删除项目
- 搜索
- 编辑权限
以下是详细审计报告示例的外观:
底层方面,SharePoint 使用事件和 SQL Server 表来检索和保存审计条目。以下是我们将在本文中讨论的主题:
- 启用审计
- 查看审计条目
- 自定义报告
- 服务器对象模型
- 审计事件类型
- 编写自定义审计条目
启用审计
我们可以从“站点设置”>“审计设置”链接启用某个网站集 (site collection) 的审计。
在打开的“配置审计设置”页面中,指定要审计的事件。
启用审计后,您就可以继续尝试访问/修改现有列表/库项。这些活动应触发审计条目的创建。
注意:请注意,在实际场景中,您应该只启用所需的事件。过多的事件审计队列会给服务器带来更多工作量,并可能降低性能。
查看审计条目
现在,我们可以继续查看刚刚创建的审计条目。您可以从“站点设置”页面使用“审计日志报告”。
在出现的“查看审计报告”页面中,您可以看到有各种报告类别,例如:
- 内容修改
- 内容查看
- 删除
- 策略修改等。
单击“内容查看”,因为这次我们只对查看报告感兴趣。在出现的对话框中,输入您要保存报告的文档库。单击“确定”生成报告。(报告是一个文档,因此需要一个文档库来保存它。)
单击“点击此处查看报告”链接以查看报告。它应该在 XLSX 文档中打开。XLSX 文件上有两个选项卡——摘要和详细信息。
自定义报告
现在我们可以尝试使用自定义报告生成。当我们需要基于或组合以下项获取报告时,此选项非常有用:
- 自定义列表
- 特定用户
- 日期范围
请注意,SharePoint 的底层已保存所有事件记录。自定义报告将根据用户选择来过滤记录。
要生成自定义报告,请转到“站点设置”>“审计日志报告”>“运行自定义报告”。
您应该会看到以下带有筛选选项的页面。
您可以选择保存位置、列表、日期、用户和事件,然后单击“确定”按钮将报告生成为 XLSX 文件。
服务器对象模型
好处是我们可以使用服务器对象模型与审计进行交互。以下是 `Microsoft.SharePoint` 命名空间中一些重要的审计类:
-
SPAudit
-
SPAuditEntry
-
SPAuditEventType
-
SPAuditQuery
SPAudit
SPAudit
是主要类,可用于访问关联对象的审计设置。服务器对象模型,如 SPSite
、SPWeb
、SPList
、SPDocumentLibrary
,包含一个名为 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 的审计功能。我相信您现在会同意这是一项很好的功能,可以节省我们大量的时间,这些时间否则会花在编写事件和持久化代码上。
关联的代码包含我们讨论的示例。