- 相關(guān)推薦
虛擬專(zhuān)用數據庫概述
虛擬專(zhuān)用數據庫是一項重要技術(shù),使企業(yè)能夠構建托管的、基于 Web 的應用程序。實(shí)際上,許多 Oracle 應用程序本身使用 VPD 實(shí)施數據分隔,包括 Oracle SalesOnline.com 和 Oracle Portal 等程序。下面小編為大家整理了關(guān)于虛擬專(zhuān)用數據庫概述的文章,希望能為你提供幫助:
概述
虛擬專(zhuān)用數據庫 (VPD) 提供了角色和視圖無(wú)法提供的行級訪(fǎng)問(wèn)控制。對于互聯(lián)網(wǎng)訪(fǎng)問(wèn),虛擬專(zhuān)用數據庫可以確保在線(xiàn)銀行的客戶(hù)只能看到他們自己的帳戶(hù)。Web 托管公司可以在同一 Oracle 數據庫中維護多個(gè)公司的數據,但只允許每個(gè)公司查看其自身數據。
在企業(yè)內部,虛擬數據庫可在應用程序部署方面降低擁有成本?梢栽跀祿䦷旆⻊(wù)器一次實(shí)現安全性,而不用在訪(fǎng)問(wèn)數據的每個(gè)應用程序中分別實(shí)現安全性。因為是在數據庫中實(shí)施安全性,所以不管用戶(hù)訪(fǎng)問(wèn)數據的方式如何,安全性較以前更高。訪(fǎng)問(wèn)即席查詢(xún)工具或新報表生成程序的用戶(hù)不再能繞過(guò)安全環(huán)節。虛擬專(zhuān)用數據庫是一項重要技術(shù),使企業(yè)能夠構建托管的、基于 Web 的應用程序。實(shí)際上,許多 Oracle 應用程序本身使用 VPD 實(shí)施數據分隔,包括 Oracle SalesOnline.com 和 Oracle Portal 等程序。
虛擬專(zhuān)用數據庫如何工作
將一個(gè)或多個(gè)安全策略與表或視圖關(guān)聯(lián)后,就可以實(shí)現虛擬專(zhuān)用數據庫。對帶安全策略的表進(jìn)行直接或間接訪(fǎng)問(wèn)時(shí),數據庫將調用一個(gè)實(shí)施該策略的函數。策略函數返回一個(gè)訪(fǎng)問(wèn)條件(WHERE 子句),即謂詞。應用程序將它附加到用戶(hù)的 SQL 語(yǔ)句,從而動(dòng)態(tài)修改用戶(hù)的數據訪(fǎng)問(wèn)權限。
你可以通過(guò)編寫(xiě)一個(gè)存儲過(guò)程將 SQL 謂詞附加到每個(gè) SQL 語(yǔ)句(用于控制該語(yǔ)句的行級別訪(fǎng)問(wèn)權限)來(lái)實(shí)施 VPD。例如,如果 John Doe(他屬于 Department 10)輸入 SELECT * FROM emp 語(yǔ)句,則可以使用 VPD 添加 WHERE DEPT = 10 子句。這樣,您便可以通過(guò)對查詢(xún)進(jìn)行修改
案例說(shuō)明
1. 搭建環(huán)境--創(chuàng )建模式擁有者和相應的用戶(hù),賦予權限
view plaincopy to clipboardprint?
CONNECT sys/password@service AS SYSDBA;
CREATE USER schemaowner IDENTIFIED BY schemaowner
DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT connect, resource TO schemaowner;
CREATE USER user1 IDENTIFIED BY user1
DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT connect, resource TO user1;
CREATE USER user2 IDENTIFIED BY user2
DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT connect, resource TO user2;
GRANT EXECUTE ON DBMS_RLS TO PUBLIC;
CONN schemaowner/schemaowner@service
CREATE TABLE users
(id NUMBER(10) NOT NULL,
ouser VARCHAR2(30) NOT NULL,
first_name VARCHAR2(50) NOT NULL,
last_name VARCHAR2(50) NOT NULL);
CREATE TABLE user_data
(column1 VARCHAR2(50) NOT NULL,
user_id NUMBER(10) NOT NULL);
INSERT INTO users VALUES (1,'USER1','User','One');
INSERT INTO users VALUES (2,'USER2','User','Two');
COMMIT;
GRANT SELECT, INSERT ON user_data TO user1, user2
CONNECT sys/password@service AS SYSDBA;
CREATE USER schemaowner IDENTIFIED BY schemaowner
DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT connect, resource TO schemaowner;
CREATE USER user1 IDENTIFIED BY user1
DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT connect, resource TO user1;
CREATE USER user2 IDENTIFIED BY user2
DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT connect, resource TO user2;
GRANT EXECUTE ON DBMS_RLS TO PUBLIC;
【虛擬專(zhuān)用數據庫概述】相關(guān)文章:
二級Visual FoxPro數據庫程序設計專(zhuān)用教材09-06
婚禮禮儀概述10-21
日語(yǔ)的起源與概述08-06
逆向物流的概述09-26
eda技術(shù)概述07-04
土地估價(jià)概述08-29
通俗唱法概述10-23
土地調查概述08-21
項目管理概述08-14