【发布时间】:2016-09-08 15:51:16
【问题描述】:
我有一个 Azure SQL 数据库和一些使用它的 C# 业务线应用程序。我一直在努力减少攻击面并更好地了解性能。
在包含 SQL Azure 的数据库中,我有:
1) 具有名为“ReaderUser”的登录名的 SQL 身份验证用户,具有固定的长而疯狂的密码。
2) 在没有登录的情况下在数据库中创建的用户使用:CREATE USER [] WITHOUT LOGIN
3) 带有数据的表,由 USER 和 Row Level Security 保护。 ReaderUser 无法访问任何数据,它只是一个“代理”用户。
4) ReaderUser 可以冒充任何其他非管理用户(“无需登录”创建的品种)。数据只能由其中任何一个读取。
当我们开发的应用程序被用户访问时,数据库连接是通过 ReaderUser 建立的。应用程序使用 .Net 4.6.2 ADO.net 连接。连接字符串是加密和固定的。 IE。对于任何用户,它都不会改变,他们都使用相同的连接字符串。
当应用程序用户登录时,登录的应用程序身份 (Active Directory UPN) 会被传递到数据库以使用以下方法设置正确的用户上下文:
EXECUTE AS USER = 'myuser@mydomain.com' WITH NO REVERT;
然后用户访问应用程序并仅看到他们的数据,这受到行级安全性的限制。
我的问题是,连接将如何汇集?它们是按用户还是按 ReaderUser 登录名(连接字符串)汇总的?用户可以使用相同的连接字符串同时从多个应用程序进行连接。我浏览了几篇文章,但无法对这种特定情况做出明确的解释。有人能解释一下吗?
【问题讨论】:
标签: c# sql-server ado.net database-connection azure-sql-database