【问题标题】:Security table access logging安全表访问记录
【发布时间】:2012-09-19 19:33:13
【问题描述】:

我是 SQL Server 2008 标准版的新手。我需要在给定的表上记录选择访问。我需要记录请求的数据和执行 select 语句的用户。或者记录用户和选择语句。

我曾尝试在网上查找,但似乎很难找到涉及 select 语句的任何内容。

请指点我正确的方向。

【问题讨论】:

    标签: sql sql-server-2008 logging


    【解决方案1】:

    您在这里谈论的是监视或审计 SELECT 语句。使用这些术语进行搜索将为您提供很多帮助。

    关于该主题的一般信息:An introduction to SQL Server2008 audit,作者:Brad M McGehee

    有关 MSSQLTips.com 的更多信息,一些使用 tSQL 的示例:SQL Server 2008 TSQL Auditing Commands for SELECT statementsOn MSDN 还有更多信息,请搜索 auditing 以查看每个版本允许执行的操作。在this other page on MSDN 你有一个非常详细的信息

    编辑:

    对于 SQL Server 2008 和 2008R2 标准版,没有审计功能,在 SQL Server 2012 标准版上是的,我们有,请查看this SO answer 了解更多详细信息。因此对于 SQL2008,您必须依靠 DDL's triggers 来审计 CRUD 操作。对于SELECT 语句,您必须手动执行。检查this post on SQLServeCentral.com

    编辑2 SQL Server 2012 Express 版本包含哪些审计内容?通过在谷歌上快速搜索,herehere

    【讨论】:

    • 仅在 SQL Server 2008 企业版中允许对 Select 语句进行审核。在 SQL Server Standard Edition 中,是否有另一种方法 og loggin Select 在给定的表上?
    • 它只在我需要登录的选择上,而不是在 CRUD 上。我知道选择没有触发器,并且没有选择使用 SP。现在我正在尝试使用 EVENT SESSION,但我记录了所有选择查询,而不是特定表。
    • SQL Server 2012 中的基本审核涵盖哪些内容?很难区分 MS
    • 我必须使用 SQL Server 2008,没有存储过程,也没有 SQL Server 2012。我认为正确的解决方案是使用扩展事件和 sqlserver.sql_statement_starting 上的监听来进行日志记录。它看起来像一个解决方案,在日志记录方面有开销,但可以完成这项工作。如果/何时更改为 SQL Server 2012,我将使用 Auditing
    • @HansClausen - 与您的用户可以在您的服务器上运行任意查询而导致服务器瘫痪的事实相比,日志记录的开销很小。
    【解决方案2】:

    拒绝用户select 对表的权限。

    创建存储过程,他们可以通过这些过程运行他们需要运行的查询。将任何必要的审计添加到存储过程的主体中。

    【讨论】:

    • 可以,用户可以访问所有数据库表,以构建他们想要的查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    相关资源
    最近更新 更多