資料庫複習5——安全性,資料庫複習安全性

來源:互聯網
上載者:User

資料庫複習5——安全性,資料庫複習安全性
資料庫複習CH7 安全性7.1 資料庫安全性介紹

如果說完整性是針對授權使用者的資料庫保護措施,那麼安全性就是針對非授權使用者的資料庫保護措施

安全性問題涉及的層面很多,非法使用者可以從以下各層面對資料庫的竊取或篡改:

層面 竊取或篡改行為 應對措施
資料庫系統 擷取進階使用者資料庫許可權 身分識別驗證,許可權和可擷取資料對等
作業系統 擷取作業系統root許可權想幹啥就能幹啥,不僅僅限於對資料庫的操作了 提升作業系統安全層級
網路 通過網路竊聽和身份偽裝也能竊取線上機密資料 身分識別驗證和加密傳輸
物理 物理上竊取和破壞存放裝置 機柜上鎖和其他安全防護,備份措施
7.2 許可權管理

一般資料庫安全性管理從三個角度入手:

  • 伺服器OS登陸身分識別驗證
  • 資料庫DBMS登陸身分識別驗證
  • 資料庫DBMS許可權管理

許可權管理屬於自訂式(Discretionary)的存取控制,還有一種機制是強制(Mandatory)存取控制(從安全模型、資料對象標籤等角度)

我們主要討論資料庫的許可權管理,不難想到,資料庫有以下一些許可權:

  • 讀資料許可權
  • 插入資料許可權
  • 修改資料許可權
  • 刪除資料許可權
  • 建立刪除索引許可權
  • 關聯建立許可權
  • 關係修改許可權
  • 關係刪除許可權
  • 等等

前面提到的視圖算是一種許可權管理機制(使用者訪問符合授權的視圖),除此之外用授權圖來表示許可權管理等級也是常用方法(使用者和DBA均參與,略)

7.3 SQL安全性

概念性的部分結束,下面進入複習基礎的SQL資料庫安全管理操作

(1)授權

SQL基本授權語句的文法如下,執行授權語句的使用者必須已經擷取相應操作的授權權力才能授權(DBA有所有權力):

grant <privilege list> on <relation name or view name> to <user list>;

包括了:

  • select
  • insert
  • update
  • delete
  • references,即外鍵聲明許可權
  • usage,允許使用特殊的域(某些自訂網域?)
  • all privileges,即所有可能的許可權
  • with grant option(尾碼),即對某操作的授權權力

可以是以下三種格式:

  • user-id:使用者唯一標識編號
  • public:所有有效使用者
  • role:角色

角色(Role)是SQL-99中引入的概念,它用於使用者組別許可權管理許可權層次管理(by the way,這兩個是根據我理解自己造的詞)

我們先看一個role分配許可權的例子:

create role worker;create role manager;grant select on Staff_Account to worker;grant update, insert, delete on Staff_Account to manager;grant worker to manager;grant worker to U1, U2, U3;grant manager to U0;

create role worker;create role manager;建立普通員工和經理兩個角色,接著授予普通員工在表Staff_Account上的select許可權,然後授予經理在表Staff_Account上的update、insert和delete許可權

接下來grant worker to manager;是角色間的授權,也就是把worker的所有權力都賦予manager,然後最後授予U1、U2、U3普通員工的角色以及授予U0經理的角色(即賦予他們相應角色的權利)

那麼上例中,

使用者組別許可權管理是指把現實身份相同的U1、U2、U3分成一組,直接分配給他們worker的權力。那麼如果新來一個普通員工U4就不必再去思考賦予給他什麼權力而是直接授予他worker的身份即可。涉及多個表的不同的許可權分配可能會很複雜,我們只用對同一個組別的統一的身份授權,再去系統管理使用者身份即可管理複雜的許可權分配。而許可權層次管理是利用使用者現實身份的層次關係,藉助面對對象設計中繼承的思想來劃分許可權的層次,讓許可權層次清晰分明的管理方法。具體到上例來說就是經理也是員工,只是是特殊身份的員工,那麼manager身份的人可以繼承worker身份已經分配的權力。許可權層次管理的好處在於讓我們對待manager角色時只需要考慮他的特殊許可權即可。

另外需要注意的是,授予關於視圖的許可權並不意味著授予其基本表的響應許可權

(2)取消授權

SQL取消授權的基礎文法是:

revoke <privilege list> on <relation name or view name> from <user list> [restrict|cascade];

和和上小節定義一致,而restrict(限制)和cascade(級聯)尾碼的含義和我們在學習外鍵時的含義相同:restrict就是不向後傳播,cascade就是說使用者X授予Y許可權A,一旦revoke了X的A許可權那麼Y的A許可權也被取消

(3)SQL許可權管理的局限性

SQL的許可權管理有自己的缺陷,其中主要有:

  • 許可權的粒度不夠細化,即無法細緻到某個關係中某個元組的許可權:比如學生只能查看成績表中自己的成績,這個需求SQL的許可權管理就無法很好的滿足
  • 某一個應用的所有端系統使用者都映射到同一個資料庫使用者,即角色劃分很難根據使用者定製
7.4 其他安全管理措施

還有一個常見的資料庫安全管理措施叫做審計跟蹤(Audit Trail),即DBMS在特殊檔案或資料庫中記錄每個使用者的具體操作,那麼DBA可以查看記錄是否越權等,在資料庫恢複中我們也經常使用審計跟蹤的手段(見後續章節)

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.