【发布时间】:2021-07-13 18:53:39
【问题描述】:
我继承了 Azure 中托管的 SQL Server 数据库的支持。
在访问此数据库的个人用户桌面上安装了 5 - 10 个 WPF 应用程序。
由于住宅宽带,用户都拥有带有动态 IP 的个人 PC(即不是由组织集中管理的)。
应用程序通过 ADO 连接直接连接到数据库。
应用程序的所有实例都使用一个用户名和强密码(大约 40 个字符)。
未加密的凭据仅存储在密码保险箱中,而不是 GitHub 或其他任何地方等。
连接字符串经过高度加密,存储在 app.config 中,并在运行时在应用程序的工作内存中解码。
数据库启用了 TLS 安全性(即静态加密)。 PII 数据以及银行帐户详细信息存储在数据库中(注意,财务详细信息存储在额外加密的列中)
已通过将所有 IP 地址列入白名单来授予数据库访问权限:
从安全角度来看,这种设置是否可以接受? 如果没有,需要改变什么或可以做些什么来改进它?
这个问题与我发现的另外两个帖子相似,Is Azure SQL secure when using it for a desktop program? 和 How can I allow unknown users to access my SQL (Azure) DB?
我相信我的问题与这些问题足够不同,因为那里的答案基本上分为两个阵营 1)。 “将所有 IP 列入白名单”和 2)。 '引入中间层'。
虽然我在构建 WebAPI 服务方面经验丰富,但我不认为在数据库前面引入使用 HTTPS 的中间 Web 服务层必然会使其更安全(如果我错了,请告诉我)。
理想情况下,为了简单起见,我希望保留当前架构,但让我自己满意的是,从安全角度来看,该设置是可以接受的。
【问题讨论】:
-
您可以使用 ip 白名单,但根据您的观点,它是动态 ips,因此最好启用 MFA/服务主体/托管身份安全性以进行身份验证和以编程方式访问。
-
@RahulShukla - 您是说以某种方式将各个 Windows 用户凭据传递给数据库,并在数据库中单独授予这些访问权限,而不是当前的单一应用程序用户名和密码方法??
-
Azure sql server 提供 MFA 和服务主体身份验证选项,您可以在 docs.microsoft.com/en-us/azure/azure-sql/database/… 中看到该选项。
标签: sql-server azure security encryption database-connection