999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于虛擬專用數據庫的高效數據訪問權限控制

2017-06-11 14:40:38黃杰生羅鵬韓早強
科技風 2017年1期

黃杰生 羅鵬 韓早強

摘 要:虛擬專用數據庫(VPD)是Oracle推出的細粒度數據訪問權限控制技術,可在數據庫端一次性實現數據安全配置,無需在各應用系統中分別實現權限配置與訪問控制,可有效降低系統開發部署成本,提高開發效率與數據安全性。本文介紹了VPD技術原理,并給出如何利用VPD技術進行數據訪問權限動態控制的應用實例。

關鍵詞:虛擬專用數據庫;VPD;訪問控制;權限配置

權限配置與訪問控制是每個應用系統的核心功能,關系到數據的安全和完整,如果配置控制失當,會造成數據泄漏和丟失。

目前常規做法是由應用系統在業務代碼層面實現權限配置與訪問控制功能,但這種做法需要人工實現大量編碼與配置工作,可擴展性差,每當規則發生變化時都要修改代碼或配置并重新進行測試,出錯幾率高,效率低下。特別是多個應用系統使用同一個業務數據庫并且遵循相同的訪問控制規則時,更會大幅增加開發部署成本。

因此,我們需要引入一種配置便捷、擴展靈活、能夠支持細粒度訪問控制的安全策略技術。Oracle虛擬專用數據庫(VPD)提供了一種很好的解決方案。

1 VPD工作原理

在數據庫中將數據表或視圖與一個或多個安全策略綁定后,就可以建立VPD。當客戶端對數據庫中已綁定安全策略的表或視圖進行訪問時,將觸發調用一個實現具體安全策略的函數,該策略函數將返回一個“謂詞”(即用于過濾數據的WHERE條件子句)。數據庫將此謂詞自動附加到客戶端所發出的原始SQL 語句后,從而對用戶的數據訪問權限實現動態控制。

開發人員可以編寫更為復雜的存儲過程,將SQL謂詞附加至每個SQL語句,在行級別的粒度控制數據訪問權限。例如,如果Student_1(屬于Class 1)輸入 SELECT * FROM STUDENTS語句,則可以使用 VPD 自動添加 WHERE CLASS=1的子句,這樣便可以通過對原始查詢語句進行自動修改來控制對某些行的數據訪問。

由于是在數據庫層面實施安全策略,因此客戶端無論以何種方式(如通過程序代碼、報表生成工具或其他數據庫客戶端工具)訪問數據,VPD都能確保強制實施一致的訪問控制安全策略。使用 VPD,銀行系統可以確保客戶只能訪問自己的帳戶信息,通信運營商可以安全地隔離客戶記錄,組織結構復雜的應用系統可以支持復雜的人員數據訪問規則。

除了基礎的靜態安全策略(即策略函數所生成的SQL謂詞固定不變,如前所述的WHERE CLASS=1),還可結合數據庫的應用程序上下文功能,實現動態安全策略。即使用數據庫的create context指令,創建應用程序上下文區域,每個客戶端登錄數據庫并創建會話后,可以在上下文區域內自定義每個會話獨有的屬性,同一個策略函數可利用這些屬性進行動態拼接,為不同的會話生成不同的SQL謂詞,從而實現更靈活的訪問權限控制。

VPD安全策略配置主要由DBMS_RLS過程包中的存儲過程實現,主要過程分類與作用如下:

1)個體安全策略管理:ADD_POLICY、DROP_POLICY、ENABLE_POLICY、REFRESH_POLICY等過程;

2)分組安全策略管理:CREATE_POLICY_GROUP、DELETE_POLICY

_GROUP、ADD_GROUPED_POLICY、DROP_GROUPED_POLICY等過程;

3)應用程序上下文管理:ADD_POLICY_CONTEXT、DROP_POLICY

_CONTEXT等過程。

2 基于上下文相關的VPD實現

以下步驟給出如何實現基于上下文相關的VPD實例。

2.1 創建VPD策略管理員并授權

GRANT CREATE SESSION, CREATE ANY CONTEXT, CREATE PROCEDURE, CREATE TRIGGER, ADMINISTER DATABASE TRIGGER TO vpd_admin;

GRANT EXECUTE ON DBMS_SESSION TO vpd_admin;

GRANT EXECUTE ON DBMS_RLS TO vpd_admin;

2.2 創建基于會話的應用程序上下文(以VPD_ADMIN用戶登錄)

CREATE OR REPLACE CONTEXT vpd_ctx USING vpd_ctx_pkg;

以上語句創建了名為vpd_ctx的應用程序上下文,在會話期間為用戶建立自定義屬性的程序包為vpd_ctx_pkg。在登錄觸發器中可調用包中的過程設置自定義屬性,例如以下語句:

//創建登錄觸發器

CREATE TRIGGER set_app_ctx_trig AFTER LOGON ON DATABASE

BEGIN vpd_admin.app_ctx_pkg.set_custnum;END;

// vpd_admin.app_ctx_pkg.set_custnum過程核心代碼

SELECT cust_no INTO custnum FROM SCOTT.CUSTOMERS WHERE cust_id=SYS_CONTEXT('USERENV', 'SESSION_USER');

DBMS_SESSION.SET_CONTEXT('app_ctx', 'cust_no', custnum);

因為上下文app_ctx只綁定到app_ctx_pkg,因此其他過程不能改變會話屬性,可以確保在連接到數據庫后任何其他進程都不能改變安全的應用程序上下文。

2.3 創建策略函數

CREATE OR REPLACE FUNCTION get_cust_info(schema_p IN VARCHAR2,table_p IN VARCHAR2) RETURN VARCHAR2 AS

cust_info_pred VARCHAR2 (400);

BEGIN cust_info_pred := 'cust_no = SYS_CONTEXT(''app_ctx'', ''cust_no'')'; RETURN cust_info_pred;

END;

以上策略函數根據應用程序上下文中的屬性動態生成SQL謂詞,只獲取與當前登錄用戶相關的數據。

2.4 綁定安全策略

使用vpd_admin用戶登錄并執行DBMS_RLS.ADD_POLICY過程,將策略函數與指定的數據表進行綁定,使安全策略生效,代碼如下:

BEGIN

DBMS_RLS.ADD_POLICY (object_schema => 'customers', object_name => 'custs_tab', policy_name => 'custs_policy',

function_schema => 'vpd_admin', policy_function => 'get_cust_info', statement_types => 'select');

END;

2.5 效果測試

分別以user1和user2用戶登錄,執行相同的查詢語句select * from custs_tab,每個用戶將只能看到自己的客戶資料。

3 結語

虛擬專用數據庫(VPD)技術提供了角色和視圖模式無法提供的行級訪問控制,數據與系統托管公司可以在同一數據庫中維護多個公司的數據,但只允許各公司查看自身數據。VPD可大幅降低應用程序的開發部署成本,可以在數據庫端一次實現安全性,而無需在訪問數據的各個應用系統中分別實現權限配置和訪問控制。另外,由于VPD在數據庫中實施安全策略,所以不管以何種客戶端方式訪問數據,都不能繞過安全環節,安全性更高。

虛擬專用數據庫是一項重要的技術,同時也是基礎設施資源虛擬化的一種成功應用,許多Oracle應用程序本身也是使用 VPD實現數據分隔的(如Oracle SalesOnline.com、Oracle Portal等)。VPD使企業能夠以較低的成本、較高的效率構建業務系統,具有十分廣闊的應用空間,值得企業應用開發人員學習和使用。

參考文獻:

[1] Oracle[] Database Security Guide.

[2] Oracle[] Database Advanced Application Developer's Guide.

[3] Oracle[] Database PL/SQL Language Reference.

[4] Oracle[] Database SQL Language Reference.

作者簡介:

黃杰生,現就職于廣州奧格智能科技有限公司,從事軟件開發工作;

羅鵬,現就職于廣州奧格智能科技有限公司,從事軟件開發工作;

韓早強,現就職于廣州奧格智能科技有限公司,從事軟件開發工作。

主站蜘蛛池模板: 国产精品毛片一区| 97超碰精品成人国产| 国产成人精品男人的天堂下载| 永久毛片在线播| 国产主播喷水| 一级在线毛片| 亚洲中文无码av永久伊人| 91精品国产自产91精品资源| 亚洲综合极品香蕉久久网| 欧美一级高清片欧美国产欧美| 精品国产成人高清在线| 日韩第九页| 欧美 国产 人人视频| 啊嗯不日本网站| 国产18在线播放| 国产高清免费午夜在线视频| 久热精品免费| 国产欧美精品午夜在线播放| 国产成人亚洲无码淙合青草| 亚洲欧美综合在线观看| 米奇精品一区二区三区| 欧类av怡春院| 欧美综合成人| 午夜成人在线视频| 日韩美毛片| 亚洲A∨无码精品午夜在线观看| 538精品在线观看| 噜噜噜综合亚洲| 91亚洲国产视频| 久久福利网| 精品久久久久无码| 亚洲国产中文在线二区三区免| 996免费视频国产在线播放| 92精品国产自产在线观看| 蜜桃视频一区二区| 91色综合综合热五月激情| 午夜视频在线观看区二区| 国产最爽的乱婬视频国语对白 | 久久国产毛片| 在线看AV天堂| 国产SUV精品一区二区| 久久人体视频| 无码'专区第一页| 无码不卡的中文字幕视频| 欧美狠狠干| 亚洲综合片| 欧美午夜视频在线| 色男人的天堂久久综合| 国产凹凸一区在线观看视频| 国产在线精品人成导航| 香蕉视频在线精品| 成人一级黄色毛片| 国产永久在线视频| 亚洲综合久久成人AV| 亚洲成人在线网| 国产三级国产精品国产普男人 | 成人伊人色一区二区三区| 在线日韩日本国产亚洲| 中文字幕在线看视频一区二区三区| 国产麻豆精品久久一二三| 午夜性刺激在线观看免费| 欧美a在线视频| 色婷婷色丁香| 国产拍揄自揄精品视频网站| 伊人无码视屏| 国产精品亚洲精品爽爽| 欧美不卡视频在线| 国产精品香蕉在线| 国产一二三区在线| 亚洲欧美综合精品久久成人网| 国产毛片不卡| 亚洲欧美自拍一区| 亚洲美女视频一区| 伊人色在线视频| 国产三级成人| 一级片一区| 国产黄网永久免费| 永久天堂网Av| 欧美区一区| 99久久国产综合精品女同 | 国产精品偷伦在线观看| 国产色图在线观看|