資料安全之許可權控制
災難描述:
生產環境某一個產品庫被研發人員truncate一張非常重要的表,研發總監知道後非常生氣,要求嚴格控制研發人員的許可權問題,要求每個人用自己的使用者名稱稱運算元據庫,審計每個人的操作許可權,將每個研發人員對生產庫的操作繼續記錄。
案例分析:
在這種情況下,需要嚴格控制研發人員的DDL 許可權,這種情況下,需要限制使用者對資料庫進行DDL,DML某些操作。如果單純的進行限制,可以通過觸發器來進行控制,語句如下:
CREATE OR REPLACE TRIGGER DDL_RESTRICT
BEFORE DROP OR CREATE
OR TRUNCATE OR ALTER ON DATABASE
DECLARE
BEGIN
IF ORA_SYSEVENT() IN ('DROP', 'CREATE', 'ALTER','TRUNCATE')
AND ORA_DICT_OBJ_OWNER() IN
('BUPTDREAM' AND
ORA_DICT_OBJ_TYPE IN ('TABLE') AND
ORA_DICT_OBJ_NAME() NOT LIKE
'%a%' AND
ORA_DICT_OBJ_NAME() NOT LIKE
'%b%' AND
ORA_DICT_OBJ_NAME() NOT LIKE
'%c%' THEN
RAISE_APPLICATION_ERROR(NUM => -20000,
MSG => '禁止 ' || ORA_SYSEVENT() || ' ' ||
ORA_DICT_OBJ_OWNER() || '使用者下的' ||
ORA_DICT_OBJ_NAME() || '表,請與DBA聯絡');
END IF;
END;
通過觸發器可以實現控制開發人員對生產庫的DDL操作,如果想要禁止delete的DML操作,也可以用觸發器來實現。
在Oracle中對使用者的管理是使用許可權的方式來管理的,也就是說,如果直接將生產庫的許可權給某個使用者,但是我們必須要已授權的表的名稱前鍵入該表所有者的名稱,所以這比較麻煩。
Oracle資料庫中同義詞是資料庫方案物件的一個別名,經常用於簡化物件訪問和提高物件訪問的安全性。在使用同義詞時,Oracle資料庫將它翻譯成對應方案物件的名字。與檢視類似,同義詞並不佔用實際儲存空間,只有在資料字典中儲存了同義詞的定義。在Oracle資料庫中的大部分資料庫物件,如表、檢視、同義詞、序列、儲存過程、包等等,資料庫管理員都可以根據實際情況為他們定義同義詞。
批量建立同義詞的語句如下:
select ' create public synonym ' || OBJECT_NAME ||
' for CMAPP_PRODUCTION.' || OBJECT_NAME || ';'
from user_objects
where object_type in
('TABLE', 'VIEW', 'PROCEDURE', 'TRIGGER', 'FUNCTION', 'PACKAGE');
同義詞賦權的語句如下:
SELECT 'grant select,insert,update,delete on ' ||
OBJECT_NAME || ' to buptdream;'
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'TABLE';
SELECT 'grant select,insert,update,delete on ' || OBJECT_NAME ||
' to buptdream;'
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'VIEW';
SELECT 'grant EXECUTE on ' || OBJECT_NAME || ' to buptdream;'
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'PROCEDURE';
SELECT 'grant EXECUTE on ' || OBJECT_NAME || ' to buptdream;'
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'FUNCTION';
SELECT 'grant select on ' || OBJECT_NAME || ' to buptdream;'
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'SEQUENCE';
通過上述方法,我們可以控制研發人員對生產庫的操作,在這個過程中,我們可以採用審計方式記錄下每個操作,一旦許可權被控制,很多資料庫的風險被大大降低。
在資料庫開發過程中,如果研發人員很多,進行相關的許可權管理是非常重要的事情,可以大大減少資料庫誤操作的安全問題,觸發器是一個方法,另外通過同義詞,可以為每個使用者單獨建立使用者,提高研發人員運算元據庫時的專心程度,防止誤操作的發生。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10701850/viewspace-760877/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫安全之許可權與角色資料庫
- 資料分析的許可權控制
- 資料許可權
- 怎麼控制報表的資料許可權
- 降魔篇之springmvc許可權控制SpringMVC
- Elasticsearch 許可權控制Elasticsearch
- 許可權之選單許可權
- 許可權系統:一文搞懂功能許可權、資料許可權
- Oracle 資料庫安全許可權配置標準Oracle資料庫
- 如何用 Vue 實現前端許可權控制(路由許可權 + 檢視許可權 + 請求許可權)Vue前端路由
- Java安全之Filter許可權繞過JavaFilter
- Spring Boot 之 RESRful API 許可權控制Spring BootAPI
- Linux許可權控制Linux
- Appfuse:許可權控制APP
- MySQL之test資料庫預設許可權MySql資料庫
- 報表如何透過引數控制資料許可權
- Oracle資料庫使用者許可權控制 - Role - SynonymOracle資料庫
- 【Struts2】:Interceptor實戰之許可權控制
- MySQL資料庫許可權體系入門(5)---管理資料庫許可權MySql資料庫
- Laravel實現許可權控制Laravel
- mysql 許可權控制筆記MySql筆記
- oracle列級許可權控制Oracle
- Linux的許可權控制Linux
- .NET 程式許可權控制、獲得管理員許可權程式碼
- Linux 許可權管理之目錄許可權限制Linux
- 資料庫的許可權管理資料庫
- 許可權+訂單資料模型模型
- Android安全—許可權模型Android模型
- Oracle 使用者許可權管理與常用許可權資料字典列表Oracle
- MAUI之安卓許可權UI安卓
- 許可權控制及AOP日誌
- Java 訪問許可權控制(6)Java訪問許可權
- vue-router控制路由許可權Vue路由
- 下載許可權控制機制
- Solaris下控制ftp的許可權FTP
- [資料庫]MYSQL之授予/查驗binlog許可權資料庫MySql
- Android 安全架構及許可權控制機制剖析Android架構
- 【專案實踐】一文帶你搞定頁面許可權、按鈕許可權以及資料許可權