程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2的三種安全機制

DB2的三種安全機制

編輯:DB2教程

數據庫的安全機制是數據庫系統的關鍵之一,本文將為您介紹DB2數據庫中的三種主要安全機制,供您參考,希望能對您有所啟迪。

DB2中有三種主要機制允許 DBA 實現數據庫安全性計劃:認證、授權和特權

DB2內的五種不同權限級別是 SYSADM、SYSCTRL、SYSMAINT、DBADM 和 LOAD。

登錄到安裝有 DB2 的機器。發出下列命令:

db2 attach to db2inst1

這裡,認證是隱式執行的。使用的是登錄到機器時所使用的用戶標識,並且假定操作系統已經驗證了該用戶標識。

db2 connect to sample user tst1 using mypass

db2 connect to sample user tst1 using mypass new chgpass confirm chgpass

改變密碼

類型 描述

SERVER 在服務器上進行認證。

SERVER_ENCRYPT 在服務器上進行認證。在將密碼發送給服務器之前,先在客戶機機器上對密碼進行加密。

CLIENT 在客戶機機器上進行認證(參閱處理不可信的客戶機以了解例外情況)。

*KERBEROS 認證由 Kerberos 安全性軟件執行。

*KRB_SERVER_ENCRYPT 如果客戶機設置為 KERBEROS,則認證由 Kerberos 安全性軟件執行。否則,就使用 SERVER_ENCRYPT。

*這些設置只對 Windows 2000 操作系統有效。

要查看配置文件中的認證參數:

db2 get dbm cfg

要將認證參數修改為 server_encrypt:

C:\PROGRA~1\SQLLIB\BIN>db2 update dbm cfg using authentication server_encrypt

C:\PROGRA~1\SQLLIB\BIN>db2stop

C:\PROGRA~1\SQLLIB\BIN>db2start

要將網關認證類型設置成 SERVER,您必須在網關機器上發出下列命令:

db2 catalog database myhostdb at node nd1 authentication dcs

db2 terminate

注:認證從不在網關本身上執行。在 DB2 V8 中,必須總是在客戶機或主機數據庫服務器上執行認證。

DB2 權限控制數據庫安全性計劃的以下幾方面:

授予用戶的權限級別

允許用戶運行的命令

允許用戶讀和/或修改的數據

允許用戶創建、修改和/或刪除的數據庫對象

權限由特權組和較高級別的數據庫管理器(實例級別)維護和實用操作組成。在 DB2 所提供的五種權限中,SYSADM、SYSCTRL 和 SYSMAINT 是實例級權限。 這意味著權限(作用的)范圍包括實例級命令和對實例內的所有數據庫所執行的命令。這些權限只能指派給某個組;可以通過 DBM CFG 文件來進行指派。

DBADM 和 LOAD 權限是為了某個特定的數據庫而指定給某個用戶或組的。可以用 GRANT 命令來顯式地完成這一工作。

通過發出以下命令,用戶可以確定他們具有哪些權限及數據庫級別的特權:

db2 get authorizations

由於 SYSADM 用戶是唯一允許更新 DBM CFG 的用戶,因此他們也是唯一允許向其它組授予任何 SYS* 權限的用戶。下面的示例演示了如何向組 grp1 授予 SYSADM 權限:

db2 update dbm cfg using SYSADM_GROUP grp1

記住,只有將實例停止然後重新啟動,上面的更改才會生效。此外,還要記住的是,如果您此時不是以 grp1 的成員身份登錄的話,那麼您可能就沒有重新啟動實例的權限!您將不得不先注銷然後再用正確的組中的標識重新登錄,或者將您的當前標識添加到 grp1 中。

具有 SYSCTRL 權限的用戶可以在實例內執行所有管理和維護命令。然而,與 SYSADM 用戶不同的是,除非向他們授予了訪問數據庫內任何數據所需的特權,否則他們就不能訪問這些數據。SYSCTRL 用戶可以對實例內的任何數據庫執行的命令示例有:

db2start/db2stop

db2 create/drop database

db2 create/drop tablespace

db2 backup/restore/rollforward database

db2 runstats (可以對任何表執行該命令)

db2 update db cfg for database dbname

具有 SYSADM 權限的用戶可以使用下列命令將 SYSCTRL 指派給某個組:

db2 update dbm cfg using SYSCTRL_GROUP group name

具有 SYSMAINT 權限的用戶可以發出的命令是具有 SYSCTRL 權限的用戶所允許發出的命令的子集。SYSCTRL 用戶只能執行與維護有關的任務,如:

db2start/db2stop

db2 backup/restore/rollforward database

db2 runstats (可以對任何表執行該命令)

db2 update db cfg for database dbname

注意:具有 SYSMAINT 權限的用戶不能夠創建或刪除數據庫或表空間。除非向他們授予了訪問數據庫內任何數據所需的特權,否則他們也不能訪問這些數據。

如果具有 SYSADM 權限,那麼您可以使用下列命令來將 SYSMAINT 權限指派給某個組:

db2 update dbm cfg using SYSMAINT_GROUP group name

DBADM 權限是一種數據庫級權限而不是實例級權限。總的來說,DBADM 用戶幾乎能夠完全控制數據庫。但 DBADM 用戶不能執行類似下面的維護或管理任務:

drop database

drop/create tablespace

backup/restore database

update db cfg for database db name

然而,他們卻可以執行下列任務:

db2 create/drop table

db2 grant/revoke (任何特權)

db2 runstats (任何表)

DBADM 用戶還被自動授予數據庫對象及其內容的全部特權。由於 DBADM 權限是一種數據庫級權限,因此可以將它指派給用戶和組。下列命令演示了授予 DBADM 權限的幾種不同方法。

db2 create database test

這條命令將對名為 test 的數據庫的隱式 DBADM 權限授予發出該命令的用戶。

db2 connect to sample

db2 grant dbadm on database to user tst1

只有 SYSADM 用戶才能發出這條命令;它將對樣本數據庫的 DBADM 權限授予用戶 tst1。注:在授予 DBADM 權限之前,進行授予權限操作的用戶必須已經連接到了樣本數據庫上。

db2 grant dbadm on database to group grp1

這條命令將 DBADM 權限授予組 grp1 中的所有人。同樣,只有 SYSADM 用戶才能發出這條命令。

LOAD 權限也被當作數據庫級別的權限,因此可以將它授予用戶和組。正如同它的名字所暗示的那樣,LOAD 權限允許用戶對表發出 LOAD 命令。在填充具有大量數據的表時,通常使用 LOAD 這種執行更快的命令來替代插入或導入命令。根據您希望執行的 LOAD 類型的不同,僅僅具有 LOAD 權限可能還是不夠的。還可能需要對該表具有特定特權。

具有 LOAD 權限的用戶可以運行下列命令:

db2 quIEsce tablespaces for table

db2 list tablespaces

db2 runstats (任何表)

db2 load insert (必須對表具有插入特權)

db2 load restart/terminate after load insert (必須對表具有插入特權)

db2 load replace (必須對表具有插入和刪除特權)

db2 load restart/terminate after load replace (必須對表具有插入和刪除特權)

只有具有 SYSADM 或 DBADM 權限的用戶才允許給用戶或組授予或取消 LOAD 權限。下列示例演示了 LOAD 權限是如何允許我們的用戶將數據 LOAD 到名為 sales 的表中的。假定已經發出了命令 db2 connect to sample。

db2 grant load on database to user tst1

db2 grant insert on table sales to user tst1

有了 LOAD 權限和插入特權,tst1 就可以對 sales 表發出 LOAD INSERT、LOAD RESTART 或在 LOAD INSERT 之後發出 TERMINATE。

db2 grant load on database to group grp1

db2 grant delete on table sales to group grp1

db2 grant insert on table sales to group grp1

有了 LOAD 權限以及刪除和插入特權,grp1 中的任何成員都可以對 sales 表發出 LOAD REPLACE、LOAD RESTART 或者在 LOAD REPLACE 之後發出 TERMINATE。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved