• 15
  • 15
分享
  • 数据库的审核功能——软件测试圈
  • 恬恬圈 2021-11-11 10:38:55 字数 2093 阅读 1598 收藏 15

SQLServer2008之前的版本只能是通过触发器或SQL跟踪来实现审核,没有专门的管理工具来管理审核。到了SQLServer2008的时候,新增了数据库审核功能,相比较于触发器,数据库审核不需要编写语句,并且不依赖与具体的表或数据库,而是独立存在的。利用SQLServer所提供的全面的数据审核功能,可以帮助企业不论是在服务器级别还是在数据库级别都可以监控所有的事件。

SQLServer2012的审核功能,可以对服务器级别和数据库级别的事件组或者是单个事件进行审核。SQLServer审核可以是一组操作,例如Server_Object_Change_Group,也可以是单个操作,例如对表的SELECT操作。Server_Object_Change_Group包括对任何服务器对象的CREATE、ALTER和DROP操作。通过SQLServer审核,用户可以创建针对服务器级别的审核规范和针对数据库级别事件的数据库审核规范。

经过审核的事件以及结果将发送到目标,目标可以是文件、Windows安全事件日志或Windows应用程序事件日志。必须定期查看和归档这些日志,以确保目标具有足够的空间来写入更多记录。这些记录项包括:触发可审核操作的日期时间、操作会话ID、相关权限、发生审核的实体对象、当前登录名及用户名等信息。但是需要注意的是任何经过身份验证的用户都可以读取和写入Windows应用程序事件日志。因此,在将审核信息保存到某一文件时,为了避免信息被篡改,用户可以考虑限制对文件位置的访问,并对SQLServer帐户设置适当的权限,例如审核管理员将目标进行存档时,新目标路径的权限一般定义为审核管理员具有读写权限,一般的审核读取者具有读权限。

建立审核的过程是:创建审核并且定义目标文件、创建服务器审核规范和数据库审核规范、将创建好的审核规范映射到审核、启用审核。经过以上简单几步,在创建并启用审核功能后,目标文件将接收各项的输出。

实验:

创建审核

首先在安全性—审核中创建一个默认的审核规范,此审核规范目的是将审核的结果输出到Windows应用程序事件日志。操作方法是,在对象资源管理器中,打开“安全性”节点下的“审核”,右键即可新建审核,选择将结果输出到Windows应用程序事件日志中后就不能定义审核文件的个数以及审核文件的最大大小,如下图所示:

1.png

2.png

接下来需要创建服务器审核规范并映射到刚才创建的默认审核上,创建服务器审核规范的方法是:在对象资源管理器中,右键单击“服务器审核规范”,然后单击“新建服务器审核规范”。这将打开“创建服务器审核规范”页。

1.png

2.png

在名称中使用默认设置,用户可以根据需要进行更改,审核项中选择刚才新建的默认审核名。“审核操作类型”选项,根据需要选择相应的操作组,在此选取FAILED_LOGIN_GROUP。指的是主体尝试登录到SQLServer,但是失败。此类中的事件由新连接引发或由连接池中重用的连接引发。说简单点就是记录尝试登录到MicrosoftSQLServer的失败信息。

审核创建完成后,默认为禁用状态,接下来就分别启用服务器审核规范和审核,如下图所示:

1.png

2.png

测试

下面来测试刚才创建的审核能否生效,我们使用SA用户,故意使其登录失败。如下图所示:

1.png

查看审核日志

用户可以使用Windows中的“事件查看器”实用工具来读取Windows事件。对于文件目标,可以使用SQLServerManagementStudio中的“日志文件查看器”或使用fn_get_audit_file函数来读取目标文件。如下图所示:

1.png

2.png

3.png

下面再针对select查询做一个审核。来记录针对NorthwindCS数据库中表的Select操作。

首先还是创建审核,操作方法同上面相同,审核名为:查询审核。在这里选择审核目标为文件,然后将文件存放在C:\审核日志这个文件夹下面,在启动审核之后,可以看到文件夹里增加了一个文件,这个就是审核日志。

1.png

2.png

再针对数据库创建数据库审核规范,操作方法是:在指定数据库上找到“安全性”选项卡,在其中的“数据库审核规范”上,点击右键,弹出“新建数据库审核规范”,如下图所示:

1.png

这里对应选择刚才新建的查询审核规范,审核操作类型选择select,对象类型选择Object

1.png

可以看到,对象名称这里可以选择要审核的对象类型,可以是表、视图、存储过程等。还可以具体到对应的哪一张表、哪一个视图等。

1.png

在主体名称中,可以选择审核对应的数据库角色或者某个用户

1.png

创建好之后全部启用,然后随便查询两个,不过查询的范围必须在刚才定义的对象名称和主体名称之内,否则无法审核到

1.png

查看审核结果如下:

2.png

除了右键审核查看审核日志以外,还可以用SQL语句进行查询:

SELECT*FROMsys.fn_get_audit_file(
'C:\审核日志\查询审核_E59B8169-454B-49DC-9E17-1239B1CFD7F2_0_130964552067760000.sqlaudit'
,default,default)
wheredatabase_name='NorthwindCS'
GO


作者:佚名

文章来源:百度文库

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   据台湾《经济日报》,特斯拉正在增加 Dojo D1 超级计算机芯片的订单。Dojo D1 是特斯拉专门为 Dojo 超级计算机设计的定制芯片,由台积电代工。  知情人士透露,特斯拉计划明年将 Dojo D1 芯片的产量增加一倍,达到 1 万片。预计到 2025 年,台积电代工的 Dojo D1 芯片订单量将持续增加,考虑到 Dojo 超级计算机的可扩展性。  特斯拉使用 Dojo 超级计算机训练高级驾驶辅助系统和完全自动驾驶系统的人工智能模型。随着 FSD、自动驾驶出租车和 Optimus 机器人等项目的推出,Dojo 超级计算机对公司运营的贡献可能会更大。  特斯拉增加 Dojo D1 ...
            0 0 1043
            分享
          •   当前,系统测试主要集中在功能测试、性能测试以及安全测试三大方面,对于容量测试的关注比较欠缺,特别是磁盘容量空间。从系统测试业务连续性上考虑,容量测试是其中不可或缺的步骤,做好容量测试可以进一步优化信息系统服务能力,从而提供持续、合理的系统服务。  对于容量测试,首先需要明确几个概念。容量管理,是指根据当前和未来的业务需求,在恰当的时间、以恰当的成本提供所需的IT资源。管理对象是对环境中的业务应用系统、主机平台设备、开放平台设备、网络、机房环境设施等进行容量规划。容量评估,是指对系统是否能够达到要求的生产能力,并且有一定超负荷运行能力以满足未来市场的高峰要求的评估。  本文从测试阶段出发,针...
            0 0 1385
            分享
          • 在软件研发中,有一种思想叫TDD,即测试驱动开发,TDD是敏捷方法中的一项核心实践,其原理是在开发功能代码之前,先编写单元测试用例代码,对要编写的函数或类明确测试方法后,再进行设计与编码。本篇不是讲如何来实践TDD,而是利用这种思想来推进项目的进度。大部分人可能都有这样的感受“别人催着自己的工作往前赶,心里贼反感”,“而自己催着别人往前赶,心里只有快感”。在大部分项目都在走敏捷模式的情况下,项目经理已经被弱化,而产品经理更多关注设计、客户,使项目团队经常出现一团散沙的情况。作为下游的测试团队就贼难受,上游的设计、开发掉了链子,如延期,在时间截点已被卡死的情况下,测试团队很难顺利完成项目测试并交...
            0 0 2269
            分享
          •   虽然当代社会已经是一个男女平等的社会,但是在职场中男女平等真的做到了吗?  真实情况是还是有区别对待的,特别是已经结婚但是未生育的职场女性。同样的工作能力,同样的薪资要求,一般企业更会倾向于选择一位男性求职者。  那么作为一个重返职场的宝妈或者是即将成为宝妈的女性来说,在职场中更是不占优势的,那么这部分人在求职或者工作的过程中,应该注意一些什么呢?  准宝妈之求职篇  作为一位准宝妈来说,如果目前是有工作的,那么是不建议在妊娠期间更换工作的,出去应聘的时候,企业会考虑到实际情况:要产检、不能加班、又很快会面临产假......  在员工本身还没有给企业创造价值的时候,企业还需要支付员工的产假...
            0 0 1138
            分享
          • 1.什么是接口?接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。2.接口都有哪些类型?接口一般分为两种:程序内部的接口系统对外的接口系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有...
            8 8 891
            分享
      • 51testing软件测试圈微信