第7章安全管理.docx
《第7章安全管理.docx》由会员分享,可在线阅读,更多相关《第7章安全管理.docx(48页珍藏版)》请在冰豆网上搜索。
第7章安全管理
第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指定锁定或解锁用户账号。
下面的语句创建了一个用户。
SQL>CREATEUSER"LOTUS"
IDENTIFIEDBY"LOTUS"
DEFAULTTABLESPACE"USERS"
QUOTA10KONUSERS
PROFILE"DEFAULT"
ACCOUNTUNLOCK;
GRANT"CONNECT"TO"LOTUS";
GRANT"DBA"TO"LOTUS";
用户已创建。
授权成功。
授权成功。
上面语句中的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语句如下。
CREATEUSER"MENGDX"PROFILE"DEFAULT"
IDENTIFIEDBY"MENGDX"DEFAULTTABLESPACE"USERS"
TEMPORARYTABLESPACE"TEMP"
ACCOUNTUNLOCK
GRANTUNLIMITEDTABLESPACETO"MENGDX";
GRANTALTERANYTABLETO"MENGDX";
GRANTCOMMENTANYTABLETO"MENGDX";
GRANTCREATEANYTABLETO"MENGDX";
GRANTDELETEANYTABLETO"MENGDX";
GRANTDROPANYTABLETO"MENGDX";
GRANTFLASHBACKANYTABLETO"MENGDX";
GRANTINSERTANYTABLETO"MENGDX";
GRANTSELECTANYTABLETO"MENGDX";
GRANTUPDATEANYTABLETO"MENGDX";
GRANTALTERON"HR"."JOBS"TO"MENGDX";
GRANTDELETEON"HR"."JOBS"TO"MENGDX";
GRANTINDEXON"HR"."JOBS"TO"MENGDX";
GRANTINSERTON"HR"."JOBS"TO"MENGDX";
GRANTREFERENCESON"HR"."JOBS"TO"MENGDX";
GRANTSELECTON"HR"."JOBS"TO"MENGDX";
GRANTUPDATEON"HR"."JOBS"TO"MENGDX";
GRANT"CONNECT"TO"MENGDX"WITHADMINOPTION;
GRANT"DBA"TO"MENGDX"WITHADMINOPTION;
ALTERuser"MENGDX"GRANTCONNECTTHROUGHHR;
ALTERuserLOTUSGRANTCONNECTTHROUGH"MENGDX";
7.1.2修改用户
Oracle允许修改用户的概要文件、更改口令、更改用户的默认表空间及临时表空间、锁定/解锁用户、更改限额等。
修改用户的SQL命令是ALTERUSER语句,其语法格式与CREATEUSER基本相同,下面列举了一些常见的修改用户操作。
下面的语句更改了LOTUS用户的概要文件为PROFILE1,PROFILE1是已经建立好的概要文件名。
SQL>ALTERUSERLOTUSPROFILEPROFILE1;
用户已更改。
下面的语句更改LOTUS用户的口令为LOTUS123。
SQL>ALTERUSERLOTUSIDENTIFIEDBYLOTUS123;
用户已更改。
下面的语句更改LOTUS用户的默认表空间为XXGCX表空间。
SQL>ALTERUSERLOTUSDEFAULTTABLESPACEXXGCX;
用户已更改。
下面的语句更改临时表空间为一个新建的临时表空间TEMP2。
SQL>ALTERUSERLOTUSTEMPORARYTABLESPACETEMP2
用户已更改。
下面的语句锁定LOTUS用户账号。
SQL>ALTERUSERLOTUSACCOUNTLOCK;
用户已更改。
另外,解锁用户账号用下面的语句:
SQL>ALTERUSERLOTUSACCOUNTUNLOCK;
用户已更改。
下面的语句更改LOTUS用户在USERS表空间的限额为无限。
SQL>ALTERUSERLOTUSQUOTAUNLIMITEDONUSERS;
用户已更改。
如要在OEM中修改用户账号,则在的“服务器”选项卡的安全性中选择“用户”选项,打开“用户”界面。
在用户界面中单击“编辑”按钮,出现“编辑用户”界面,这里的操作与创建用户的操作类似,不再赘述。
7.1.3删除用户
删除用户的SQL命令是DROPUSER语句,删除上述用户相对应的SQL语句如下。
SQL>DROPUSERLOTUS;
用户已删除。
注意:
在使用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
数据库中所有资源的消耗情况信息
下面的语句显示数据库中所有用户的账号名称、账号状态及配置文件名。
SQL>SELECTUSERNAME,ACCOUNT_STATUS,PROFILEFROMDBA_USERS;
USERNAMEACCOUNT_STATUSPROFILE
------------- ---------------------------------
SYSOPEN DEFAULT
SYSTEMOPEN DEFAULT
DBSNMPOPEN DEFAULT
SCOTTOPEN DEFAULT
MDXOPENDEFAULT
LOTUSOPEN DEFAULT
.......................
已选择38行。
下面的语句查看LOTUS用户的表空间限额。
SQL>SELECT*FROMDBA_TS_QUOTASWHEREUSERNAME='LOTUS';
TABLESPACE_NAMEUSERNAMEBYTESMAX_BYTESBLOCKSMAX_BLOCKSDRO
--------------------------------------------------------
USERSLOTUS016384 02NO
7.2权限管理
权限指用户对数据库进行操作的能力,如果不对新建的用户赋予一定的权限,该用户是不能对数据库进行操作的。
Oracle权限分为系统权限和对象权限两种,系统权限指在Oracle数据库系统中执行某项操作的能力,对象权限指在特定数据库对象上执行某项操作的能力。
Oracle系统通过授予和撤销权限,实现对数据库系统安全的访问控制。
7.2.1系统权限
Oracle提供了众多的系统权限,每一种系统权限指明用户进行某一种或某类特定的数据库操作。
系统权限中带有ANY关键字的指明该权限的范围为数据库中的所有方案。
表7-2列举了一些常见的系统权限。
表7-2常见的系统权限
名称
说明
ALTERANYCLUSTER
修改任何聚簇
ALTERANYINDEX
修改任何索引
ALTERANYPROCEDURE
修改任何过程
ALTERANYROLE
修改任何角色
ALTERANYTYPE
修改任何类型
ALTERANYTRIGGER
修改任何触发器
ALTERANYTABLE
修改任何表
ALTERANYSEQUENCE
修改任何序列
ALTERROLLBACKSEGMENT
修改回滚段
ALTERRESOURCECOST
修改资源代价
ALTERPROFILE
修改配置文件
ALTERDATABASE
修改数据库
ALTERSYSTEM
修改系统参数
ALTERUSER
修改用户
ALTERTABLESPACE
修改表空间
ALTERSESSION
修改会话
ANALYZEANY
分析任何数据库对象
ANALYZEANYDICTIONARY
分析任何数据库字典
AUDITANY
审计任何数据库对象
BACKUPANYTABLE
备份任何表
CREATE[ANY]CLUSTER
创建聚簇
CREATE[ANY]TABLE
创建表
CREATE[ANY]INDEX
创建索引
CREATE[ANY]PROCEDURE
创建过程
CREATE[ANY]SEQUENCE
创建序列
CREATE[ANY]SYNONYM
创建同义词
CREATE[ANY]TRIGGER
创建触发器
CREATE[ANY]TYPE
创建类型
CREATE[ANY]VIEW
创建视图
CREATEROLE
创建角色
CREATESESSION
创建会话
CREATETABLESPACE
创建表空间
CREATEUSER
创建用户
DEBUGANYPROCEDURE
调试任何过程
DELETEANYTABLE
删除任何表
DROPANYCLUSTER
删除任何聚簇
DROPANYINDEX
删除任何索引
DROPANYPROCEDURE
删除任何过程
DROPANYROLE
删除任何角色
DROPANYSEQUENCE
删除任何序列
DROPANYSYNONYM
删除任何同义词
DROPANYTABLE
删除任何表
DROPANYTRIGGER
删除任何触发器
DROPANYTYPE
删除任何类型
DROPANYVIEW
删除任何视图
DROPTABLESPACE
删除表空间
DROPPROFILE
删除配置文件
DROPUSER
删除用户
EXCUTEANYPROCEDURE
执行任何过程
FLASHBACKANYTABLE
闪回任何表
GRANTANYPRIVIEGE
授予任何系统权限
GRANTANYROLE
授予任何角色
IMPORTFULLDATABASE
导入全库
INSERTANYTABLE
插入任何表
LOCKANYTABLE
锁定任何表
RESTRICTEDSESSION
限制会话
SELECTANYDICTIONARY
查询任何数据字典
SELECTANYSEQUENCE
查询任何序列
SELECTANYTABLE
查询任何表
SELECTANYTRANSACTION
查询任何事务
SYSDBA
系统管理员权限
SYSOPER
系统操作员权限
UPDATEANYTABLE
修改任何表
UNLIMITEDTABLESPACE
无限表空间限额
其中,使用带有ANY关键字的系统权限,可以使用户在数据库中的任何模式中创建对象。
如CREATEANYTABLE系统权限允许拥有该系统权限的用户为数据库中的任何模式创建表。
7.2.2对象权限
对象权限指在特定数据库对象上执行某项操作的能力。
与系统权限相比,对象权限主要指在Oracle对象上能够执行的操作,如查询、插入、修改、删除、执行等。
Oracle对象主要包括表、视图、聚簇、索引、序列、快照、过程、函数、包等。
不同的Oracle对象具有不同的对象权限,如表具有插入的对象权限,而序列却没有,而序列具有的执行对象权限,而表却没有。
相对于数量众多的系统权限,对象权限相对较少。
表7-3列出了常用的Oracle对象及其相应的对象权限。
表7-3常用的Oracle对象及其相关联的对象权限
类型
表
视图
序列
过程/函数/包
SELECT
*
*
*
INSERT
*
*
UPDATE
*
*
DELETE
*
*
EXECUTE
*
ALTER
*
*
INDEX
*
REFERENCES
*
其中,表中注有“*”的表示该Oracle对象具有相关联的对象权限。
7.2.3授予和撤销系统权限
创建用户后,如果没有为用户授予相应的权限,用户是不能对数据库进行操作的,甚至不能登录到数据库上。
所以必须为用户授予一定的系统权限。
在SQL命令中,使用GRANT语句授予权限,使用REVOKE语句撤销权限。
1.授予系统权限
授予系统权限的基本语法如下。
GRANT{系统权限列表|角色}TO{用户名|角色|PUBLIC}[WITHADMINOPTION]
其中,PUBLIC指授予数据库中的所有用户,WITHADMINOPTION选项将使得该用户有能力将其权限再授予其他用户。
下面的语句授予LOTUS用户具有建立表、建立视图、建立索引的权限。
SQL>GRANTCREATETABLE,CREATEVIEW,CREATEINDEXTOLOTUS;
下面的语句授予LOTUS用户具有建立表的系统权限,同时允许LOTUS用户管理建立表的系统权限。
SQL>GRANTCREATETABLETOLOTUSWITHADMINOPTION;
下面的语句授予数据库中的所有用户使用无限表空间的权限。
SQL>GRANTUNLIMITEDTABLESPACETOPUBLIC;
2.撤销系统权限
对于一般数据库用户,授予过高的系统权限可能给Oracle数据库系统带来安全问题,作为DBA,应该经常了解当前数据库用户的权限分配情况,并撤销一些不必要的系统权限。
撤销系统权限的数据库用户不必是最初授予系统权限的用户,任何具有ADMINOPTION权限的数据库用户都可以撤销其他用户的系统权限。
另外,在撤销系统权限时,使用WITHADMINOPTION选项而获得系统权限的用户不受影响。
撤销系统权限的基本语法如下。
REVOKE{系统权限列表|角色}FROM{用户名|角色|PUBLIC}
下面的语句撤销LOTUS用户的具有建立表、视图、索引的权限。
SQL>REVOKECREATETABLE,CREATEVIEW,CREATEINDEXFROMLOTUS;
下面的语句撤销数据库中的所有用户使用无限表空间的权限。
SQL>REVOKEUNLIMITEDTABLESPACEFROMPUBLIC;
如要在OEM中对用户授予和撤销系统权限,可以在创建用户或修改用户时完成。
在创建用户时系统权限的设置方法详见7.1.1节。
7.2.4授予和撤销对象权限
1.授予对象权限
对象权限由该对象的拥有者为其他用户授权,非对象的拥有者不能将对象权限授予其他用户,即使是数据库管理员也不能为其他用户所属的对象授权。
与授予系统权限一样,授予对象权限也用到GRANT语句,基本语法如下:
GRANT{对象权限列表|ALL}ON[模式名.]数据库对象TO{用户名|角色|PUBLIC}
[WITHADMINOPTION]
其中,对象权限列表指选择、插入和删除等,WITHADMINOPTION选项的含义与授予系统权限中的含义相同。
下面的语句表示授予LOTUS用户具有查询、修改、删除STUDENT表的对象权限。
SQL>GRANTSELECT,UPDATE,DELETEONSTUDENTTOLOTUS;
下面的语句表示授予LOTUS用户具有对STUDENT表所有的操作权限,并且可以把获得的对象权限再授予其他用户。
SQL>GRANTALLONSTUDENTTOLOTUSWITHADMINOPTION;
2.撤销对象权限
与撤销系统权限一样,撤销对象权限也用到REVOKE语句,基本语法如下。
REVOKE{对象权限列表|ALL}ON[模式名.]数据库对象FROM{用户名|角色|PUBLIC}
[CASCADECONSTRAINTS][FORCE]
其中,CASCADECONSTRAINTS选项将会导致用REFERENCES权限定义的相关的完整性约束被删除,FORCE选项将废除用户定义的对象类型的EXECUTE权限被删除,并撤销依赖于这些对象类型的表格。
在撤销对象权限时,使用WITHADMINOPTION选项而获得对象权限的用户会受到影响,即同