⑴ 如何設置資料庫的許可權
一、必要性 隨著近年來資料庫技術的深入發展,以Unix平台為代表的Informix Dynamic Server和以NT平台為代表的MS SQL Server得到了廣泛的應用。在一個公共的環境中,存在大量的用戶操作,有資料庫管理員,主要做數據管理維護工作,也有普通用戶,做一定授權下的數據修改和數據查詢。我們知道,每個資料庫伺服器上可建立多個不同類別的資料庫,而每個資料庫中也可以生成多個存儲過程、表、視圖等。如何保證數據的安全可靠,防止非法存取所造成的破壞和數據泄露,如何進行許可權的劃分和設置,這是安全管理的重點,也是資料庫可靠運行的保證。本文以Informix Dynamic Server為例做詳細說明。 二、許可權的劃分 Informix Dynamic Server使用了三級許可權來保證數據的安全性,它們分別是資料庫級許可權、表級許可權和欄位級許可權,具體為: 1.資料庫級許可權 包括Connect、Resource、DBA三種類別,其中: Connect: 最低級,僅允許用戶訪問資料庫中的表和索引,但不能創建和刪除它們; Resource: 建立在Connect之上,允許用戶在資料庫中創建、刪除表和索引; DBA: 即資料庫管理員,擁有資料庫管理的全部許可權,包括訪問資料庫表、創建和刪除索引、修改表結構、授予資料庫許可權給其他用戶等。 2.表/欄位(視圖)級許可權 指允許進行何種具體操作,主要包括: Select: 從表或欄位中檢索信息; Update: 修改指定欄位的值; Insert: 向資料庫表中添加記錄; Delete: 從資料庫表中刪除記錄; Index: 為一個資料庫表創建索引; Alter: 增加、刪除資料庫表中的欄位,或修改欄位的數據類型; All: 以上所有許可權。 三、許可權的設置 Informix Dynamic Server通過一系列SQL控制語句來實施對用戶許可權的設置,使得不同的用戶只能在各自限定的范圍內存取數據。以下命令格式中Grant表示授予許可權,Revoke表示撤消許可權,User-List指用戶名列表,多個用戶以逗號(,)分隔,對大多數資料庫系統而言,PUBLIC代表所有用戶。 1.對於資料庫,其格式為: Revoke { DBA | Resource | Connect } from { PUBLIC | User-List } Revoke { DBA | Resource | Connect } from { PUBLIC | User-List } 預設情況下,建立資料庫的用戶就是資料庫管理員(DBA),除其本身和Informix用戶外,其它用戶不對該資料庫擁有任何許可權,因此也就不能進行任何形式的訪問。資料庫管理員可根據其他用戶的業務分工、操作范圍授予或撤消DBA、Resource、Connect三種不同的許可權。 2.對於表及視圖,其格式為: Revoke TAB-PRI on [ tab_name | view_name ] from { PUBLIC | User-List } Revoke TAB-PRI on [ tab_name | view_name ] from { PUBLIC | User-List } 其中TAB_PRI表示select、update、delete等操作許可權,tab_name、 view_name分別代表資料庫表名和視圖名。 預設情況下,新建的資料庫表和視圖對能夠訪問該資料庫的用戶賦予了除alter外的所有許可權,有時這是比較危險的,比如對普通查詢用戶,應該有針對性地對許可權重新定義。此外,對一些重要的表或視圖,為防止敏感信息泄露,也應該重新授權。具體做法是:先用Revoke命令撤消原來所有的許可權,再用Grant授予新的許可權。 3.對於欄位: 欄位級許可權的授予和撤消同表級的命令方式基本一致,所不同的僅在於必須把賦予許可權的欄位名列在操作許可權如select、insert、update等之後,通過這樣細化可以實施更有效的數據保護。 4.對於存儲過程: 存儲過程由SQL語句編寫,存放於資料庫中,常與觸發器配合,可以對數據進行批量處理,使用非常方便。但如果授權不嚴格,將導致非法修改現有數據。其許可權設置格式為: Grant Execute on proc_name to { PUBLIC | User-List }; Revoke Execute on proc_name from { PUBLIC | User-List } 其中proc_name表示存儲過程名。 四、角色(role)的使用 在資料庫用戶的管理中,我們可以根據用戶對資料庫數據的需要情況把用戶分為幾組,每一組用戶可以作為一個"角色",每個用戶就是角色的成員。通過使用角色,資料庫系統更容易進行安全性管理,因為一旦某個用戶屬於某一個角色,對許可權的授予和撤消只需針對角色便可。具體使用方法為: 1.創建角色: Create Role role_name1 其中role_name1表示角色名。 2.劃分用戶角色: 即將相關用戶加入到角色中使之成為角色的成員。 Grant role_name1 to { User-List | Role_List } 其中Role_List表示角色列表,因為一個角色可以是另外一個或一組角色的成員。 3.授權角色許可權: 同授權用戶許可權的方法相同,但只能對表級和欄位級許可權有效,不能授予資料庫級許可權給一個角色。 4.激活角色: 執行以下語句,使以上定義的角色成為可用狀態: Set Role role_name1 五、結束語 以Internet技術為代表的網路業務的迅猛增長為資料庫應用開辟了新的發展空間,同時也對資料庫的安全性管理提出了更高的要求,網路的開放性導致非法存取常有發生,因而深刻領會和理解資料庫許可權的具體設置方法,結合自身實際應用,制定出一套完整的安全保護策略具有重要意義。Informix Dynamic Server對以上控制語句的使用除角色外,嚴格執行SQL ANSI 標准,因此對建立在NT平台上的MS SQL Server同樣有效 &.мo.О旒 2007-12-19 17:29 您覺得這個答案好不好? 好(0)不好(0) 相關問題 資料庫的訪問許可權都有什麼 怎麼修改資料庫的用戶許可權! 資料庫是如何安裝和設置的? 資料庫連接設置 固定伺服器角色、固定資料庫角色各有哪幾類?有什麼許可權? 標簽:資料庫 許可權 設置 其他答案 如果是ORACLE資料庫,這樣可以分配許可權: GRANT SELECT ON SALARIES TO JACK 給SALARIES中JACK用戶的Connect角色賦予SELECT許可權 例如:創建一張表和兩個用戶分給他們不同的角色和許可權 CREATE TABLE SALARIES ( 2 NAME CHAR(30), 3 SALARY NUMBER, 4 AGE NUMBER); create user Jack identified by Jack create user Jill identified by Jill grant connect to Jack grant resource to Jill JILL 的角色為Resource你允許他對表進行選擇和插入或嚴格一些允許JILL修改SALARIES表中SALARY欄位的值 GRANT SELECT, UPDATE(SALARY) ON SALARIES TO Jill 執行:UPDATE Bryan.SALARIES SET SALARY = 35000 WHERE NAME = 'JOHN' 可以進行所有許可權范圍內的更新工作 使用表時的限制:SELECT * FROM Bryan.SALARIES 對表使用用戶名來加以標識
⑵ 2、用戶許可權管理,資料庫表設計
網上資料說許可權設計 = 功能許可權 + 數據許可權,我認為還是很有道理的。之前項目中只涉及到功能許可權,沒有數據許可權,原因是最開始設計時,數據已經綁定在特定的用戶下了,而且涉及到的表數量很少,不需要單獨考慮數據許可權的問題。
許可權管理,最細致的許可權管理有 用戶,用戶組,角色,許可權,功能。根據不同的需求適當選擇,如 用戶量過大,每個人都授權和麻煩,就引入用戶組,對用戶組賦予許可權。功能上也根據業務不同做適當的擴展。由於如用戶許可權之前存在多對多關系,需要引入中間表。
本系統設計如下:
數據量很小,功能也不復雜,所以只有用戶,角色,許可權(功能)及產生的中間表。
表中的數據都是提前填的,用戶登陸,查ermroleuser表,獲取角色,查ermrolefunction表,獲取功能,再查ermfunction表,返回該用戶的功能的中文,在頁面上展示。
功能許可權詳細設計請參考,本項目也是受此啟發:
http://blog.csdn.net/painsonline/article/details/7183613/
需求:給一個原來沒有許可權的數據配置系統加上登錄,許可權功能,不同角色查同一張表返回結果不同。
思路:所謂數據許可權,關注點在於實體屬性值、條件、允許值,用戶登錄後,查詢該用戶的查詢條件,根據條件獲取數據即可。詳細表結構設計可以參考: https://zhuanlan.hu.com/p/31339794
具體介紹一下每個欄位含義:
(1)主鍵 id;
(2)acl_id 映射許可權點表主鍵,代表每行記錄是針對哪個許可權點的;
(3)status 代表當前這條配置是否有效,方便臨時激活與禁用;
(4)param 代表需要校驗的參數名,允許一個請求有多個參數參與數據校驗;如果參數復雜,比如包含對象,定義的參數可能為a.b.c 這種多級的形式,建議不要太復雜
(5)operation 代表數據攔截的規則,使用數字代表是等於、大於、小於、大於等於、小於等於、包含、介於之間等,可以根據自己需要增加或減少支持的攔截規則
(6)value1 和 value2 用來和param、operation組成一個關系表達式,比如:1<=a<2
next_param_op 欄位根據需要使用,如果一個許可權點支持多條數據規則時,連接兩個規則之間的操作,|| 還是 &&
(7)seq 欄位用於某個許可權點包含多條數據許可權規則時的順序
假設有這么一條數據,那麼他的含義是:id為1(acl_id)的許可權點,配置了一條有效(status=1)的數據規則,規則是:傳入參數id(param)的值要大於(operation)10(value1)
這種設計很細致了,當然我的項目沒有那麼復雜,所以最終沒有採用這個。
http://www.cnblogs.com/jeffwoot/archive/2008/12/23/1359591.html 講述了數據許可權設計的演化過程。
本系統跟許可權相關的表結構如下:
⑶ 如何設置資料庫的許可權
建議通過phpMyAdmin
來設置資料庫用戶的許可權。phpMyAdmin是一個以PHP為基礎,以Web-Base方式架構在網站主機上的MySQL的資料庫管理工具,讓管理者可用Web介面管理MySQL資料庫。
一、首先您需要在伺服器上安裝配置
phpMyAdmin。
安裝比較復雜,詳見http://faq.comsenz.com/viewnews-484
二、創建用戶(如之前已經創建好用戶,可以省略這一步)
點擊「添加新用戶」這個連接,添加一個新的資料庫用戶名;
三、許可權設置
編輯剛剛創建的用戶的許可權(如下圖所示)
四、重新載入授權表
修改完用戶許可權以後需要回到
phpMyAdmin
的首頁,重新載入一下授權(如下圖)即可。
⑷ 資料庫的許可權管理
超級管理員可以對資料庫增刪改查,可以添加登錄帳號,可以給用戶分配許可權。
普通用戶操作資料庫的許可權是由超級管理員來分配的,