SQL*_*Guy 6 authentication security sql-server multi-tenant
我们有多个 SQL Server,每个 SQL Server 拥有数十个数据库 - 每个客户端一个(在这种情况下,客户端意味着一个客户组织)。这些数据库是通过应用程序访问的,但该应用程序当前使用单个 Windows 登录。因此,这会产生安全风险,即如果存在某些应用程序漏洞,理论上可以访问“其他”客户端的数据库。
处理这种情况的最佳方法是什么?
我们是否应该为每个客户端创建单独的登录名并让应用程序使用单独的登录凭据进行连接?这将降低安全风险,但会产生大量的管理开销(这可能是值得的)。
后续问题是:在这种情况下我们应该使用 Windows AD 安全性还是 SQL Server 身份验证。
我很感激任何建议!
Phi*_* W. 11
我们是否应该为每个客户端创建单独的登录名并让应用程序使用单独的登录凭据进行连接?
简短回答:是的。
您已将每个客户端的数据隔离到一个单独的数据库中,因此现在您还需要隔离对这些数据库的访问。
这将降低安全风险,但会产生大量的管理开销(这可能是值得的)。
“重要的”?
您多久接待一次新客户?
如果答案是“很多”,那么您真的需要考虑一些自动化来帮助您,在这里。
后续问题是:在这种情况下我们应该使用 Windows AD 安全性还是 SQL Server 身份验证。我很感激任何建议!
使用 SQL Server 身份验证的一个优点是(或者至少过去)使用脚本创建 SQL Server 帐户要容易得多(尽管 PowerShell 做了很多工作来平衡特定的“竞争环境”)。您可以通过脚本创建数据库帐户(和密码)以及使用该帐户的应用程序配置,而无需手动创建域帐户。
我认为没有提到的一个选项是包含用户(包含身份验证、部分包含数据库,无论你想怎么称呼它)。
您没有登录信息。您可以拥有一个带密码的 SQL 用户,也可以创建一个基于 Windows 帐户的用户。或者,在 Azure 中,如果您有“来自外部提供商”的 AAD。
现在您不再需要登录,可以更轻松地移动数据库。而且,这是在 Azure SQL 数据库中执行此操作的“自然”方式。
https://learn.microsoft.com/en-us/sql/relational-databases/databases/contained-databases
| 归档时间: |
|
| 查看次数: |
2617 次 |
| 最近记录: |