DB2安全(一)——概述

水墨胭脂發表於2017-04-14

根據《循序漸進DB2》(牛新莊)第13章內容整理

  DB2中有3種主要的安全機制,可以幫助DBA實現資料庫安全計劃:

  • 身份認證(authentication)
  • 許可權(authorization)
  • 特權(privilege)

提出問題
  就目前接觸過的資料庫來說,大多是在資料庫中新增使用者,比方Oracle的tiger賬戶,MySQL的user表,SQL Server我記得也是資料庫新增賬戶的,那Postgresql是在pg_hba.conf中設定訪問許可權,在資料庫中Create user的,但是DB2有很大的不同哦。

  然後就是哪個使用者可以訪問哪些表,grant這些操作在DB2中又是如何定義的呢?使用者、使用者許可權如何檢視呢?
  遠端登入怎麼設定?怎麼登入?
  帶著這些問題來往下看:

身份認證(authentication)

  身份認證是使用者在嘗試訪問DB2例項或資料庫時遇到的第一道安全閘門。身份認證就是使用安全機制驗證所提供使用者ID和口令的過程。使用者和密碼身份認證由DB2外部的設施管理,比如作業系統、域控制器或者Kerberos安全系統。這和其他資料庫管理系統是不同的,如Oracle、Infomix、Sybase和SQL Server,後者既可以在資料庫本身定義和驗證使用者賬戶,也可以在作業系統中完成(安裝podtgresql是建立的postgres使用者既是作業系統賬戶也是資料庫賬戶)。外部安全性服務對希望訪問DB2伺服器的使用者進行身份認證,DB2外部的安全性軟體負責處理身份認證。當成功校驗了使用者ID和口令後,內部DB2程式接管控制,並確保使用者有權執行所請求的操作。

  DB2是沒有使用者的,DB2所有的使用者都是作業系統使用者,這是由於歷史原因造成的。

  一旦使用者ID和口令作為例項附件或資料庫 連線請求的一部分明確的提供給DB2,DB2就會嘗試使用該外部安全設施驗證使用者ID和口令。
  實際的認證位置由DB2例項引數AUTHENTICATION的值決定。有不同的身份認證方案,包括:

  • 讓使用者早DB2伺服器上認證(使用伺服器的安全設施)
  • 在客戶機上認證(允許“單點登入”訪問)
  • 使用Kerbose安全設施認證
  • 使用使用者定義的通用安全服務(Generic Security Service,GSS)外掛認證
    其他的身份認證選項還包括:當使用者名稱和口令以及資料在客戶機和伺服器之間的網路上傳遞時進行加密。為AUTHENTICATION引數選擇的值依賴於具體環境和本地安全策略。
[db2inst1@db22 ~]$ db2 get dbm cfg | grep -i auth
 GSS Plugin for Local Authorization    (LOCAL_GSSPLUGIN) = 
 Server Connection Authentication          (SRVCON_AUTH) = NOT_SPECIFIED
 Database manager authentication        (AUTHENTICATION) = SERVER     --使用伺服器的安全設施
 Alternate authentication           (ALTERNATE_AUTH_ENC) = NOT_SPECIFIED
 Cataloging allowed without authority   (CATALOG_NOAUTH) = NO
 Trusted client authentication          (TRUST_CLNTAUTH) = CLIENT
 Bypass federated authentication            (FED_NOAUTH) = NO

許可權(authorization)

  許可權涉及將DB2角色賦予使用者和/或組。每一種角色具有一定級別的許可權,對特定資料庫和和/或其中的物件執行某些命令。DB2中包括以下7種不同角色或許可權:

  • SYSADM
  • SYSCTRL
  • SYSMAINT
  • SYSMON
  • DBADM
  • SECADM
  • LOAD
width: 100px;

}

許可權級別 說明和用途
SYSADM DB2 UDB 中最高的管理許可權級別,具有SYSADM許可權的使用者可以執行例項程式,發出資料庫和資料庫管理器命令,以及訪問這個資料庫管理器例項中任何資料庫中任何資料表中的資料。
提供控制這個資料庫例項中所有資料庫物件的能力,包括資料庫、表、檢視、索引、包、模式、伺服器、別名、資料型別、函式、過程、觸發器、表空間、資料庫分割槽組、緩衝池和事件監視器
該許可權需要對使用程式和資料的完全訪問權的DB2 UDB管理員使用
我們安裝例項時使用的賬戶db2inst1是系統管理員,擁有最高管理許可權級別SYSADM
SYSCTRL 最高的系統控制許可權級別。提供對資料庫管理器例項機器資料庫執行維護和管理操作的能力
不允許直接訪問資料庫中的資料。具有連線資料庫的隱式特權,並可以執行具有SYSMAINT和SYSMON許可權的使用者能夠執行的功能。該許可權供管理一個包含敏感資料的資料庫管理器例項的使用者使用
SYSMAINT 次高的系統控制許可權級別。提供對資料庫管理器例項機器資料庫執行維護和管理操作的能力
不允許直接訪問資料庫中的資料。具有連線資料庫的隱式特權,並可以執行具SYSMON許可權的使用者能夠執行的功能。該許可權供維護一個包含敏感資料的資料庫管理器例項的使用者使用
SYSMON
系統監視
提供獲得資料庫管理器例項及其資料庫的快照的能力。如果一個資料庫管理器例項中的資料庫包含敏感資料,而管理使用者只需要通過快照監控資料來進行問題判斷,這時候就可以給使用者授予SYSMON許可權。該許可權不允許改變系統資源的使用
DBADM 對於一個例項中的一個特定資料庫的次高管理許可權級別。允許 使用者允許某些實用程式,發出資料庫命令以及訪問資料庫中的任何表中的資料。該許可權供需要完全訪問資料庫物件和資料,但是不需要完整的維護許可權的管理員使用
LOAD 允許使用者呼叫LOAD實用程式。根據LOAD操作的模式,使用者還需要LOAD操作目標上的insert和update特權。該許可權供只想批量裝載一組新資料的使用者使用

特權(privilege)

就是具體表上的insert、update以及create db的許可權了

安全層次

  當一個使用者在客戶端發出一條“select * from tb1”SQL語句時,首先要連線資料庫,在連線資料庫時需要提供使用者名稱和密碼。使用者名稱和密碼是在資料庫之外認證的,這需要用到作業系統或外部安全外掛。例如在AIX上是使用/etc/password 驗證使用者名稱,使用/etc/security/passwd 來驗證密碼。這是作業系統層次。
  作業系統之下是例項級別的許可權,例項之下是資料庫級別的許可權,使用者要訪問表tb1,也必須在tb1上有特定的select特權。這個就是整個DB2的安全機制實現方式。


相關文章