DB2安全(一)——概述
根據《循序漸進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
權限級別 | 說明和用途 |
---|---|
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的安全機製實現方式。
最後更新:2017-04-14 10:00:29