《用户权限和角色管理.pptx》由会员分享,可在线阅读,更多相关《用户权限和角色管理.pptx(74页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库建立以后,会产生两个重要的用户:sys和systemsys是超级管理员,必须作为sysdba登陆,这是安全措施因为sys的权限太大,使用sysdba登陆以后,审计文件会记录登录的时间信息,system没有sys的权限大最通常的用法是:日常管理中,不要使用sys和system登录数据库,而是建立一个用户、并赋予DBA角色,使用该用户进行日常的管理工作第1页/共74页创建用户口令是最常见的认证方式。第2页/共74页CREATE USER SYSADMIN PROFILE DEFAULT IDENTIFIED BY*PASSWORD EXPIRE DEFAULT TABLESPACE USER
2、S TEMPORARY TABLESPACE TEMP ACCOUNT UNLOCKGRANT CONNECT TO SYSADMIN 第3页/共74页看一下外部认证(操作系统认证的例子)一个操作系统用户的账号是ora,那么在数据库里面需要建立一个用户叫做ops$ora,这个用户登陆操作系统以后,就可以直接登陆数据库了。因为操作系统已经认证了这个用户。第4页/共74页CREATECREATE USERUSER OPS$ORA PROFILEPROFILE DEFAULT IDENTIFIEDIDENTIFIED EXTERNALLYEXTERNALLY DEFAULTDEFAULT TABLE
3、SPACETABLESPACE USERS TEMPORARYTEMPORARY TABLESPACETABLESPACE TEMP ACCOUNTACCOUNT UNLOCKUNLOCKGRANTGRANT CONNECT TOTO OPS$ORA第5页/共74页不需要使用用户名和密码就可以直接登录。第6页/共74页这就是一个反例,如果在数据库里面没有建立相应的用户名,不能使用外部认证。第7页/共74页1、对于普通用户来说,账号存储在数据字典的表里面,数据库没有启动以前,不能对用户进行认证。2、对sys用户的认证方式有些特殊,因为sys用户需要在数据库还没有启动的情况下进行登录,对sys用户
4、的认证主要有两种方式操作系统认证密码文件认证第8页/共74页操作系统认证unix下面,如果用户属于DBA组,那么用户登录操作系统后就可以使用sysdba进行登录windows下面,如果用户属于ora_dba组,那么用户登录操作系统以后,可以使用sysdba进行登录如果用户属于oinstall组,不能进行操作系统认证。第9页/共74页第10页/共74页第11页/共74页如果用户属于DBA组,那么就可以使用操作系统认证,使用DBA角色登录数据库。在这方面,我们使用最多的就是Oracle用户。上面的认证需要我们的用户登陆Oracle所在的数据库服务器上。第12页/共74页是否使用操作系统认证,还取决
5、于一个设置这个文件中有这么一条记录,或者没有这么一条记录。那么就表示可以使用操作系统进行认证。第13页/共74页如果改成NONE,那么表示不能使用操作系统进行认证。改回来以后,不需要重启什么服务,就直接可以进行连接了。第14页/共74页远程登录Oracle,如何实现sys认证,就需要使用口令文件。远程登录,必须提供sys的密码,这是安全要求。但是密码又不能存放在数据字典表里面,只能存放在另外一个位置,那就是密码文件。1、在服务器上建立一个密码文件unix上位于$ORACLE_HOME/dbswindows上位于$ORACLE_HOME/databaseSID为小写,那么口令文件中的orapwS
6、ID中的SID也要小些,两者必须相同,而且区分大小写。在WINDOWS平台下面,口令文件是PWDSID,SID也要遵循大小写。第15页/共74页上面建立了一个口令文件,这个口令文件可以允许5个不同的oracle用户拥有sysdba权限。第16页/共74页2、设置初始化参数NONE:不能进行密码文件认证,Oracle未启动的情况下,远程用户没有办法通过网络服务的方式以SYSDBA权限登录到Oracle数据库。EXCLUSIVE:默认值,该密码只能被一个实例使用,我们可以向密码文件中添加新的用户SHARED:该密码文件可以被多个实例使用(用于RAC),但是密码文件里面只能存放sys和system用
7、户的密码第17页/共74页禁用操作系统以后,只能使用口令文件登陆。因为sysdba只有两种认证方式。第18页/共74页目前使用口令文件只允许Oracle用户。第19页/共74页显然可以使用口令文件进行认证了,但是目前为止只能sys用户使用口令文件。第20页/共74页修改了参数以后,权限不够了。因为OS和口令文件全部禁止了,因此没有办法启动数据库了,只能修改OS认证了。第21页/共74页第22页/共74页第23页/共74页要启用口令文件认证,需要设置口令文件和配置上面的remote参数默认只有sys可以使用口令文件。第24页/共74页密码文件丢失的情况第25页/共74页可以重建口令文件。第26页
8、/共74页 sysadmin也进入了口令文件中。第27页/共74页用户sysadmin也可以在数据库没有启动的情况下,使用口令文件进行认证了。第28页/共74页用户sys的密码存在口令文件和数据字典中,修改了密码以后,会同时更新两个地方的密码。第29页/共74页口令文件中可以存放多个用户,这些用户都可以使用sysdba在数据库没有启动的情况下登录数据库。第30页/共74页建立了一个用户shd,给这个用户分配了连个权限。第31页/共74页另起一个会话,使用shd登陆,建立一个用户。第32页/共74页这个用户不能够被删除,因为这个用户正在连接中。如何强行中断呢?等一会,PMON会启动起来,从而清理
9、中断的session所占用的资源。第33页/共74页session一直没有删除,可能是PMON未启动或者未能成功的解锁。找到被删除的那个进程的PADDR第34页/共74页如果能够找到SPID的,那么就直接在linux上将这个进程给kill掉。第35页/共74页虽然还是显示这个会话存在,但是过了一段时间以后,我们继续删除这个用户。发现另外报了一个错误,原来是这个用户下面对象。使用cascade删除用户,这个用户下面所有的对象都被删除。第36页/共74页Profile的作用主要表现在两个方面1、密码策略2、对用户所能使用的资源进行管理3、profile存放在数据字典里面,默认有一个名字为defau
10、lt的profileDefault profile的一些项,这些项约束着用户。第37页/共74页资源:kernel密码:password连续10次登陆不成功就锁定账号单位为天,一旦登陆次数超过指定的值以后,账号被锁定的时间,默认是unlimited,表示一直锁定下去。单位为天,密码在多少天以后失效,失效后必须更改密码单位为天,密码失效后,会缓冲一定的时间,这段时间,每次使用老密码登陆,都会提示更改密码,超过这段时间以后,如果还是没有更改密码,账号就被锁定。第38页/共74页单位为天,在指定的天数以内,设定的密码不能重复。单位为次数,在指定的次数范围内,密码不能重复。上面的两个参数是互斥的,同时
11、只能指定一个。第39页/共74页密码复杂度,通过一个函数来实现。如何建立这个函数,有一个样例。第40页/共74页.第41页/共74页可以修个脚本来建立密码函数,默认这个脚本执行后建立一个函数,这个函数绑定到default profile上。我们可以修改这个脚本达到我们的目的。第42页/共74页一个密码函数绑定到了这个配置文件上。第43页/共74页同一个用户同时最多能够产生多少个session同一个用户一次最多能够持续占用CPU的多少时间,以百分之一秒为单位,例如2000,就说明session一次能够持续使用20秒的CPU一次调用最多能够持续占用CPU的时间,一个SQL分为解析调用、执行调用等,
12、以百分之一秒为单位每个session能够进行的逻辑读的最大个数。一次调用能够进行的逻辑读的最大个数一次会话能够idle的时间,超过这个时间以后,中断会话,idle指的是既没有CPU、也没有IO等待第44页/共74页SESSION连接数据库超过指定的时间,中断这个SESSION每个SESSION能够使用的PGA的最大个数权重第45页/共74页可以使用DBCONTROL创建profile,然后将profile应用到用户上。删除profile的时候,如果有用户使用这个profile,那么需要加上参数cascade使用这个配置文件的用户的profile将为default。第46页/共74页权限分为两种
13、:系统权限、对象权限系统权限指的是用户能够做什么事情的权限例如:创建一个表空间、创建表等Oracle10g有超过100个的系统权限有很多的权限带有any,举例create table表示能够在自己的schema里面创建表create any table表示能够在其他schema里面创建表所有的系统权限都放在system_privilege_map数据字典里面第47页/共74页我们来研究一些和系统管理有关的权限1、sysdba和sysoper最重要也是最大的权限,在数据库里面能够做任何想做的事情2、restricted session拥有该权限的用户,则在数据库以restricted模式打开的时
14、候,也能够登录数据库,以restricted模式打开数据库是为了进行维护性的工作,例如升级,我们不希望其他用户也能够登录到数据库,默认只有用户sys具有该权限3、以create以及create any开头的权限4、以drop 以及drop any开头的权限5、create session:表示用户能够连接到数据库实例并创建session,用户要能够登录数据库的话,至少要求该权限,也就是说,创建一个用户以后,至少要给与这个权限第48页/共74页第49页/共74页我们先看一下系统都有哪些权限。上面涉及都后面要讲的问题。第50页/共74页用户systest不仅具有被赋予的create any tab
15、le权限,还具有将这个权限付给别人的能力。第51页/共74页如果用户需要在其所在的schema下创建对象,则需要游标空间上的配额(quota)1、unlimited tablespace系统权限,该用户能够在任何表空间里使用存储空间2、赋予用户在某些特定的表空间上的配额,该配额可以是一个具体的数值,也可以是unlimited第52页/共74页如何知道用户在哪些表空间上存在多少配额?第53页/共74页带有any关键字的系统权限,表示可以在不同的schema下处理对象。默认情况下,即便具有any的系统权限,也不能操作用户sys所拥有的对象,这取决于下面的参数。第54页/共74页保持这个参数的默认值
16、false,防止sys的对象被被的用户访问,非常的危险。第55页/共74页对象权限例如用户可以查询另一个用户下的一个对象,这就是对象权限对象权限名表视图序列号存储过程包InsertDeleteupdateSelectAlterIndexreferencesexecute第56页/共74页必须以对象所有者的身份登陆,然后将当前用户所具有的某个对象权限赋给另外的用户。第57页/共74页用户systest1可以在userlevel上建立索引,如果userlevel表非常的大,那么访问这个表的时候需要使用索引。第58页/共74页将一个包的执行权限赋给一个用户。第59页/共74页对象权限的传递,使用wi
17、th grant option。用户systest1可以将这个权限赋给别的用户。第60页/共74页有一个系统权限grant any object privilege,如果用户具有了该系统权限,那么该用户就可以代表其他用户将他们所拥有的对象的权限赋给任意的用户。默认只有sys具有这个权限。第61页/共74页第62页/共74页第63页/共74页第64页/共74页将select on test11的权限撤回。权限具有连带效应。第65页/共74页角色管理角色是一组权限的集合,并给该集合起了个名称,这个名称就是角色名。角色可以赋给某个用户,这样该用户就具有了角色所包含的所有权限。角色还可以赋给另外的角色
18、。角色的赋权过程中,不能形成环路,否则报错。A角色赋给了B角色,又把B角色赋给了C角色,如果有要把C角色赋给A角色,系统就会报错。第66页/共74页角色管理的好处1、利于权限的分配20个用户,他们的权限相同,每个用户10个权限,总共需要赋权限200次。如果为10个权限建立一个角色,那么只需要付权限30次(10次给角色、20次给用户)2、利于权限的管理我们可以从角色中收回某个权限,这样20个都失去了这个权限我们通过禁用这个角色,让20个用户失去角色中所有的权限第67页/共74页数据库创建好以后,就已经预先建立了很多的角色DBA:具有大部分的管理权限我们不应该使用sys和system进行维护建立一
19、个用户,然后将DBA权限付给这个用户第68页/共74页不能够使用sysdba登陆。第69页/共74页RESOURCE权限,该角色具有很多的create开头的系统权限比如create table、create procedure等。如果使用该角色,则用户可以创建很多不同类型的对象。在9i中,resource角色具有unlimited tablespace的系统权限在10g中,不再具有这个系统权限第70页/共74页创建角色第71页/共74页角色的启用、认证默认角色和非默认角色用户可以拥有很多的角色,用户登录的时候,默认角色一定会自动的启用,不管是否设置了角色的认证,默认角色总是启用的。非默认角色在用户登录后需要手工的启用,如果设置了认证,还需要通过认证。第72页/共74页将一个角色设置为默认以后,别的角色就是非默认。用户登录后,只有默认角色起作用。第二个角色起作用了,下面的错误说明了在10g中,resource角色中已经没有了unlimited tablespace权限。第73页/共74页感谢您的观看!第74页/共74页
限制150内