前段时间,写了一篇《SQL Server的安全机制 》,从很多朋友的评论中发现,我和他们在设计思路上存在一些分歧。
先说一下我的思路:
上图中关于 用户、资源和角色的设计可以参考我另一篇blog《关于权限管理 》。
一些朋友对我的这种设计有一些不同的意见,主要在于应用中用户与数据库中的用户的对应上。他们认为数据库中的user和role主要是针对数据库而言,使用对象应该是DBA, 而 应用中的用户与业务相关,只需要绑定某个固定的数据库user即可,没有必要为每个应用中的用户都建立数据库User。
如果是建设多层建构的系统,我比较认同这种观点,但是在传统的C/S(我们现在做的是GIS系统)中,就有一些问题:
1、安全性方面。 在C/S中,绝大部分业务逻辑都部署在客户端,那么如何保证连接字符串的安全?
2、维护方面。如果DBA需要修改连接字符串中的密码,那么所有的客户端都进行更新。
3、数据安全性方面。因为应用中的用户可能使用了DBA的角色登录到数据库,那么该用户就可以操作整个数据库(在GIS系统中,需要用到第三方的平台,该平台直接访问数据库中的数据)。如果要在应用上解决这一问题,将大大增加了系统的复杂程度。
基于这些因素,我采用上面的那个方案。 如果哪个朋友还有一些好的意见,欢迎指正。