VPD許可權控制

2021-08-18 13:56:50 字數 2443 閱讀 2743

vpd全稱virtual private database,這個技術提供了對資料庫資訊的細粒度訪問控制。關於vpd的更多描述性資訊可通過oracle官方文件獲得:

通過乙個具體案例,體驗一下vpd帶給我們的功能特點。

1.初始化環境

構造表t,其中包含乙個欄位x。

sec@ora10g> create table t (x number);

sec@ora10g> insert into t values (1);

sec@ora10g> insert into t values (2);

sec@ora10g> insert into t values (10001);

sec@ora10g> insert into t values (10002);

sec@ora10g> commit;

sec@ora10g> select * from t;

x----------12

10001

10002

2.問題場景描述

禁止查詢t表中x列值大於10000的資料。

3.實現方法一:使用檢視

這種方法可能是大家都很容易想到的,實現起來相對簡單。但無法真正做到禁止訪問基礎表。

sec@ora10g> create view v_t as select * from t where x <=10000;

view created.

sec@ora10g> select * from v_t;

x----------12

此時如果直接查詢基礎表t,仍然可以獲得說有的資料。

sec@ora10g> select * from t;

x----------12

10001

10002

4.實現方法二:使用vpd

1)建立vpd需要的函式,這裡給出的名字是f_limited_query_t。

create or replace function f_limited_query_t (s_schema in varchar2,

s_object in varchar2)

return varchar2

asbegin

return 'x <= 10000';

end;

/function created.

2)將函式與需要保護的表進行關聯

begin

dbms_rls.add_policy (object_schema   => 'sec',

object_name     => 't',

policy_name     => 'policy_limited_query_t',

function_schema => 'sec',

policy_function => 'f_limited_query_t');

end;

/pl/sql procedure successfully completed.

3)驗證vpd效果

此時在sec使用者下直接查詢t表,獲得的也僅僅是我們要求的資料範圍。

sec@ora10g> select * from t;

x----------12

即便是連線到其他使用者依然無法獲得sec使用者下t表隱藏掉的資料。

sec@ora10g> conn secooler/secooler

connected.

secooler@ora10g> select * from sec.t;

x----------12

只有sys使用者有權檢視到sec使用者下t表的全部資料

sec@ora10g> conn / as sysdba

connected.

sys@ora10g> select * from sec.t;

x----------12

10001

10002

4)去掉vpd對資料訪問的限制

我們可以使用dbms_rls.drop_policy來完成這個任務。

secooler@ora10g> conn sec/sec

connected.

begin

dbms_rls.drop_policy (object_schema   => 'sec',

object_name     => 't',

policy_name     => 'policy_limited_query_t');

end;

/pl/sql procedure successfully completed.

此時可獲得t表的全部資料

sec@ora10g> select * from t;

x----------12

10001

10002

5.小結

這裡給出的是vpd最簡單的一種使用方法,在實際應用中需求可能會比較複雜,但通過分析並仔細定製,vpd都可以勝任。

VPD技術粗解

vpd技術,dba policies這張表中儲存了啟用vpd技術的表 select from dba policies where object name upper pa projects 給某張表啟用vpd 1.create data create table t x number insert...

elk許可權控制 Kibana訪問許可權控制

elk平台搭建完成後,由於kibana的服務也是暴露在外網,且預設是沒有訪問限制的 外部所有人都可以訪問到 這明顯不是我們想要的,所以我們需要利用nginx接管所有kibana請求,通過nginx配置將kibana的訪問加上許可權控制,簡單常見的方式可以使用如下三種方式 方案一 利用nginx使用者...

spring 許可權控制

首先第一件事情是你需要增加下面的過濾器宣告到你的web.xml 檔案 springsecurityfilterchain org.springframework.web.filter.delegatingfilterproxy springsecurityfilterchain 這提供了乙個鉤子到s...