【问题标题】:How secure is Azure SQL connection?Azure SQL 连接的安全性如何?
【发布时间】:2018-10-22 16:41:46
【问题描述】:

我正在开发 WPF 应用程序,该应用程序使用 EF 6 和定义的连接字符串连接到 Azure SQL(没有 Web 服务可以在运行 SQL 和 Web 服务器的 Azure 上省钱)。

所以我的问题是这种连接有多安全?

我有连接字符串 Encrypt=True (所以我使用的是 SSL)。 我正在使用 AD 用户凭据连接到 DB 本身(AD 用户和相应包含的 DB 用户的组合,不幸的是用户名和密码在 app 的配置文件中)。 我已经在 Azure AD 中注册了应用程序,并授予它使用与 AD 用户匹配的包含 DB 用户访问 DB 的权限。 (我正在使用此应用程序客户端 ID 来识别通信来自我的 WPF 应用程序)。

我可以在这里看到的唯一威胁是,如果有人可以访问安装了应用程序的计算机并从配置文件中检索建立连接和对其进行身份验证所需的所有信息。

但是我在网络方面真的很弱,我不知道是否有人可以通过扼杀网络流量来获取这些信息。 (我自己尝试使用wireshark,但对我来说这一切看起来都很乱)

那么有没有人知道这种通信是如何以任何方式被破坏的?

【问题讨论】:

  • 如果您要分发这个 WPF 应用程序,您肯定不希望它直接与 SQL 服务器对话。在它之间放置一个 Web API,这样您的配置就不必与您的 WPF 应用程序一起分发
  • 我不会广泛分发它。它将安装在 2 台计算机上,仅此而已。这是一家非常小的公司,不想在 PoC 上花更多的钱。也许以后再做,但现在我能做的就这些了。

标签: c# azure security networking azure-sql-database


【解决方案1】:

SQL Server 和 SQL Azure 支持数据库连接加密(动态加密)。请注意,SSL 是较旧的术语 - 当前支持与 SQL 引擎(在任一上下文中)对话的最佳功能是 TLS 1.2。请注意,您需要拥有正确(最新)版本的客户端驱动程序,才能在与 SQL Azure 通信时获得此安全性。 SQL Azure 在使用这些驱动程序时默认强制加密。您可以在这篇文章中阅读当前状态: https://support.microsoft.com/en-us/help/3135244/tls-1-2-support-for-microsoft-sql-server

关于您更广泛的问题,在编写应用程序(2 层或 3 层)时需要考虑很多事情。您应该查看 Azure SQL DB 上的防火墙以锁定您启用的任何路径。您应该使用 SQL 权限模型来限制每个用户/角色在数据库中操作时可以执行的操作。您应该使用审计来跟踪谁连接到数据库(以及从哪里连接)。您应该确保您使用的是 TDE(默认情况下在 SQL Azure 中用于新数据库)。 SQL 中的其他安全功能也可能对您有用(行级安全性、数据屏蔽、始终加密等)。网络部分实际上只是设计安全解决方案的起点。

【讨论】:

  • 很高兴知道驱动程序强制执行 TLS 1.2。这是有价值的信息。我知道我可以在 SQL DB 本身中实现许多安全层。我确实做到了。我担心网络的东西,因为那是我的知识差距所在。这就是为什么我想知道是否可以检索从请求连接到 Azure SQL 本身所需的所有凭据。
  • 我建议您在客户端上附加一个数据包嗅探器并验证您是否满意。请注意,下层驱动程序可能不支持 TLS 1.2(并且一些用于其他语言的更具实验性的驱动程序可能根本不实现它)。我相信那些可以退回到未加密的。因此,请相信但要验证您的方案。我还没有 TLS 1.3 支持的日期,但该标准最近完成了,我们将在何时将支持纳入驱动程序时进行检查。
  • 我接受了这个答案,因为它已经一周了,没有人提供任何更有见地的答案。尽管我询问是否有可能监听此类连接和劫持凭据,但这里有关于使用 TLS 1.2 的 Azure 的有用信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
相关资源
最近更新 更多