第7章Oracle安全管理本章主要介绍Oracle的安全管理,包括用户管理、权限管理、角色管理、概要文件管理以及审计管理。7.1用户管理Oracle是一个多用户的数据库系统,每一个试图使用Oracle数据库系统的用户都必须拥有一个合法的用户名和口令,这样才能进入数据库系统进行相应的操作。用户管理是实现Oracle系统安全性的重要手段,Oracle系统为不同的用户分配不同的权限或角色,每个用户只能在自己的权限范围内进行操作,任何超越权限范围的操作都被Oracle系统视为非法。用户管理主要包括创建用户、修改用户的设置和口令、锁定和解锁用户、删除用户等。7.1.1创建用户创建用户的SQL命令是CREATEUSER,基本语法如下:CREATEUSER用户名IDENTIFIEDBY口令[{DEFAULTTABLESPACE默认表空间名称|TEMPORARYTABLESPACE临时表空间名称|QUOTA{数目[K|M]UNLIMITED}ON表空间名称|PROFILE用户配置文件|PASSWORDEXPIRE|ACCOUNT{LOCK|UNLOCK}]其中,用户名指用户账号名称;IDENTIFIED关键字指定用户的认证方式,通常为口令方式;DEFAULTTABLESPACE指定用户的默认表空间名称;TEMPORARYTABLESPACE指定用户的临时表空间名称;QUOTA关键字限制用户使用表空间的数量,单位为KB或MB;UNLIMITED指使用表空间不受限制;PROFILE关键字指定用户的配置文件;PASSWORDEXPIRE指定用户的密码已经到期失效,在用户登录时,强制用户更改密码;ACCOUNT指定锁定或解锁用户账号。下面的语句创建了一个用户。SQLCREATEUSERLOTUSIDENTIFIEDBYLOTUSDEFAULTTABLESPACEUSERSQUOTA10KONUSERSPROFILEDEFAULTACCOUNTUNLOCK;GRANTCONNECTTOLOTUS;GRANTDBATOLOTUS;用户已创建。授权成功。授权成功。上面语句中的GRANT子句用来对LOTUS用户授予权限。如要在OEM中创建用户账号,则在“服务器”选项卡上的安全性中选择“用户”选项,打开“用户”界面,如图7-1所示。图7-1“用户”界面此界面可以用来显示数据库中所有用户信息。如果在“对象名”文本框中输入完整或部分的用户名称,再单击“开始”按钮,在下面的区域将显示查询到符合条件的用户列表。如果要创建用户,单击“创建”按钮,显示“创建用户”界面,如图7-2所示。图7-2“创建用户”的“一般信息”选项卡在“一般信息”选项卡的“名称”文本框中输入用户名MENGDX,在“概要文件”下拉列表框中选择分配给用户的概要文件,如果没有作选择,默认将分配DEFAULT概要文件(关于概要文件的介绍详见7.4节)。在“验证”下拉列表框中选择用户身份认证方式,选择认证方式为“口令”。如果选中“口令即刻失效”复选框,则系统在用户第一次登录时将提示更改口令。在“输入口令”和“确认口令”处都输入MENGDX。在“默认表空间”文本框处选择用户的默认表空间(可以通过右边的图标,在打开的方案选择界面中进行选择),这里选择USERS表空间。在“临时表空间”文本框中输入用户的临时表空间,这里选择TEMP临时表空间。在“状态”选项组中选择“未锁定”单选按钮,将解除对用户账号的锁定,允许用户访问数据库,默认选中“未锁定”单选按钮。如果选中“锁定”单选按钮,则锁定用户账号,禁止用户访问数据库。接着继续设置用户的角色。切换到“角色”选项卡。在此单击“编辑列表”按钮,出现“修改角色”界面如图7-3所示。在“可用角色”列表框中选择要授予用户的角色,单击“移动”按钮,把它们添加到“所选角色”列表中,还可以通过“删除”按钮撤销已经添加到“所选角色”列表中的角色。默认授予CONNECT角色,这是连接数据库的角色。这里,添加DBA角色给当前用户。角色是系统权限和对象权限的集合,关于角色的介绍详见7.3节。图7-3“创建用户”的“角色”选项卡“系统权限”选项卡用于设置用户可以执行某个操作的权限,它不属于某个具体的方案对象。其设置方法类似角色的设置,这里不再赘述。这里选择UNLIMITEDTABLESPACE、CREATEANYTABLE、ALTERANYTABLE、SELECTANYTABLE和DROPANYTABLE等几种系统权限,如图7-4所示。图7-4“创建用户”的“系统权限”选项卡“对象权限”选项卡用于设置对特定的方案对象进行操作的权限,可以为方案对象添加读取、写入、修改、删除、添加和引用等对象权限。如这里选择对象类型为“表”然后单击“添加”按钮,如选择HR.JOBS表,单击“全部移动”按钮,则左边的“可用权限”将全部添加到右边的“所选权限”,如图7-5所示。图7-5“创建用户”的“对象权限”选项卡在“限额”选项卡中可以指定用户在其中分配空间的表空间,以及用户在每个表空间中可分配的最大空间数量。在列表中选择表空间,并单击“无”、“无限制”或“值”按钮来为表空间指定限额大小,如图7-6所示。图7-6“创建用户”的“限额”选项卡“使用者组切换权限”选项卡用于对资源使用者组的权限切换进行管理。其设置方法类似于角色的设置,这里不再赘述。“使用者组切换权限”选项卡如图7-7所示。图7-7“创建用户”的“使用者组切换权限”选项卡在“代理用户”选项卡中可指定代理此用户的用户及此用户可代理的用户,这里指定可代理MENGDX用户的用户是HR,MENGDX用户可代理的其他用户是LOTUS,如图7-8所示。图7-8“创建用户”的“代理用户”选项卡上面的步骤都设置完成后,就可以完成创建用户MENGDX,其相应的SQL语句如下。CREATEUSERMENGDXPROFILEDEFAULTIDENTIFIEDBYMENGDXDEFAULTTABLESPACEUSERSTEMPORARYTABLESPACETEMPACCOUNTUNLOCKGRANTUNLIMITEDTABLESPACETOMENGDX;GRANTALTERANYTABLETOMENGDX;GRANTCOMMENTANYTABLETOMENGDX;GRANTCREATEANYTABLETOMENGDX;GRANTDELETEANYTABLETOMENGDX;GRANTDROPANYTABLETOMENGDX;GRANTFLASHBACKANYTABLETOMENGDX;GRANTINSERTANYTABLETOMENGDX;GRANTSELECTANYTABLETOMENGDX;GRANTUPDATEANYTABLETOMENGDX;GRANTALTERONHR.JOBSTOMENGDX;GRANTDELETEONHR.JOBSTOMENGDX;GRANTINDEXONHR.JOBSTOMENGDX;GRANTINSERTONHR.JOBSTOMENGDX;GRANTREFERENCESONHR.JOBSTOMENGDX;GRANTSELECTONHR.JOBSTOMENGDX;GRANTUPDATEONHR.JOBSTOMENGDX;GRANTCONNECTTOMENGDXWITHADMINOPTION;GRANTDBATOMENGDXWITHADMINOPTION;ALTERuserMENGDXGRANTCONNECTTHROUGHHR;ALTERuserLOTUSGRANTCONNECTTHROUGHMENGDX;7.1.2修改用户Oracle允许修改用户的概要文件、更改口令、更改用户的默认表空间及临时表空间、锁定/解锁用户、更改限额等。修改用户的SQL命令是ALTERUSER语句,其语法格式与CREATEUSER基本相同,下面列举了一些常见的修改用户操作。下面的语句更改了LOTUS用户的概要文件为PROFILE1,PROFILE1是已经建立好的概要文件名。SQLALTERUSERLOTUSPROFILEPROFILE1;用户已更改。下面的语句更改LOTUS用户的口令为LOTUS123。SQLALTERUSERLOTUSIDENTIFIEDBYLOTUS123;用户已更改。下面的语句更改LOTUS用户的默认表空间为XXGCX表空间。SQLALTERUSERLOTUSDEFAULTTABLESPACEXXGCX;用户已更改。下面的语句更改临时表空间为一个新建的临时表空间TEMP2。SQLALTERUSERLOTUSTEMPORARYTABLESPACETEMP2用户已更改。下面的语句锁定LOTUS用户账号。SQLALTERUSERLOTUSACCOUNTLOCK;用户已更改。另外,解锁用户账号用下面的语句:SQLALTERUSERLOTUSACCOUNTUNLOCK;用户已更改。下面的语句更改LOTUS用户在USERS表空间的限额为无限。SQLALTERUSERLOTUSQUOTAUNLIMITEDONUSERS;用户已更改。如要在OEM中修改用户账号,则在的“服务器”选项卡的安全性中选择“用户”选项,打开“用户”界面。在用户界面中单击“编辑”按钮,出现“编辑用户”界面,这里的操作与创建用户的操作类似,不再赘述。7.1.3删除用户删除用户的SQL命令是DROPUSER语句,删除上述用户相对应的SQL语句如下。SQLDROPUSERLOTUS;用户已删除。注意:在使用DROPUSER命令删除用户时,如果没有指定CASCADE子句,同时该用户拥有自己的Oracle对象,将提示出错信息,指定CASCADE子句后,将删除该用户拥有的所用对象。另外,不能删除当前正在使用数据库的用户。在OEM中删除用户时,选中要删除的用户,单击“删除”按钮,在随后出现的确认界面中单击“是”按钮,就可以完成删除用户的工作。7.1.4有关用户的数据字典Oracle系统中与用户信息有关的数据字典如表7-1所示。表7-1有关用户的数据字典名称说明DBA_USERS数据库中所用用户的账号信息ALL_USERS当前用户可以访问的所有用户的账号信息USER_USERS当前用户的账号信息DBA_TS_QUOTAS数据库中所有用户的表空间配额信息USER_TS_QUOTAS当前用户的表空间配额信息USER_PASSWORD_LIMITS分配给用户的口令文件参数信息USER_RESOURCE_LIMITS分配给用户的资源限制信息DBA_PROFILES数据库中所有用户的配置文件和限制信息RESOURCE_COST数据库中所有资源的消耗情况信息下面的语句显示数据库中所有用户的账号名称、账号状态及配置文件名。SQLSELECTUSERNAME,ACCOUNT_STATUS,PROFILEFROMDBA_USERS;USERNAMEACCOUNT_STATUSPROFILE----------------------------------------------SYSOPENDEFAULTSYSTEMOPENDEFAULTDBSNMPOPENDEFAULTSCOTTOPENDEFAULTMDXOPENDEFAULTLOTUSOPENDEFAULT.......................已选择38行。下面的语句查看LOTUS用户的表空间限额。SQLSELECT*FROMDBA_TS_QUOTASWHEREUSERNAME='LOTUS';TABLESPACE_NAMEUSERNAMEBYTESMAX_BYTESBLOCKSMAX_BLOCKSDRO--------------------------------------------------------USERSLOTUS01638402NO7.2权限管理权限指用户对数据库进行操作的能力,如果不对新建的用户赋予一定的权限,该用户是不能对数据库进行操作的。Oracle权限分为系统权限和对象权限两种,系统权限指在O