ORACLE数据库权限管理改进措施.docx
- 文档编号:28240551
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:15
- 大小:20.39KB
ORACLE数据库权限管理改进措施.docx
《ORACLE数据库权限管理改进措施.docx》由会员分享,可在线阅读,更多相关《ORACLE数据库权限管理改进措施.docx(15页珍藏版)》请在冰豆网上搜索。
ORACLE数据库权限管理改进措施
1编写目的
为了保证数据库开发版本与在线版本保持一致,减少人为操作对于开发过程的影响,维持数据模型的稳定,需要更合理的对数据库进行权限管理,划分职责。
本文档预期读者:
数据库管理员
数据库开发人员
2适用范围
ORACLE系列数据库
3ORACLE的权限管理
3.1.用户
ORACLE的用户分为系统用户、数据库维护用户和应用开发用户
系统用户就是我们熟知的SYS和SYSTEM
数据库维护用户不常用,是ORACLE自我管理的一些用户,如PERFSTAT,DIP,DBSNMP,WMSYS,ORDSYS,ANONYMOUS,MGMT_VIEW,OUTLN等,不同的ORACLE版本用户可能略有差异
应用开发用户,就是我们自己建的各个用户
3.2.角色
角色是一组权限集合
ORACLE提供若干个预定义的角色
常用的角色举例:
DBA:
最高级角色,拥有所有权限,因为角色不能删除自身,所以该角色不能删除,每个库至少一个用户有DBA角色,SYSTEM一定是DBA
CONNECT:
只有createsession权限,有了该角色和权限,用户可以登录
RESOURCE:
一组对单用户有DDL和DML操作的权限集合
EXP_FULL_DATABASE:
执行exp操作的一组权限集合
IMP_FULL_DATABASE:
执行imp操作的一组权限集合
也可以根据需求自己创建角色
3.3.权限
ORACLE的权限列表,参考附录->ORACLE权限列表,有160个之多
权限与权限之间,理论上是并列的,可以同时赋予一个用户或者角色,可以单独从一个用户或者角色中收回
我们可以从三个维度来理解ORACLE的权限
3.3.1范围维度
1.ANY
带ANY和不带ANY的区别
如果某一用户,拥有带ANY的权限,那么该用户可以操作其他用户的对象,否则只能操作自己用户的对象
例如,如果test1用户有CREATEANYTABLE权限,那么test1用户就可以给test2用户建表,而如果test1用户有CREATETABLE权限,那么test1用户就只能给test1用户本身建表,不能给其他用户建表
视图、序列、存储过程等都遵循此原则
2.PUBLIC
PUBLIC关键字是针对某几类对象而言,一般是指同义词和数据库链,表、视图、序列等没有PUBLIC属性
带PUBLIC表示可以操作PUBLIC类型的对象,不带PUBLIC只能操作私有对象
3.3.2操作类型维度
DDL:
✓CREATE
✓DROP
✓ALTER
DML:
一个用户默认有对自己用户做DML操作的权限,如果需要操作其他用户的权限,需要单独赋权
✓INSERT
✓SELECT
✓DELETE
✓EXECUTE
还有其他的一些权限操作类型,不常用
3.3.3操作对象维度
ORACLE中几乎我们可以使用的对象,都有某些对应的权限
常用的有
✓TABLE
✓VIEW
✓SEQUENCE
✓PROCEDURE
✓TRIGGER
✓DATABASELINK
✓ROLE
✓SYSTEM
✓TABLESPACE
不常用的还有CLASS,TYPE,LIBRARY,SYNONYM,CLUSTER,DICTIONARY等等
这里注意:
ORACLE对于临时表的权限设置与TABLE一致,在ORACLE数据库里临时表就是一个TABLE,只是在DDL语句、数据字典里和使用过程中略有差别。
4数据库开发过程中的角色和职责
数据库开发过程中,包括两个角色DBA和开发人员,下面就这两个角色描述一下相关职责。
4.1DBA
1.安装ORACLE软件
2.创建ORACLE数据库
3.数据库和软件版本升级
4.数据库起停操作
5.创建数据库存储结构
6.维护用户和安全
7.维护属主对象,例如表、索引、视图等
8.根据需求制定数据库备份和恢复的策略并执行
9.监控数据库健康运行
10.监控和维护数据库性能
4.2开发人员
1.根据系统需求,创建合理的逻辑模型和物理模型
2.创建合理的主键和索引
3.根据DBA的存储规划,指定正确的存储空间
4.给DBA提供正确的操作脚本
注:
开发人员在数据库中的职责是个人理解,欢迎讨论和补充
4.3两者的关系
DBA可以凭经验,建议开发人员如果操作数据库对象,执行开发人员的脚本,如果建表有明显的性能缺陷、存储问题或者语法错误,可以否决开发人员的需求
5ORACLE数据库权限管理改进措施
5.1常见的几个问题
1.问题一:
所有人都知道数据库主机的ORACLE账号,这是数据库管理的最大风险。
2.问题二:
所有人使用一个数据库管理员账户,每个人都能对库内所有的数据库对象做所有操作,这种在开发中造成普遍的混乱。
3.问题三:
开发人员在开发、调试、维护过程中,经常要创建一些临时表、测试表和其他的数据库对象,这些表或者对象日积月累,形成很庞大的垃圾对象群。
尤其是垃圾表,占用了很多的空间,并且导致数据字典增大,数据库效率变低,也给数据迁移,带来很多麻烦
4.问题四:
一些存储过程里,有DROP/CREATE临时表的操作,因为这类操作需要赋予应用用户删、建表权限,这个不一定是个问题,但是会对权限管理造成影响。
5.2改进措施
5.2.1收回数据库主机ORACLE账户和口令
所有的数据库级和用户级操作全部由DBA完成,最大限度规避这两级操作的风险
5.2.2建立多用户的数据库环境
根据ORACLE数据库的特点,我们可以将用户设定为以下几个应用场景
✓数据库管理用户:
负责数据库的日常维护和管理,赋与权限、收回权限等
✓应用管理用户:
负责各类数据库对象的创建、删除、修改,数据库发布包脚本执行
✓应用程序用户:
由应用程序使用,主要对数据进行存储和操作,要求可以定期修改和加密
✓查询用户:
维护过程中使用,完成数据查询功能,防止DDL和DML的误操作
✓短期用户:
开发人员使用此类用户进行临时性的开发和测试,如建临时表,短期数据备份等,此类用户分配单独的空间,并且定期清理
类别
举例
功能
用户个数
备注
数据库管理用户
SYS/SYSTEM
负责数据库的日常维护和管理,赋与权限、收回权限等
2个
程序中一定不能使用
应用管理用户
ORACLE
负责各类数据库对象的创建、删除、修改,数据库发布包脚本执行
1个
数据库发布,数据库升级时可用
应用程序用户
NIOSDB
由应用程序使用,主要对数据进行存储和操作,要求可以定期修改和加密
根据需求,最少1个
系统应用程序使用
查询用户
Query
维护过程中使用,完成数据查询功能,防止DDL和DML的误操作
1个
程序中尽量不要使用
开发、调试用户
TEST/ZHANG/…
开发人员使用此类用户进行临时性的开发和测试,如建临时表,短期数据备份等,此类用户分配单独的空间,并且定期清理
根据需求,0..n个
系统程序中一定不能使用
5.2.3合理授予用户角色和权限
类别
举例
角色
权限
备注
数据库管理用户
SYS/SYSTEM
DBA
应用管理用户
ORACLE
Connect/resource
自定义管理角色
CREATEANYTABLE
DROPANYTABLE
CREATEANYINDEX
DROPANYINDEX
INSERTANYTABLE
SELECTANYTABLE
……
几乎所有的DDL、DML权限
与DBA相比没有赋权和收回权限,没有数据库和用户级操作权限
应用程序用户
NIOSDB
Connect
自定义应用程序角色
INSERTANYTABLE
SELECTANYTABLE
几乎所有的DML权限
查询用户
Query
CONNECT
Selectanytable
Selectanysequence
Selectanydictionary
开发、调试用户
TEST/ZHANG/…
CONNECT
RESOURCE
根据管理严格程度,可以适当赋予selectanytable权限
5.2.4矛盾与讨论
上述改进措施中,应用管理用户和应用程序用户是在使用过程中有矛盾的两个用户
一方面,不收回应用程序用户的DDL权限可能导致
✓程序版本与实际物理结构之间有差别
✓各省份子系统物理模型版本不一致
✓因表结构不一致,数据导入总是不能及时准确
✓表、数据误删操作频繁,影响开发进度。
另外一方面,收回应用程序用户的DDL权限可能带来以下几个问题
✓开发人员从提出需求到DBA响应完成需要一定时间,这段时间可能会被认为影响开发进度
✓某些程序需要创建和删除临时表,要求赋予应用程序用户DDL权限,因为有临时表的DDL权限,根据前面ORACLE权限的描述,又有了对其他正式表的DDL权限
✓当物理模型设计不完善时,开发人员对物理模型的修改需求会很频繁,DBA会很疲于应付各种需求脚本,增大工作负荷,进一步延长其他需求的响应时间。
5.2.5更近一步的改进措施建议
上述矛盾的解决方案有三个
✓方法一、收回应用程序用户的DDL权限,同时要求DBA加快响应速度,完善物理模型和逻辑模型设计,应用程序(包括存储过程)的临时表CREATRE/DROP动作拿到程序以外执行。
✓方法二、通过管理手段,规定开发人员不能自己CREATE/DROP表,应用程序用户为了临时表操作暂时保留以上权限,这类权限留待下次系统升级或者逐步收回。
✓方法三、给应用程序用户DDL权限,赋予CREATE/DROP表的权限,用于其建、删临时表、备份表等。
将生产表的属主定义为应用程序管理用户,这些表的操作由DBA完成,不允许应用程序用户修改,但是要对其赋予DML权限。
因为应用程序用户有DDL权限,所以也要有一定的管理手段,不允许其自行创建生产表。
因为要兼顾开发进度与风险,所以最终的解决方案倾向于方案三
6附录
6.1ORACLE权限列表
CREATEANYSQLPROFILE
DROPANYSQLPROFILE
DROPANYEVALUATIONCONTEXT
ALTERANYOUTLINE
EXECUTEANYINDEXTYPE
UNDERANYVIEW
DROPANYLIBRARY
ALTERANYLIBRARY
CREATELIBRARY
UNDERANYTYPE
CREATEANYDIRECTORY
DROPPUBLICSYNONYM
DELETEANYTABLE
CREATETABLE
ADMINISTERANYSQLTUNINGSET
CREATEANYEVALUATIONCONTEXT
GRANTANYOBJECTPRIVILEGE
ADMINISTERRESOURCEMANAGER
DEQUEUEANYQUEUE
ENQUEUEANYQUEUE
CREATEANYDIMENSION
CREATETYPE
DROPANYMATERIALIZEDVIEW
DROPANYTRIGGER
ALTERANYPROCEDURE
ALTERDATABASE
DROPANYROLE
CREATESEQUENCE
CREATEVIEW
ALTERANYCLUSTER
CREATEANYCLUSTER
UPDATEANYTABLE
DROPTABLESPACE
ADMINISTERSQLTUNINGSET
CREATEANYRULE
EXPORTFULLDATABASE
CREATEEVALUATIONCONTEXT
RESUMABLE
MERGEANYVIEW
ADMINISTERDATABASETRIGGER
CREATEANYCONTEXT
GLOBALQUERYREWRITE
CREATEINDEXTYPE
DROPANYOPERATOR
CREATEANYLIBRARY
DROPANYTYPE
CREATEANYMATERIALIZEDVIEW
CREATEPROFILE
CREATEANYPROCEDURE
AUDITANY
CREATEROLE
DROPPUBLICDATABASELINK
DROPANYSEQUENCE
ALTERANYSEQUENCE
CREATEPUBLICSYNONYM
CREATEANYSYNONYM
DROPANYINDEX
COMMENTANYTABLE
DROPANYTABLE
CREATEROLLBACKSEGMENT
ALTERUSER
CHANGENOTIFICATION
CREATEANYJOB
ADVISOR
ALTERANYRULESET
ALTERANYEVALUATIONCONTEXT
DROPANYCONTEXT
QUERYREWRITE
CREATEANYOPERATOR
ALTERRESOURCECOST
CREATETRIGGER
DROPANYPROCEDURE
FORCEANYTRANSACTION
CREATEPUBLICDATABASELINK
SELECTANYSEQUENCE
CREATESYNONYM
BACKUPANYTABLE
ALTERROLLBACKSEGMENT
DROPUSER
CREATEEXTERNALJOB
ALTERANYSQLPROFILE
DROPANYDIMENSION
CREATEOPERATOR
GRANTANYPRIVILEGE
ALTERPROFILE
CREATEANYSEQUENCE
DROPANYVIEW
BECOMEUSER
MANAGEFILEGROUP
ANALYZEANYDICTIONARY
EXECUTEANYRULE
DROPANYRULE
CREATERULE
DEBUGCONNECTSESSION
SELECTANYDICTIONARY
ONCOMMITREFRESH
DROPANYOUTLINE
CREATEANYOUTLINE
MANAGEANYQUEUE
UNDERANYTABLE
CREATEANYINDEXTYPE
EXECUTEANYLIBRARY
DROPANYDIRECTORY
ALTERANYMATERIALIZEDVIEW
ANALYZEANY
EXECUTEANYPROCEDURE
ALTERANYROLE
DROPANYCLUSTER
SELECTANYTABLE
LOCKANYTABLE
ALTERANYTABLE
CREATEANYTABLE
CREATEUSER
ALTERTABLESPACE
CREATESESSION
READANYFILEGROUP
SELECTANYTRANSACTION
CREATEJOB
IMPORTFULLDATABASE
EXECUTEANYRULESET
DROPANYRULESET
CREATERULESET
EXECUTEANYEVALUATIONCONTEXT
FLASHBACKANYTABLE
ALTERANYDIMENSION
CREATEDIMENSION
ALTERANYINDEXTYPE
EXECUTEANYOPERATOR
EXECUTEANYTYPE
CREATEANYTRIGGER
CREATEPROCEDURE
FORCETRANSACTION
CREATEANYVIEW
ALTERANYINDEX
CREATEANYINDEX
INSERTANYTABLE
DROPROLLBACKSEGMENT
ALTERSESSION
MANAGEANYFILEGROUP
MANAGESCHEDULER
EXECUTEANYCLASS
EXECUTEANYPROGRAM
ALTERANYRULE
CREATEANYRULESET
DEBUGANYPROCEDURE
DROPANYINDEXTYPE
ALTERANYTYPE
CREATEANYTYPE
CREATEMATERIALIZEDVIEW
DROPPROFILE
ALTERANYTRIGGER
GRANTANYROLE
CREATEDATABASELINK
DROPANYSYNONYM
CREATECLUSTER
MANAGETABLESPACE
CREATETABLESPACE
RESTRICTEDSESSION
AUDITSYSTEM
ALTERSYSTEM
6.2几个与权限相关的字典表
Dba_sys_privs
Dba_role_privs
DBA_TAB_PRIVS
DBA_COL_PRIVS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ORACLE 数据库 权限 管理 改进 措施