电脑技术学习

账户方案系统角色多管齐下保障Oracle的安全

dn001

如用户可以直接访问其自己的方案对象,但是如果需要访问其他用户的方案对象时,则需要具有相关的权限。如用户SCOTT,其方案SCOTT下所有的数据库对象都可以进行访问。但是,如果SCOTT用户想访问方案SYSTEM下面的数据库对象,则需要先经过用户SYSTEM进行授权。如果他没有把这个访问的权限授权给SCOTT的话,则用户SCOTT就无法访问方案SYSTE下面的任何一个数据库对象。所以,方案就好像一个个保护罩,又把数据库逻辑的分割成几个独立的区域。这个区域的主人可以任意访问内部的任何数据库对象。若其他用户想要访问这个区域的话,则必须要先经过这个区域主人的授权。这一个个区域(方案)是用户的私人领地,未经允许他人不得进入。通过这种方式,用户就可以保护自己所建立数据对象的安全。

在使用方案是,需要注意一些细节方面的问题。如在同一个方案中,不能够存在同名的对象;但是在不同的方案中,不同用户可以建立同名的对象。还有当某个用户要访问其他方案的对象时,必须加入方案名最为前缀。也就说,要在数据库对象名之前加入主人的名字。这些是硬性规则,不能够打折扣。

三、新用户没有任何数据库操作权限。

Oracle账户与SQLServer账户还有一个不同之处。就是在Oracle数据库中建立新账户后,默认情况下,这个账户不具备任何数据库操作的权限。但是,在SQLServer中则不同。在SQLServer中,若建立账户,其默认会继承一定的权限。

在Oracle数据库中,常常通过采用数据库验证的方式来建立数据库用户。采取这个方式,其优势是非常明显的。如用户账户与其身份验证都是由数据库控制,而不要借助任何的外部力量。另外,数据库系统还提供了严格的口令管理策略以加强口令的安全性,还提供了诸如账户锁定、口令有效期等安全策略。

在建立账户的时候,主要通过三个措施来提高新建账户的安全性。

一是初始建立的数据库账户并不具有任何的权限,不能够执行任何的数据库操作。如连连接数据库的权限都没有,需要另外配置权限。这虽然增加了一些维护的工作量,但是毕竟提高了初始账户的安全性能给。因为账户的建立不会经常发生,所以相比数据库安全来说,这点付出还是值得的。

二是在新建账户时,必须要为数据库账户设置密码,不能够使用空密码。这是一个很好的安全措施,因为空口令的账户是数据库安全的一个定时炸弹。据笔者所知,在SQLServer数据库中就好像没有类似的限制。数据库管理员在建立新账户时可以不设置初始化密码,这是非常危险的操作方法。

三是通过表空间配额来限制其创建数据库库对象的权利。在建立用户时,如果没有为新用户指表空间配额,则用户在特定的表空间上的配额就为0。也就是说,用户在这个表空间上没有存储的空间。为此,这个用户当然就无法在这个表空间上建立数据对象。即使后续通过权限赋予其足够的权限,其最多只是查询、使用数据库对象,而无法创建属于自己的数据库对象。这也是提高新建用户安全性的措施之一。用户不能够随便在表空间中建立数据库对象,有利于保证数据库的干净。另外需要说明的是,如果在建立账户的时候,没有给用户指定具体的表空间,则其默认的表空间为System表空间。这看起来是一个很危险的操作,其实却不然。因为上面笔者谈到过,用户若要访问其他用户所创建的方案时,必须拥有其他用户的相应授权。所以虽然新用户属于System表空间,但是不一定说其可以访问System表空间中的数据库对象。若要访问,还需要用户进行分别授权。

可见,账户与方案这一一对应的关系,在很大程度上提高了账户的安全性。而特权账户与操作系统角色结合,也限制了特权账户的操作权限。这些措施,都有利于提高数据库账户的安全。账户、方案、系统角色多管齐下,保障了Oracle数据库的安全。