Oracle數(shù)據(jù)庫(kù)對(duì)user的相關(guān)訪問(wèn)控制實(shí)操
以下的文章主要是講述Oracle數(shù)據(jù)庫(kù)對(duì)user的相關(guān)訪問(wèn)控制的實(shí)際操作,以下文章介紹的是在introduction to Oracle 9i SQL student guide的第二卷中看見(jiàn)的,寫(xiě)完才發(fā)現(xiàn)之前有過(guò)相關(guān)、甚至更全面的介紹了。但還是發(fā)布吧。
1、控制user的訪問(wèn)
主要有以下幾方面:
控制database的訪問(wèn)
控制database中特定的對(duì)象的訪問(wèn)
授予一定的訪問(wèn)Oracle 數(shù)據(jù)字典的權(quán)限
為database對(duì)象創(chuàng)建synonym
database的安全性可以被定義為兩類:系統(tǒng)的安全和data的安全。前者包括在system 級(jí)別的database的訪問(wèn)與使用,如username和password、給user分配的磁盤(pán)空間以及user可執(zhí)行的系統(tǒng)操作。后者包括對(duì)database對(duì)象的訪問(wèn)及操作的安全控制。
1)系統(tǒng)權(quán)限
主要有:CREATE USER, DROP USER, DROP ANY TABLE, BACKUP ANY TABLE, SELECT ANY TABLE, CREATE ANY TABLE
2)創(chuàng)建users
CREATE USER user IDENTIFIED BY password;
3)授予權(quán)限
GRANT privilege [, privilege ...] TO user [, user| role, PUBLIC ...];
對(duì)于應(yīng)用開(kāi)發(fā)者,一般至少會(huì)需要下面的權(quán)限:
CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE VIEW, CREATE PROCEDURE
4)修改user的密碼
ALTER USER user IDENTIFIED BY nowpassword;
5)對(duì)象權(quán)限
GRANT object_priv|ALL [(columns)] ON object TO {user | role | PUBLIC} [WITH GRANT OPTION];
其中,ALL表示所有對(duì)象權(quán)限
2、role
1)role是一組相關(guān)權(quán)限的集合,可以被一起授予user,從而簡(jiǎn)化授權(quán)和收回權(quán)限的操作。一個(gè)user可以被授予多個(gè)roles,一個(gè)role也可以被授予給多個(gè)user。
CREATE ROLE role;
隨后,可以用grant語(yǔ)句給role授權(quán)。PUBLIC表示將對(duì)象權(quán)限授予所有users。
2)給role授予相應(yīng)權(quán)限的操作和上面講的給user授權(quán)是一致的。
3、獲得權(quán)限上授予情況信息的視圖
4、對(duì)象權(quán)限的收回
REVOKE {privilege [, privilege ... ] | ALL} ON object FROM {user [, user ... ] | role | PUBLIC} [CASCADE CONSTRAINTS];
其中,CASCADE CONSTRAINTS子句會(huì)收回所有通過(guò)REFERENCES方法創(chuàng)建的參照完整性約束的權(quán)限。在revoke之后,所有由with grant option進(jìn)行授權(quán)的user的相應(yīng)權(quán)限也會(huì)被收回。
5、database link(可以使本地user訪問(wèn)遠(yuǎn)程database)
database link是一個(gè)指針,定義了一個(gè)Oracle database server與另一個(gè)database server進(jìn)行交互的方法。link 指針實(shí)際是一個(gè)數(shù)據(jù)字典表中的實(shí)體。為了訪問(wèn)link,必須連接包含該數(shù)據(jù)字典實(shí)體的本地database。
database link的最大的優(yōu)點(diǎn)是它允許users訪問(wèn)其他user在遠(yuǎn)程database的objects。
具體創(chuàng)建實(shí)例:
CREATE PUBLIC DATABASE LINK hq.acme.com USING ’sales’;
其中,USING子句指明了遠(yuǎn)程database的service名稱。database link創(chuàng)建之后,就可發(fā)起如下的訪問(wèn):
SELECT FROM fred.emp@HO.ACME.COM;