ORACLE数据库权限管理改进措施.docx

上传人:b****5 文档编号:4441308 上传时间:2022-12-01 格式:DOCX 页数:14 大小:20.39KB
下载 相关 举报
ORACLE数据库权限管理改进措施.docx_第1页
第1页 / 共14页
ORACLE数据库权限管理改进措施.docx_第2页
第2页 / 共14页
ORACLE数据库权限管理改进措施.docx_第3页
第3页 / 共14页
ORACLE数据库权限管理改进措施.docx_第4页
第4页 / 共14页
ORACLE数据库权限管理改进措施.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

ORACLE数据库权限管理改进措施.docx

《ORACLE数据库权限管理改进措施.docx》由会员分享,可在线阅读,更多相关《ORACLE数据库权限管理改进措施.docx(14页珍藏版)》请在冰豆网上搜索。

ORACLE数据库权限管理改进措施.docx

ORACLE数据库权限管理改进措施

1编写目的2

2适用范围2

3ORACLE的权限管理2

3.1.用户2

3.2.角色2

3.3.权限3

3.3.1范围维度3

3.3.2操作类型维度3

3.3.3操作对象维度4

4数据库开发过程中的角色和职责4

4.1DBA4

4.2开发人员5

4.3两者的关系5

5ORACLE数据库权限管理改进措施5

5.1常见的几个问题5

5.2改进措施6

5.2.1收回数据库主机ORACLE账户和口令6

5.2.2建立多用户的数据库环境6

5.2.3合理授予用户角色和权限7

5.2.4矛盾与讨论7

5.2.5更近一步的改进措施建议8

6附录8

6.1ORACLE权限列表8

6.2几个与权限相关的字典表12

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1