【问题标题】:Hide SQL in Profiler在 Profiler 中隐藏 SQL
【发布时间】:2009-12-01 03:51:02
【问题描述】:

如何使我的 SQL 语句不出现在 Profiler 中? 它们包含敏感信息,我不希望它们 在 Profiler 中显示。

感谢您的回复!

【问题讨论】:

    标签: sql sql-server sql-server-2005


    【解决方案1】:

    探查器只能由具有适当权限的人运行,因此如果您的安装得到适当保护,您应该没问题(没有用户应该能够探查您的应用程序)。这超出了安全性,因为探查器会大大降低服务器速度。

    【讨论】:

    • 并非总是如此。 DBA 可能对数据库具有管理权限(用于维护),但无权查看数据库内的敏感详细信息的情况。加密/散列信息是为这两种情况提供的一种解决方案。
    【解决方案2】:

    没有办法。无法删除分析器中的“文本”列。

    您需要运行分析器的权限(sysadmin 或 GRANT ALTER TRACE),因此这不是隐式权限。

    注意:

    • 系统管理员可以解密存储的过程或添加日志记录代码,无论他们是否运行分析器
    • 需要控制物理访问,至少要阻止有人拿走数据库的副本
    • 无论如何都不会跟踪 sp_password 或 ALTER LOGIN 等内容

    【讨论】:

      【解决方案3】:

      我能想到的唯一方法是让它们成为存储过程(分析器只会显示调用),但如果参数是安全的(很可能),那么这对你没有帮助(编辑:正如在 cmets 中指出的那样,您可以更改分析器的配置以包含它,所以这不会有太大帮助)

      您是否考虑过不向不允许查看数据的人授予访问权限?运行分析器的访问权限是相当高的访问权限...

      另外,您在存储/查询数据之前是否考虑过hashing 您的数据?有时这行不通,但如果我们谈论的是密码,那么它们确实应该以加密形式存储和查找。

      【讨论】:

      • 将它们设为存储过程是不够的,因为 SP:StmtCompleted 事件仍可用于跟踪存储过程的执行 (msdn.microsoft.com/en-us/library/ms189570.aspx)
      • 但这不会在实际存储过程中显示 SQL。正如我所说,只有当它是 SQL 本身而不是你需要保护的参数时它才会起作用。 (尽管事后看来,任何有权运行分析器跟踪的人都可能足以显示存储过程的定义)
      • 不,那一步一步显示正在执行的实际语句。
      【解决方案4】:

      我注意到如果您使用 SQL 中内置的加密函数(写于 https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/sql-server-encryption?view=sql-server-ver15),例如 ENCRYPTBYPASSPHRASE,文本不会显示在分析器中 - 我不确定这是否 100% 万无一失,但它确实符合这个问题。

      示例...

      【讨论】:

        猜你喜欢
        • 2020-02-12
        • 1970-01-01
        • 2011-05-06
        • 2014-08-07
        • 2013-09-10
        • 1970-01-01
        • 2016-09-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多