【问题标题】:Need help locking my code for SQL Server需要帮助锁定我的 SQL Server 代码
【发布时间】:2010-09-23 23:38:57
【问题描述】:

我们希望在我们的软件中构建徒手构建 SQL 查询的功能(目前我们的软件无法这样做),但需要能够将其锁定,以便用户无法进行任何更改,只能从​​某些表中选择数据.是否有任何好的指南可以帮助我适当地锁定它(即,所需的最少权限、建议的禁用关键字等)?还是我只需要继续浏览 Web 并吸收我找到的所有 SQL Server 安全教程(针对系统本身,而不是编程)?谢谢。

【问题讨论】:

    标签: sql-server security delphi data-access


    【解决方案1】:

    实现这一点的最简单方法是创建一个服务帐户,您将在系统中明确使用该服务帐户来进行这种动态类型的查询。这个想法是您使用您一直在吸收的所有 sql 安全优势,并在服务器上创建一个非常受限的低级别服务帐户,并使用它来连接到数据库。

    我建议现在只给他们 SELECT 访问权限,然后如果您的用户要求并且在合理范围内,则逐渐释放控制权。

    This 链接将告诉您如何使用 GRANT 关键字为登录提供非常具体的帐户安全性。

    所以您需要做的就是在 sql server 中创建一个新帐户,使用基于 sql server 的安全性,而不是 Windows。之后,只需使用上述链接中的信息将您希望他们拥有的特定权限添加到该帐户即可。然后将应用程序中的连接字符串切换到该特定功能的新帐户。

    任何其他基于编程的安全性都是额外的好处,但单独的编程解决方案不会像数据库级别的访问限制那样万无一失。

    【讨论】:

    • 我非常喜欢这个想法。以我们的系统设置方式实现会有点棘手,但应该是可行的。
    【解决方案2】:

    我会在这里买皮带和牙套。

    • 确保您的查询工具是证明 反对sql注入和不需要的 查询。
    • 不要直接与 数据库,使用一个服务器进程来做 那个。
    • 创建一个 SQL Server 用户 对表具有只读访问权限 必需的。
    • 对安全保持偏执, 如果您不是,请雇用符合条件的人。

    HTH

    【讨论】:

      【解决方案3】:

      为带有“加密”标签的 SQL Server 创建所有对象(视图、表、过程、函数)。 例如: 创建带加密的程序 BBBB 作为 开始 ... 结束

      在此之后,用户无法查看源代码,也无法修改。

      【讨论】:

      • 以前没有考虑过这个。我不确定它在我们当前的系统上的工作情况如何,但它可能会带来很大的好处并解决我正在解决的其他几个问题。
      • 这适用于自 2000 到 2008 R2 以来的所有版本的 MS SQL Server。您可以像往常一样开发和调试代码,并且仅在数据库版本中使用加密。它 100% 保护您的代码免受无法看到加密对象 DDL 的用户的影响,而且您使用 SQL 服务器的工作也不会改变。
      【解决方案4】:

      除了专门为这些类型的操作创建最低权限帐户(我更喜欢我的所有用户帐户仅在某些 SP 上具有 EXEC 并在某些实用程序视图上具有 SELECT - 这通常是初学者),您还可以使用视图使数据尽可能简单并执行某些常见的连接。在用户绝对必须提供某种过滤器的情况下,您可以使用存储过程或内联表值函数,例如您不希望他们执行 SELECT * FROM 视图的日期范围。

      【讨论】:

      • 他们只能访问少数几个视图,不能访问存储过程。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      • 2016-07-04
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多