ORACLE数据库开发基础第九章安全管理.docx
- 文档编号:30668761
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:12
- 大小:18.60KB
ORACLE数据库开发基础第九章安全管理.docx
《ORACLE数据库开发基础第九章安全管理.docx》由会员分享,可在线阅读,更多相关《ORACLE数据库开发基础第九章安全管理.docx(12页珍藏版)》请在冰豆网上搜索。
ORACLE数据库开发基础第九章安全管理
ORACLE数据库管理员基础
第九章安全管理
在建立应用系统的各种对象(包括表、视图、索引等)前,就得先确定各个对象与用户
的关系。
也就是说,哪些用户需要建立,哪些用户都充当什么样的角色,他们应该有多大权
限等。
下面介绍基本的安全管理方面的内容,更详细的内容在DBA资料里介绍。
9.1CREATEUSER命令
CREATEUSERusernameIDENTIFIEDBYpassword
OrIDENTIFIEDEXETERNALLY
OrIDENTIFIEDGLOBALLYAS‘CN=user’
[DEAFULTTABLESPACEtablespace]
[TEMPORARYTABLESPACEtablespace]
[QUOTA[integerK[M]][UNLIMITED]ONtablespace
[,QUOTA[integerK[M]][UNLIMITED]ONtablespace
[PROFILESprofile_name]
[PASSWORDEXPIRE]
[ACCOUNTLOCKorACCOUNTUNLOCK]
CREATEUSERusername用户名
IDENTIFIEDBYpassword用户口令
IDENTIFIEDBYEXETERNALLY用户名在操作系统下验证,这个用户名必须与操作
系统中所定义的用户相同。
IDENTIFIEDGLOBALLYAS‘CN=user’用户名是ORACLE安全域中心服务器来验证
,CN名字标识用户的外部名。
[DEAFULTTABLESPACEtablespace]缺省的表空间
[TEMPORARYTABLESPACEtablespace]缺省的临时表空间
[QUOTA[integerK[M]][UNLIMITED]ONtablespace允许使用k[m]字节
[,QUOTA[integerK[M]][UNLIMITED]ONtablespace
[PROFILESprofile_name]资源文件的名字
[PASSWORDEXPIRE]立即将口令设成过期状态,用户在登录进入前必须
修改口令。
[ACCOUNTLOCKorACCOUNTUNLOCK]用户不被加锁。
196
9.2建立用户
建立用户虽然不是经常的工作,但却是比不可少的工作。
如果你的环境是一个较复杂的
应用系统,你还是应该重视用户的建立和管理的事。
下面是建立不同类型用户的方法。
9.2.1外部验证(Authenticated)用户
外部识别的Oracle用户可以被客户端的操作系统验证,即在Oracle外放置了用于口令
管理和用户验证的控制。
此类登录不再需要Oracle口令。
操作系统验证的实现需要进行下面
步骤:
1.在INITsid.ORA文件中设置OS_AUTHENT_PREFIX参数,在Oracle6里必须设置用户
的前缀为OPS$。
Oracle8可以不需要前缀OPS$。
如在INITsid.ORA文件上加:
...
OS_AUTHENT_PREFIX=”OPS$”
...
2.用CREATEUSER建立外部用户:
CREATEUSERops$zhaoIDENTIFIEDBYEXTERNALLY;
如果在INITsid.ORA文件的OS_AUTHENT_PREFIX=””(即没有设置为OPS$),则:
CREATEUSERzhaoIDENTIFIEDBYEXTERNALLY;
CREATEUSERops$zhaoyjIDENTIFIEDBYEXTERNALLY
DEFAULTTABLESPACEusers
TEMPORARYTABLESPACEtemp
QUOTSUNLIMITEDONusers
QUOTSUNLIMITEDONtemp;
9.2.2全局(Globally)验证用户-企业验证
在Oracle数据库里,可以将用户配置成不需要验证口令的方式,用以替代来自X.509企业
目录服务的口令检查。
这种类型的用户一般都是在大的企业里的登录使用。
一般企业验证启
用Oracle安全服务(OSS)来实现单独的注册。
建立全局验证的用户需要带GLOABLLYAS
。
如:
197
CREATEUSERSCOTTIDENTIFIEDGLOABLLYAS‘CN=scott,
OU=division1,O=sybex,C=US’;
9.3ALTERUSER命令
ALTERUSER命令用于修改用户的资源限制和口令等。
ALTERUSER命令语法如下:
ALTERUSERusernameIDENTIFIEDBYpassword
OrIDENTIFIEDEXETERNALLY
OrIDENTIFIEDGLOBALLYAS‘CN=user’
[DEAFULTTABLESPACEtablespace]
[TEMPORARYTABLESPACEtablespace]
[QUOTA[integerK[M]][UNLIMITED]ONtablespace
[,QUOTA[integerK[M]][UNLIMITED]ONtablespace
[PROFILESprofile_name]
[PASSWORDEXPIRE]
[ACCOUNTLOCKorACCOUNTUNLOCK]
[DEFAULTROLErole[,role]
or[DEFAULTROLEALL[EXEPTrole[,role]]]or[DEFAULTROLENOTE]
例:
比如用户使用的资源超出限额的话,就如下提示:
ORA-01536:
SPACEQUOTAEXCEEDEDFORTABLESPACE‘USERS’
这时需要对该用户增加资源限额:
SQLPLUSSYSTEM/MANAGER
SQL>ALTERUSERsidenyQUOTA10MONSYSTEM;
9.4DROPUSER命令
对于不再需要的用户,可以用DROPUSER来将不要的用户从数据库系统中删除。
以释放出磁
盘空间。
DROPUSER语句的语法如下:
DROPUSERuser[CASCADE]
如果加CASCADE则连同用户的对象一起删除。
SQL>dropuserzhaocascade;
提示:
不要轻易使用DROPUSER命令。
只有在确认某个用户没有保留时才使用该命令。
198
9.5GRANT命令与REVOKE命令
Oracle提供两个命令(grant和revoke)用于给用户(或角色)进行授权和从用户(或角色)中
收回某些权限。
GRANT可以给用户(或角色)授予对象的权限和系统权限。
9.5.1GRANT命令
可以使用GRANT语句将权限或角色授予某个用户或角色。
GRANT的语法如下:
GRANTsystem_privilege|roleTOuser|role|PUBLIC
[WITHADMINOPTION]
GRANTobject_privilege|ALLcolumnONschema.object
FROMuser|role|PUBLICWITHGRANTOPTION
system_privilege:
系统权限或角色
role:
角色
user:
被授予的用户或角色
object_privilege:
对象的权限,可以是:
ALTER
DELETE
EXECUTE
INDEX
INSERT
REFERENCES
SELECT
UPDATE
例子:
SQL
GRANTCREATETABLETOgavaskar;
GRANTteam_leaderTOcrystal;
GRANTINSERT,UPDATEONsalesTOlarryWITHGRANTOPTION;
GRANTALLTOPUBLIC;.
9.5.2REVOKE命令
可以使用REVOKE语句从用户或角色中撤消某些权限。
REVOKE的语法如下:
199
REVOKEsystem_privilege|roleFROMuser|role|PUBLIC
REVOKEsystem_privilege|roleFROMuser|role|PUBLIC
REVOKEobject_privilege|ALLONschema.objectFROMuser
|role|PUBLICCASCADECONSTRAINTS
system_privilege:
系统权限或角色
object_privilege:
对象的权限,可以是:
ALTER
DELETE
EXECUTE
INDEX
INSERT
REFERENCES
SELECT
UPDATE
例:
REVOKEALTERTABLESPACEFROMjohn;
REVOKEGRANTANYROLEFROMtodd;
REVOKEmanagerFROMimran;
REVOKEINSERTONsalesFROMjaved;
REVOKEALLONmarketingFROMterry;.
9.6权限和角色
为了管理复杂系统的不同用户,Oracle系统提供了角色和权限。
权限可以使用户能访问
对象或执行程序。
而角色是一组权限的集合,同样,角色被授予用户后,用户也具有某些权
限。
Oracle有三种类型的权限:
对象权限(Object)
系统权限(System)
角色(Role)
9.6.1建立角色
角色是一组权限的集合。
角色包含一个或多个权限;角色可以再包含角色。
关于角色的
详细描述参考另外的《Oracle8i初级数据库管理》--赵元杰著。
1.建立角色的命令语法如下:
200
CREATEROLErole_name
[NOTINDENTIFIED|
[INDENTIFIED[BYpassword|EXTERNALLY|GLOABALLY]]
];
role指定角色名;
NOTIDENTIFIED不需口令有数据库验证;
IDENTIFIED需要口令,分别为三种情况:
BYpassword指定本地用户口令,如果在建立角色时用口令,则用户在使用时也
要给出口令。
EXTERNALLY指定为外部用户,该用户用外部服务进行验证。
CREATEROLErole
NOTIDENTIFIED
IDENTIFIED
BYpassword
EXTERNALLY
GLOBALLY;
例:
CREATEROLEvendorIDENTIFIEDGLOBALLY;
2.三种标准角色:
自从Oracle6版本以后,Oracle系统一直有三种缺省的角色,即:
CONNECT(连接角色)
具有CONNECT角色用户,可以进行SELECT,INSERT,UPDATE和DELETE操作。
RESOURCE(资源角色)
具有RESOURCE角色的用户可以进行CONNECT所做的工作,此外,还可以进行CREATE
TABLE、CREATESEQUENCE、CREATEPROCEDURE、CREATETRIGGER、CREATEINDEX
及CREATECLUSTER等。
DBA(数据库管理员角色)
具有DBA角色的用户可以进行除RESOURCE外,还可以进行数据库的管理操作。
9.6.2给角色授权
一旦创建完角色,用户就可以给角色授权。
给角色授权的GRANT语句在前面介绍。
通过
GRANT语句可以对角色授各种权限,如用户对象的访问权,系统权限等。
如果用户具有DBA
201
权限的话,则用户有GRANTANYPRIVILEGE系统权限。
可以对角色授予各种权限。
如:
GRANTCREATESESSIONTOclerk;
GRANTCREATESESSION,CREATEDatabaselinktomamager;
9.6.3授权角色给用户
如果角色创建完毕并且已经给角色授了相应的权限,用户就可以将角色授权给用户了。
这样的操作完成后,被授角色的用户就有了相应的权限。
要完成这样的操作,只要操作者具
有GRANTANYPRIVILEGE系统权限就可通过GRANT语句对用户授各种权限。
如:
例。
假设clerk是一个角色,则可以将它授予用户:
GRANTclerkTOZHAO;
9.7有关的数据字典
无论对数据库管理员或是一般的用户,对Oracle有关数据字典的了解程度是衡量是否真
正掌握Oracle核心的关键。
如果你了解基本的Oracle数据字典,对于各种系统的信息查询
将大有好处。
下面给出与安全管理有关的数据字典简单介绍。
9.7.1与用户、角色与权限有关的数据字典
与用户、角色、权限有关的数据字典主要有:
DBA_USERS实例中有效的用户及相应信息。
V$SESSION实例中会话的信息。
DBA_ROLES实例中已经创建的角色的信息。
ROLE_TAB_PRIVS授予角色的对象权限。
ROLE_ROLE_PRIVS授予另一角色的角色。
ROLE_SYS_PRIVS授予角色的系统权限。
DBA_ROLE_PRIVS授予用户和角色的角色。
SESSION_ROLES用户可用的角色的信息。
9.7.2查询数据字典信息
对于一般的软件人员来说,应该掌握对数据字典的基本查询,如:
例1。
查看当前已经创建了多少用户和用户缺省的表空间:
202
SQL>setline120
SQL>colusernamefora26
SQL>coldefault_tablespacefora20
SQL>selectusername,DEFAULT_TABLESPACE,createdfromdba_users;
USERNAMEDEFAULT_TABLESPACECREATED
--------------------------------------------------------
SYSSYSTEM05-12月-01
SYSTEMTOOLS05-12月-01
OUTLNSYSTEM05-12月-01
DBSNMPSYSTEM05-12月-01
AURORA$JIS$UTILITY$SYSTEM05-12月-01
OSE$HTTP$ADMINSYSTEM05-12月-01
AURORA$ORB$UNAUTHENTICATEDSYSTEM05-12月-01
ORDSYSSYSTEM05-12月-01
ORDPLUGINSSYSTEM05-12月-01
MDSYSSYSTEM05-12月-01
ZHAOUSERS07-12月-01
SCOTTUSERS08-2月-02
已选择12行。
例2。
查看当前已经创建了多少角色:
SQL>select*fromdba_roles;
ROLEPASSWORD
--------------------------------------
CONNECTNO
RESOURCENO
DBANO
SELECT_CATALOG_ROLENO
EXECUTE_CATALOG_ROLENO
DELETE_CATALOG_ROLENO
EXP_FULL_DATABASENO
IMP_FULL_DATABASENO
RECOVERY_CATALOG_OWNERNO
AQ_ADMINISTRATOR_ROLENO
AQ_USER_ROLENO
ROLEPASSWORD
--------------------------------------
SNMPAGENTNO
203
OEM_MONITORNO
HS_ADMIN_ROLENO
JAVAUSERPRIVNO
JAVAIDPRIVNO
JAVASYSPRIVNO
JAVADEBUGPRIVNO
JAVA_ADMINNO
JAVA_DEPLOYNO
TIMESERIES_DEVELOPERNO
TIMESERIES_DBANO
已选择22行。
SQL>
204
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ORACLE 数据库 开发 基础 第九 安全管理