我正在保护在MS SQL之上运行的ASP.NET / MVC Web应用程序。作为其中的一部分,我有不同的数据库连接,以在网站中执行不同的事情。
编辑 - 当然,由DBA和Ops人员来决定如何访问数据以及如何托管应用程序,但是他们不能对一个不够精细的应用程序做很多事情来为他们提供控制权。需要把事情搞定。
系统仅使用没有动态SQL的存储过程。一些存储过程会改变数据,所以我使用概念上不同的连接来调用那些只用于读取的其他数据访问的连接。没有SQL用户有权访问除存储过程之外的任何其他数据库对象。帐户授权具有单独的连接。 Web应用程序的某些部分显示计费信息,网站的其他部分直接计费工作。似乎有一些方法可以将舱壁放在一起,将概念上不同的东西分开。
我正在寻找一种集成测试方法,我对所选择的权限并不过分慷慨。如果开发人员试图在代码中的错误位置使用错误的访问级别,我想要一种在构建服务器上抛出异常的机制,即使错误是所选帐户实际上具有太多权限,这将导致来自数据库的错误。
我一直在创建IDbCommand的实现,它将充当IDbCommand实例的工厂,它基本上使用两个不同的连接在后端向后端发出相同的命令,这些连接使用在SQL Server中具有不同访问权限的不同主体如果较低的特权足够,则抛出。
这种方法有两个问题
当然,这是一个解决的问题,只是因为运气不好或糟糕的google fu回避了我几个小时的搜索?