设为首页 收藏本站
查看: 817|回复: 0

[经验分享] 账户方案系统角色多管齐下保障Oracle的安全

[复制链接]

尚未签到

发表于 2016-8-22 08:46:22 | 显示全部楼层 |阅读模式
  一、账户与系统角色结合,提高了账户的安全性。
  账户是定义在数据库系统中的一个名称,它是数据库的基本访问控制机制。当连接到Oracle数据库时,跟其他数据库一样,需要用户输入用户名与密码。数据库系统就是凭借这个用户名来授予其相应的数据库访问权限。不过,这跟其他数据库又有所不同。因为Oracle数据库有有一类很特殊的账户-特权账户。这些特权账户具有某些比较特殊的权限。为了数据库的安全,他们除了在数据库中要拥有某些特定的权限之外,还必须拥有操作系统对应的权限。数据库与操作系统一起,来保障数据库的安全。
  如在Oracle数据库中,主要有两类特权用户,分别为SYSDBA与SYSOPER。这两类用户主要用用来执行一些特殊的作业。如启动关闭数据库、建立数据库、备份与恢复操作等等。这些作业明显会直接影响到数据库的正常作业;而且备份恢复操作还直接跟数据库数据安全息息相关。为了保障这些特权账户的安全,Oracle数据库还采用了一些特殊机制。如Oracle要求,除了在数据库中要拥有对应的权限之外,还必须在操作系统中也是某些特定角色的成员。例如,Oracle数据库若是部署在微软的操作系统下,则安全成功后,在操作系统的角色中,会多SYSDBA与OSOPER两个组。特权账户必须要属于这两个组,才能够进行如上所述的一些数据库维护作业。同理,在Linux等其他操作系统平台下,也需要具有类似的权限。通过这种策略,特权账户的安全就又多了一个保障。如数据库管理员只想使用特权账户SYSDBA来管理维护数据库,而不需要SYSOPER账户。此时,数据库管理员就有两个选择。要么在数据库中禁用这个账户;要么在操作系统中把这个账户从Oracle建立的组中剔除出去。
  虽然SYSOPER与SYSDBA账户都是属于特权账户,但是他们的权限还是由差异的。如特权账户SYSDBA具备了特权账户SYSOPER的所有权限之外,还具有建立数据库、执行不完全恢复等权限。同时,前者还自动具备了DBA角色的所有权限;而后者则不具备DBA角色的权限。为了数据库库的安全,通常情况下不能够把这些特权账户的权限赋予给其他用户。虽然可以通过更改初始化参数来突破这个限制,但是出于数据库的安全考虑,我们都不建议这么处理。
  可见,特权账户与操作系统固定权限结合,双管齐下,来保障数据库的安全,这是Oracle数据库的一个突破。其在很大程度上,提高了特权账户的安全性。若是普通账户,则没有这方面的限制。
  二、账户与方案一一对应保障Oracle安全。
  除了账户与系统角色结合,来提高账户安全性之外,Oracle数据库另外一个值得称颂的地方就是把账户与方案联系起来,进一步提高了账户的安全性。
  在Oracle数据库中,方案是用户所拥有数据库对象的集合。这是因为在Oracle数据库中对象是以用户来组织的,用户与方案是一一对应的,并且两者所使用的名称相同。利用Oralce数据库与实例安装完成后,其默认情况下有两个用户,分别为SYSTEM与SCOTT。他们分别对应了两个方案SYSTEM与SCOTT。Oracle数据库就是账户与方案一起,来提高数据库访问的安全性。
  如用户可以直接访问其自己的方案对象,但是如果需要访问其他用户的方案对象时,则需要具有相关的权限。如用户SCOTT,其方案SCOTT下所有的数据库对象都可以进行访问。但是,如果SCOTT用户想访问方案SYSTEM下面的数据库对象,则需要先经过用户SYSTEM进行授权。如果他没有把这个访问的权限授权给SCOTT的话,则用户SCOTT就无法访问方案SYSTE下面的任何一个数据库对象。所以,方案就好像一个个保护罩,又把数据库逻辑的分割成几个独立的区域。这个区域的主人可以任意访问内部的任何数据库对象。若其他用户想要访问这个区域的话,则必须要先经过这个区域主人的授权。这一个个区域(方案)是用户的私人领地,未经允许他人不得进入。通过这种方式,用户就可以保护自己所建立数据对象的安全。
  在使用方案是,需要注意一些细节方面的问题。如在同一个方案中,不能够存在同名的对象;但是在不同的方案中,不同用户可以建立同名的对象。还有当某个用户要访问其他方案的对象时,必须加入方案名最为前缀。也就说,要在数据库对象名之前加入主人的名字。这些是硬性规则,不能够打折扣。
  三、新用户没有任何数据库操作权限。
  Oracle账户与SQLServer账户还有一个不同之处。就是在Oracle数据库中建立新账户后,默认情况下,这个账户不具备任何数据库操作的权限。但是,在SQLServer中则不同。在SQLServer中,若建立账户,其默认会继承一定的权限。
  在Oracle数据库中,常常通过采用数据库验证的方式来建立数据库用户。采取这个方式,其优势是非常明显的。如用户账户与其身份验证都是由数据库控制,而不要借助任何的外部力量。另外,数据库系统还提供了严格的口令管理策略以加强口令的安全性,还提供了诸如账户锁定、口令有效期等安全策略。
  在建立账户的时候,主要通过三个措施来提高新建账户的安全性。
  一是初始建立的数据库账户并不具有任何的权限,不能够执行任何的数据库操作。如连连接数据库的权限都没有,需要另外配置权限。这虽然增加了一些维护的工作量,但是毕竟提高了初始账户的安全性能给。因为账户的建立不会经常发生,所以相比数据库安全来说,这点付出还是值得的。
  二是在新建账户时,必须要为数据库账户设置密码,不能够使用空密码。这是一个很好的安全措施,因为空口令的账户是数据库安全的一个定时。据笔者所知,在SQLServer数据库中就好像没有类似的限制。数据库管理员在建立新账户时可以不设置初始化密码,这是非常危险的操作方法。
  三是通过表空间配额来限制其创建数据库库对象的权利。在建立用户时,如果没有为新用户指表空间配额,则用户在特定的表空间上的配额就为0。也就是说,用户在这个表空间上没有存储的空间。为此,这个用户当然就无法在这个表空间上建立数据对象。即使后续通过权限赋予其足够的权限,其最多只是查询、使用数据库对象,而无法创建属于自己的数据库对象。这也是提高新建用户安全性的措施之一。用户不能够随便在表空间中建立数据库对象,有利于保证数据库的干净。另外需要说明的是,如果在建立账户的时候,没有给用户指定具体的表空间,则其默认的表空间为System表空间。这看起来是一个很危险的操作,其实却不然。因为上面笔者谈到过,用户若要访问其他用户所创建的方案时,必须拥有其他用户的相应授权。所以虽然新用户属于System表空间,但是不一定说其可以访问System表空间中的数据库对象。若要访问,还需要用户进行分别授权。
  可见,账户与方案这一一对应的关系,在很大程度上提高了账户的安全性。而特权账户与操作系统角色结合,也限制了特权账户的操作权限。这些措施,都有利于提高数据库账户的安全。账户、方案、系统角色多管齐下,保障了Oracle数据库的安全。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-261102-1-1.html 上篇帖子: 数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名 下篇帖子: 【转】oracle中的数据库、用户、方案、表空间、表对象之间的关系
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表