本星期第三个300分,求一个好思路 /老吴(300分)

  • 主题发起人 主题发起人 吴剑明
  • 开始时间 开始时间
我赞成赞成用数据库本身的权限,这是最根本的办法。
 
一个现实的问题
吴剑明说的有道理,我已遇到:客户的老板对他的员工不信任,信任我。
所以我们也要防止对方的admin将数据搞乱,免得老是要去维护,减少费用开支。
所以才要加权限啊。
那么,谁出个主意?
在SQL7.0 上的数据库只允许我们的程序员同志访问,其它任何人都不能直接访问。
但不能霸占整个SQL,只霸占自已的数据库。
 
不能多变通变通啊。
Operators库一定要等同于企业的Departments/Employees库吗?
Operators库一定需要放在主库或SQL Server里面吗?
Operators库一定需要放在数据库服务器上吗?
给我一个需要的理由好不好?
 
这个规则肯定要在客户端做的,不过是一个算法的问题罢了,我认为不应该涉及数据库
管理的范畴。
数据库的安全应该由服务器端管理,sa 的身份当然不能随便给任何人,但设计者必须
“信任”并“委托”一个对方的系统管理员,就像 NT 的域信任机制一样,否则作为开发
商,会增加许多不必要的麻烦。
From: BaKuBaKu
 
这东西我做过,和NT的差不多,做个权限管理类+操作类可完成。
基本原理很简单。
关于安全问题永远无法休止,但这不应该作为一个可以回避的东西而改变系统设计的思路。
 
1.有人赞成用数据库本身的权限来设定吗?
2.或者有人赞成用NT本身的权限来设定吗?
如果有,请解释方法。
 
1.有人赞成用数据库本身的权限来设定吗?
2.或者有人赞成用NT本身的权限来设定吗?
如果有,请解释方法。
 
我做权限设置时,我认为可以用数据库本身的权限来设定。
我自己做过一个小的在客户端做类似于enterprisemanager的
控制台程序,利用sql7.0的系统表和关于权限的存储过程,
可以添加新的login和user以及为这个user赋予相应的服务器角色
和数据库角色,或者更细(对某个表的读、写、选择操作等)。我
认为这样的实现方法很安全,他利用了数据库的安全机制,而
不用我们来安全机制的判断,唯一的一点就是要保存好开始进入这个
设置程序的用户名和口令,类似于sa。
我也很想做关于NT的本身的权限设定,我觉得可能难度很大,首先
要能够列出在域中或组中有多少个用户,不知道微软把这个列表放在
哪儿的说。希望得到帮助。
 
说句实话,我是比较同意用数据库本身权限的。有现成的东西为什么不用呢?
问题是如何很好的和程序连起来。
 
这东西想起来都很头痛,不要说做了。
我们现在一个项目的做法是,有一个全局的对象,登陆用户后此对象就获得了相对应的值,
接下来的每一个模块启动时就会从全局对象中取值以决定模块功能所能涉及的范围。
最好是项目一开始的时候就想好要这么做,否则后面要加上去太困难。

不过这还是太简单了,因为在数据库连接方面大家都是SA,高级用户很有可能饶过应用而
直接操作数据库,但如果数据库方面要做好这样复杂的权限分配,似乎又不大可能。我还
没听说哪一家的软件能做到这样,估计也不会有。

办法总会有的,我想,很想听听大伙们的想法,众人力量大。
 
老吴,你要用数据库本身的权限管理也可以,不过你就会遇到很多这样的语句
try
数据库操作
on
权限不够:xxx.xxx
finally
xxx.xxx
 
用数据库权限也不完全行. 有些就无法完成.
找一个折中点如何
 
lczhuohuo 说的对!
这种格式的程序写傻掉了...我不愿意看到我原来判断权限的代码
if Operator.HasPrivilege('大富翁积分作弊权')
begin
数据库操作...加分;
else
ShowMessage('你无权给自己加1000分! 希望你给老吴送红包。');
end
变成这样的
try
数据库操作
on
Error1: ShowMessage('你无权作弊!!!');
finally
xxx.xxx
 
什么跟什么啊?!
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
875
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部