今天和一个很出名的DBA聊起安全问题, 缘于他发现Perl的DBI程序在编译成机器码时, 不能执行, 我在网上花了一点时间想找解决方案, 结果没有找到. 当我问他为什么要编译成机器码时, 回答是他想将数据库的用户名和口令加密掉, 以确保安全. 我回答说建一个只读的用户, 随便这么聊了几句后, 就转到如何确保系统安全的话题上来了.
现在的情况是, 很多的公司DBA兼SA, 知道root用户的密码, 这就是知道了一切. 当团队在迅速扩展时, 如何保证系统的安全性? 这个问题其实很复杂, 他现在面临的环境, 主要还是在内部人员的访问控制上面, 我想到的有几下几点:
1, 内部人员的素质问题, 包括人品和技术能力.
2, 所有操作都应当有Log, 每个人以不同的ID登录.
3, 控制外部对内部系统的访问.
4, 收回root权限.
5, 足够的备份.
在这几点中, 我还是首先推崇第一点. 象bootstrap$被人有规律地修改掉了的例子, 绝对不是断电造成的, 而且在修改了几个月后数据库重起时才表现出来, 因此我首推人品问题.
这个话题其实太复杂了, 我没有经验, 说说你的吧!
留言 (5)
我们曾经碰到过一次,win上,我们的db和应用,别的公司应用权限,结果发现db重启不行,后来发现是整个oracle的注册表信息没了,被删除了,你说谁干的列,哈哈
Posted by David.Guo | Jan 15, 2007 5:39 PM
小公司的数据没有那么值钱,但如果是大公司就应该严格管理,就会分SA,DBA,就不要给DBA系统管理权限和root帐号。管一个金库已经很危险了,再把金库外面大门钥匙一起给了有多危险?
有兴趣可以看看Effective Oracle Database 10g Security by Design,我看过Oracle安全最好的一本书,还请来CIA前主管作序。
关于控制DBA,Oracle 10g已经有了Vault。
Posted by dido | Jan 16, 2007 3:00 PM
对Oracle 10g已经有了Vault没有了解, 不过对于防内上面, DBA都已经知道了sys的口令了, 有Vault也没什么用吧?
Posted by anysql | Jan 16, 2007 3:46 PM
如果root的权限dba不知道的话,那么dba还好控制一点了,因为所有的操作轨迹是可以记录下来的。
但是,root用户的权限太大是一个大问题,这个除了人品,还需要有策略的。
Posted by piner | Jan 17, 2007 1:50 PM
Vault可以让DBA看到系统表,可以启停,但是不能看到用户数据。
换而言之,系统管理员,仅此而已。
Posted by dido | Jan 18, 2007 4:32 PM