【问题标题】:SQL database to only accept remote commands from a specific IP addressSQL 数据库仅接受来自特定 IP 地址的远程命令
【发布时间】:2013-06-06 01:40:15
【问题描述】:

是否可以通过 SQL Management Studio 将特定数据库设置为仅接受来自特定 IP 地址白名单的远程命令?请注意,同一服务器实例上可能还有其他数据库,我希望此限制仅适用于一个特定数据库。

谢谢!

【问题讨论】:

  • 这篇文章有一些很棒的信息...stackoverflow.com/questions/7127602/…
  • 据我所知,他们的建议会阻止对实例中所有数据库的访问。我只想对几个数据库之一进行此限制。
  • 那么基于触发器的解决方案可能对您有用,这里有一篇更深入的文章...connectsql.blogspot.co.uk/2012/07/…
  • 谢谢斯蒂芬。我不是触发器专家。我将如何修改该代码以使其仅适用于一个数据库?
  • 看看我不确定你是否可以,但是,另一种方法是将它基于应用程序名称和 IP ......所以包括像 APP_NAME() LIKE 'Payment App%' 这样的行并添加名称到硬编码的连接字符串

标签: sql-server ip-address whitelist


【解决方案1】:

这将取决于您对远程命令、身份验证方法和问题的确切含义,例如:您的 IP 范围是否将被管理和静态?

设置具有适当权限的用户并仅使用该权限从所需机器进行身份验证似乎更简单,这样如果客户端机器的 IP 地址发生更改,解决方案仍然有效吗?

那么您将只需要第二个用户,该用户在其他计算机上所需的权限较低

例如,如果您想为大多数人提供读取权限,但有些机器需要使用 ddl:

使用名为 REMOTE_POWERS 的用户从 127.0.0.2 登录,该用户在该数据库中具有 ddl 管理员角色

所有其他机器以用户 RO_PEON 的身份登录实例,并具有数据读取器等角色

【讨论】:

  • 我有一个带有硬编码 SQL 连接字符串的应用程序。此应用程序定期连接到远程数据库并检查新订单。如果找到它们,它会处理它们并将它们标记为已确认。问题是,如果 exe 意外地从另一个位置运行,例如为了测试,它可能会处理订单,然后正确的机器将看不到它们。所以我只希望在命令来自特定 IP 时更新数据库。
  • 这对我来说似乎有风险,最好有单独的测试和生产环境,这些环境被防火墙和变更控制流程隔离!另外,如果您限制从某些机器执行命令,那么您似乎实际上并没有运行有效的测试?如果您没有选择运行第二组应用程序的选项,则可能会将您的主数据库复制到影子实例中并对其进行测试 - 那么您只需要确保您有足够的磁盘空间来存储额外的数据和日志文件
猜你喜欢
  • 2014-08-23
  • 1970-01-01
  • 1970-01-01
  • 2020-05-24
  • 2011-11-12
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
相关资源
最近更新 更多