我们有几个应用程序安装在几个部门,通过内部网与数据库交互。用户倾向于使用弱密码或将登录/密码存储在一张纸上,让每个人都能看到。我担心登录/密码泄露,希望将后果降到最低。通过对intranet访问隐藏数据库服务器来最小化数据库服务器攻击面也是一个好主意。
我在考虑基于安全性的中间数据访问服务方法。它似乎比基于表或基于连接的数据库服务器更灵活。这种方法还允许在公共intranet中隐藏数据库服务器。
您建议使用哪种.NET技术和最佳实践?
提前谢谢你!

最佳答案

根据用户对数据库的访问类型,您可能会看到一场重大的上坡战。在开始在中间层上分层附加安全性之前,请先深入了解您允许用户使用其凭据执行的操作:
用户在数据库计算机上有用户帐户吗?如果可能的话,把这些拿走
是否授予用户最少的访问权限?使用您认为合适的任何机制,尽可能多地删除用户[执行]权限。我在文章的最后看到的一点是,存储的进程实际上拥有适当的exec权限,而用户只拥有进程的exec权限。
是否已删除运行任何表更改命令的用户权限?包括运行系统存储过程的能力。这可以大大减少意外和恶意事件
用户是否可以直接访问原始业务数据?如果是这样,请考虑将访问权限移到视图、sps和删除表本身的用户权限。它还解决了一些维护难题
你们有审计吗?表级别或自定义。
如果您觉得自己有一个可靠的设计,那么您可以开始考虑将您的数据库包装在代理/外观中以供访问。请注意,这在性能、部署和安全性方面可能代价高昂,而且不是一件容易的事情。关于这种模式的一些建议:
例如,查看一个服务代理:WSO2,它们是其他可以通过向关键业务应用程序提供缓存和代理服务来隐藏它们的关键业务应用程序(尽管其目的是发布对它们的访问权限)。它可能会减少你的攻击面一些,但配置和管理将很容易超过任何收益。
你可以推出自己的经纪服务(基于wcf等),你将需要确保你充分考虑到负荷和预期增长,但如果你真的想这样做,并且有时间正确地设计出来,这并非不可能,甚至是无法实现的。

关于.net - 安全的数据库连接。 DAL .net体系结构最佳实践,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2886785/

10-15 21:30
查看更多