管理权限Word下载.docx
《管理权限Word下载.docx》由会员分享,可在线阅读,更多相关《管理权限Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
![管理权限Word下载.docx](https://file1.bdocx.com/fileroot1/2022-11/25/25d0b4a3-f305-49d0-8ab1-160ff862594e/25d0b4a3-f305-49d0-8ab1-160ff862594e1.gif)
在任何模式中创建表。
5.DROPANYTABLE:
删除任何模式中所创建的表。
6.ALTERANYTABLE:
修改任何模式中所创建的表。
7.CREATETABLE:
在用户自己的模式中创建表。
有关表空间的系统权限:
1.CREATETABLESPACE:
创建表空间的权限。
2.DROPTABLESPACE:
删除表空间的权限。
3.ALTERTABLESPACE:
修改表空间的权限。
4.UNLIMITEDTABLESPACE:
使用全部表空的权限。
有关索引的系统权限:
1.CREATEANYINDEX:
在任何模式中创建索引的权限。
2.DROPANYINDEX:
在任何模式中删除索引的权限。
3.ALTERANYINDEX:
在任何模式中个性索引的权限。
有关会话的系统的权限:
1.CREATESESSION:
连接数据库的权限。
2.ALTERSESSION:
发ALTERSESSION语句的权限。
其他的系统权限:
1.CREATEVIEW:
在用户自己的模式中创建视图的权限。
2.CREATESEQUENCE:
在用户自己的模式中创建序列号的权限。
3.CREATEPROCEDURE:
在用户自己的模式中创建过程的权限。
授予系统权限:
首先让我们以system用户连接至数据库,因为只有具备数据库管理员的用户才能授/驳系统权限。
SQL>
connsystem/mcl
已连接。
createuserdog
2identifiedbywangwang;
用户已创建。
createusercat
2identifiedbymiaomiao;
createuserpig
2identifiedbyhengheng;
createuserfox
2identifiedbyloveyou;
我们创建了一些用户为我们下面的实验做准备:
我们用CAT用户登录数据库,让我们来看看结果:
connectcat/miaomiao
ERROR:
ORA-01045:
userCATlacksCREATESESSIONprivilege;
logondenied
警告:
您不再连接到ORACLE。
结果显示CAT用户无法连接至数据库,因为这时CAT用户还没有任何权限,而登录数据库必须要有一个CREATESESSION这个系统权限。
grantcreatesession,selectanytable,createtable,createview
2tocat;
授权成功。
这时我们发现CAT用户已经可以连接至数据库。
CAT用户现在想将CREATESESSION,SELECTANYTABLE权限(一部分好处)分给它的狗友。
grantcreatesessionselectanytabletodog;
grantcreatesessionselectanytabletodog
*
第1行出现错误:
ORA-00990:
权限缺失或无效
我们发现CAT用户不能把“自己的好处”分配狗友,为了帮助CAT用户完成这件事,我们要在授权语句后加入WITHADMINOPTION。
2tocatwithadminoption;
select*fromdba_sys_privs
2wheregrantee='
CAT'
;
GRANTEEPRIVILEGEADM
-------------------------------------------------------------------------
CATCREATEVIEWYES
CATCREATETABLEYES
CATCREATESESSIONYES
CATSELECTANYTABLEYES
这时再让CAT用户把“自己的好处”给狗狗:
conncat/miaomiao
2todogwithadminoption;
这是我们发现CAT用户可以把自己的权限授予DOG用户,同时还允许狗狗把得到的权限再授予其它用户(WITHADMINOPTION)。
connectdog/wangwang
2tofoxwithadminoption;
我们知道狗和猪不相容,因为在十二生肖排位中,狗黑了小猪“一刀“,为了补自己的过失狗狗要把自己的权限给小猪一些,但是不允许小猪将这些权限授予其它用户。
2topig;
为了我们管理权限方便,这时我们需要查看一下所授予的权限和用户是否正确。
connectsystem/mcl
select*
2fromdba_sys_privs
3wheregranteein('
'
DOG'
FOX'
PIG'
);
DOGCREATEVIEWYES
DOGCREATETABLEYES
DOGCREATESESSIONYES
DOGSELECTANYTABLEYES
FOXCREATEVIEWYES
FOXCREATETABLEYES
FOXCREATESESSIONYES
FOXSELECTANYTABLEYES
PIGCREATEVIEWNO
PIGCREATETABLENO
PIGCREATESESSIONNO
PIGSELECTANYTABLENO
已选择16行。
回收系统权限:
Revoke{系统权限|角色名},[,{系统权限|角色名}]
From{用户名|角色名|PUBLIC}[,{用户名|角色名|PUBLIC}]
revokecreateviewfromcat;
撤销成功。
我们来查看一下CAT的CREATEVIEW权限是否已经被回收:
select*
3wheregrantee='
我们知道CAT用户把CREATEVIEW授予了DOG,那CAT用户的这个CREATEVIEW权限被收回是否回影响到DOG用户呢?
我们来看看:
3wheregranteein('
已选择12行。
我们看到除CAT大哥以外其它三个用户的系统权限仍然为原来的四个并不受CAT用户系统权限被回收的任何影响。
此时尽管猫大哥已经被降职,但是它的狐朋狗友,连同狐朋狗友的难兄难弟却依然大权在握。
即系统权限的回收不是级连的。
只有DBA用户可以查看其它用户权限,而当前用户只能查看自己的权限:
connectfox/loveyou
select*fromsession_privs;
PRIVILEGE
----------------------------------------
CREATESESSION
CREATETABLE
SELECTANYTABLE
CREATEVIEW
这时FOX用户想偷偷的把CAT用户的CREATESESSION权限驳回,我们看看它能不能够做到:
revokecreatesessionfromcat;
这是我们发现FOX确定做到了,那让我们来检验一下:
已选择14行。
注意:
在赋予用户系统权限时要非常谨慎,特别是使用WITHADMINOPTION子句时。
在赋予用户系统权限时要使用最小化原则,即赋予用户的权限越小越好,只要够用就行,权力一定要牢牢地握在自己人手里,就像咱们的“千古一帝”,康熙大帝一样做到:
“春蚕到死丝方尽”,不死不放权。
这样才能真正有效地控制系统的安全。
对象权限:
EXECUTE
ALTER
SELECT
INSERT
UPDATE
DELETE
INDEX
REFERENCES
让我们来试试对象权限的授权和回收:
GRANT对象的权限|ALL[(列名[,列名…])]
ON对象名
TO[用户名|角色名|PUBLIC]
[WITHGRANTOPTION]
其中:
1.对象的权限:
要授予的对象的权限。
2.ALL:
所有对象的权限。
3.列名:
该列上的对象权限(要授予其他用户的)。
4.ON对象名:
该对象上的对象权限将授予其他用户。
5.TO[用户名|角色名]:
指明对象权限要授予谁[某个用户|某个角色]。
6.PUBLIC:
指明对象权限要授予系统的所有用户。
7.WHITHGRANTOPTION:
允许被授予的用户再将这些对象权限授予其他用户。
为了我们以下的实验做些准备工作:
grantcreatesessiontocat;
revokeselectanytable
2fromcat,dog,pig,fox;
conn/assysdba
grantexecuteondbms_space_admintosystem;
2fromdba_tab_privs
3whereprivilegelike'
EX%'
4andtable_namelike'
DBMS_SPACE_ADMIN%'
GRANTEEOWNERTABLE_NAMEGRANTOR
-------------------------------------------------------------------------------------------------
SYSTEMSYSDBMS_SPACE_ADMINSYS
connectscott/tiger
grantupdate(sal)onemptocat;
grantupdate(job)
2onemptocat
3withgrantoption;
select*fromuser_col_privs_made;
GRANTEETABLE_NAMECOLUMN_NAMGRANTORPRIVILEGEGRA
------------------------------------------------------------------------------------------------
CATEMPSALSCOTTUPDATEN
CATEMPJOBSCOTTUPDATEY
grantupdate(job)onscott.emp
2topig,dog
系统显示表明:
授权语句已经成功地执行,这是因为SCOTT用户在为CAT用户授权的语句中使用了WITHGRANTOPTION子句。
grantupdate(sal)onscott.emptopig;
grantupdate(sal)onscott.emptopig
ORA-01031:
权限不足
授权语句没有被成功地执行,系统的错误信息显示为:
“没有足够的权限”,这是因为SCOTT用户在将EMP表的SAL列的UPDATE(修改)权限授予CAT用户时没有使用WITHGRANTOPTION子句。
grantupdate(job)onscott.emptofox;
授权语句已经成功地执行,这是因为CAT用户在为DOG用户授权的语句中也使用了WITHGRANTOPTION子句。
以上的例子证明“WITHGRANTOPTION子句允许被授予的用户再将这些对象权限授予其他用户“。
connectscott/tiger
colcolumn_namefora10
colgranteefora10
colprivilegefora10;
select*fromuser_col_privs_made;
---------------------------------------------------------------------------------------------
CATEMPSALSCOTTUPDATENO
CATEMPJOBSCOTTUPDATEYES
PIGEMPJOBCATUPDATEYES
DOGEMPJOBCATUPDATEYES
FOXEMPJOBDOGUPDATENO
接下来让我们收回权限:
revokeupdateonempfromcat;
2fromuser_col_privs_made;
未选定行
查询显示结果表明:
CAT用户以及它的狐朋狗友和猪老弟的对象权限都不见了。
这说明对象权限的回收是级连的。
由于对象权限回收的这种特性,可能WITHGRANTOPTION子句的使用要比WITHADMINOPTION子句的使用对系统安全的冲击小一些。
在GRANT语句中使用权WITHGRANTOPTION选项还是非常谨慎。
因为如果使用不当,可能会造成对该对象安全控制的失控。
在赋予用户对象权限时还是要使用最小化原则,这样才不至于在系统中留下任何安全的漏洞。