十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
數(shù)據(jù)庫(kù)的安全機(jī)制是數(shù)據(jù)庫(kù)系統(tǒng)的關(guān)鍵之一,本文將為您介紹DB2數(shù)據(jù)庫(kù)中的三種主要安全機(jī)制,供您參考,希望能對(duì)您有所啟迪。

創(chuàng)新互聯(lián)公司主要從事成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)松溪,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18982081108
DB2中有三種主要機(jī)制允許 DBA 實(shí)現(xiàn)數(shù)據(jù)庫(kù)安全性計(jì)劃:認(rèn)證、授權(quán)和特權(quán)
DB2內(nèi)的五種不同權(quán)限級(jí)別是 SYSADM、SYSCTRL、SYSMAINT、DBADM 和 LOAD。
登錄到安裝有 DB2 的機(jī)器。發(fā)出下列命令:
db2 attach to db2inst1
這里,認(rèn)證是隱式執(zhí)行的。使用的是登錄到機(jī)器時(shí)所使用的用戶標(biāo)識(shí),并且假定操作系統(tǒng)已經(jīng)驗(yàn)證了該用戶標(biāo)識(shí)。
db2 connect to sample user tst1 using mypass
db2 connect to sample user tst1 using mypass new chgpass confirm chgpass
改變密碼
類型 描述
SERVER 在服務(wù)器上進(jìn)行認(rèn)證。
SERVER_ENCRYPT 在服務(wù)器上進(jìn)行認(rèn)證。在將密碼發(fā)送給服務(wù)器之前,先在客戶機(jī)機(jī)器上對(duì)密碼進(jìn)行加密。
CLIENT 在客戶機(jī)機(jī)器上進(jìn)行認(rèn)證(參閱處理不可信的客戶機(jī)以了解例外情況)。
*KERBEROS 認(rèn)證由 Kerberos 安全性軟件執(zhí)行。
*KRB_SERVER_ENCRYPT 如果客戶機(jī)設(shè)置為 KERBEROS,則認(rèn)證由 Kerberos 安全性軟件執(zhí)行。否則,就使用 SERVER_ENCRYPT。
*這些設(shè)置只對(duì) Windows 2000 操作系統(tǒng)有效。
要查看配置文件中的認(rèn)證參數(shù): #p#
db2 get dbm cfg
要將認(rèn)證參數(shù)修改為 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
要將網(wǎng)關(guān)認(rèn)證類型設(shè)置成 SERVER,您必須在網(wǎng)關(guān)機(jī)器上發(fā)出下列命令:
db2 catalog database myhostdb at node nd1 authentication dcs
db2 terminate
注:認(rèn)證從不在網(wǎng)關(guān)本身上執(zhí)行。在 DB2 V8 中,必須總是在客戶機(jī)或主機(jī)數(shù)據(jù)庫(kù)服務(wù)器上執(zhí)行認(rèn)證。
DB2 權(quán)限控制數(shù)據(jù)庫(kù)安全性計(jì)劃的以下幾方面:
授予用戶的權(quán)限級(jí)別
允許用戶運(yùn)行的命令
允許用戶讀和/或修改的數(shù)據(jù)
允許用戶創(chuàng)建、修改和/或刪除的數(shù)據(jù)庫(kù)對(duì)象 #p#
權(quán)限由特權(quán)組和較高級(jí)別的數(shù)據(jù)庫(kù)管理器(實(shí)例級(jí)別)維護(hù)和實(shí)用操作組成。在 DB2 所提供的五種權(quán)限中,SYSADM、SYSCTRL 和 SYSMAINT 是實(shí)例級(jí)權(quán)限。 這意味著權(quán)限(作用的)范圍包括實(shí)例級(jí)命令和對(duì)實(shí)例內(nèi)的所有數(shù)據(jù)庫(kù)所執(zhí)行的命令。這些權(quán)限只能指派給某個(gè)組;可以通過(guò) DBM CFG 文件來(lái)進(jìn)行指派。
DBADM 和 LOAD 權(quán)限是為了某個(gè)特定的數(shù)據(jù)庫(kù)而指定給某個(gè)用戶或組的??梢杂?GRANT 命令來(lái)顯式地完成這一工作。
通過(guò)發(fā)出以下命令,用戶可以確定他們具有哪些權(quán)限及數(shù)據(jù)庫(kù)級(jí)別的特權(quán):
db2 get authorizations
由于 SYSADM 用戶是***允許更新 DBM CFG 的用戶,因此他們也是***允許向其它組授予任何 SYS* 權(quán)限的用戶。下面的示例演示了如何向組 grp1 授予 SYSADM 權(quán)限:
db2 update dbm cfg using SYSADM_GROUP grp1
記住,只有將實(shí)例停止然后重新啟動(dòng),上面的更改才會(huì)生效。此外,還要記住的是,如果您此時(shí)不是以 grp1 的成員身份登錄的話,那么您可能就沒(méi)有重新啟動(dòng)實(shí)例的權(quán)限!您將不得不先注銷然后再用正確的組中的標(biāo)識(shí)重新登錄,或者將您的當(dāng)前標(biāo)識(shí)添加到 grp1 中。
具有 SYSCTRL 權(quán)限的用戶可以在實(shí)例內(nèi)執(zhí)行所有管理和維護(hù)命令。然而,與 SYSADM 用戶不同的是,除非向他們授予了訪問(wèn)數(shù)據(jù)庫(kù)內(nèi)任何數(shù)據(jù)所需的特權(quán),否則他們就不能訪問(wèn)這些數(shù)據(jù)。SYSCTRL 用戶可以對(duì)實(shí)例內(nèi)的任何數(shù)據(jù)庫(kù)執(zhí)行的命令示例有: #p#
db2start/db2stop
db2 create/drop database
db2 create/drop tablespace
db2 backup/restore/rollforward database
db2 runstats (可以對(duì)任何表執(zhí)行該命令)
db2 update db cfg for database dbname
具有 SYSADM 權(quán)限的用戶可以使用下列命令將 SYSCTRL 指派給某個(gè)組:
db2 update dbm cfg using SYSCTRL_GROUP group name
具有 SYSMAINT 權(quán)限的用戶可以發(fā)出的命令是具有 SYSCTRL 權(quán)限的用戶所允許發(fā)出的命令的子集。SYSCTRL 用戶只能執(zhí)行與維護(hù)有關(guān)的任務(wù),如:
db2start/db2stop
db2 backup/restore/rollforward database #p#
db2 runstats (可以對(duì)任何表執(zhí)行該命令)
db2 update db cfg for database dbname
注意:具有 SYSMAINT 權(quán)限的用戶不能夠創(chuàng)建或刪除數(shù)據(jù)庫(kù)或表空間。除非向他們授予了訪問(wèn)數(shù)據(jù)庫(kù)內(nèi)任何數(shù)據(jù)所需的特權(quán),否則他們也不能訪問(wèn)這些數(shù)據(jù)。
如果具有 SYSADM 權(quán)限,那么您可以使用下列命令來(lái)將 SYSMAINT 權(quán)限指派給某個(gè)組:
db2 update dbm cfg using SYSMAINT_GROUP group name
DBADM 權(quán)限是一種數(shù)據(jù)庫(kù)級(jí)權(quán)限而不是實(shí)例級(jí)權(quán)限??偟膩?lái)說(shuō),DBADM 用戶幾乎能夠完全控制數(shù)據(jù)庫(kù)。但 DBADM 用戶不能執(zhí)行類似下面的維護(hù)或管理任務(wù):
drop database
drop/create tablespace
backup/restore database
update db cfg for database db name
然而,他們卻可以執(zhí)行下列任務(wù):
db2 create/drop table
db2 grant/revoke (任何特權(quán))
db2 runstats (任何表) #p#
DBADM 用戶還被自動(dòng)授予數(shù)據(jù)庫(kù)對(duì)象及其內(nèi)容的全部特權(quán)。由于 DBADM 權(quán)限是一種數(shù)據(jù)庫(kù)級(jí)權(quán)限,因此可以將它指派給用戶和組。下列命令演示了授予 DBADM 權(quán)限的幾種不同方法。
db2 create database test
這條命令將對(duì)名為 test 的數(shù)據(jù)庫(kù)的隱式 DBADM 權(quán)限授予發(fā)出該命令的用戶。
db2 connect to sample
db2 grant dbadm on database to user tst1
只有 SYSADM 用戶才能發(fā)出這條命令;它將對(duì)樣本數(shù)據(jù)庫(kù)的 DBADM 權(quán)限授予用戶 tst1。注:在授予 DBADM 權(quán)限之前,進(jìn)行授予權(quán)限操作的用戶必須已經(jīng)連接到了樣本數(shù)據(jù)庫(kù)上。
db2 grant dbadm on database to group grp1
這條命令將 DBADM 權(quán)限授予組 grp1 中的所有人。同樣,只有 SYSADM 用戶才能發(fā)出這條命令。
LOAD 權(quán)限也被當(dāng)作數(shù)據(jù)庫(kù)級(jí)別的權(quán)限,因此可以將它授予用戶和組。正如同它的名字所暗示的那樣,LOAD 權(quán)限允許用戶對(duì)表發(fā)出 LOAD 命令。在填充具有大量數(shù)據(jù)的表時(shí),通常使用 LOAD 這種執(zhí)行更快的命令來(lái)替代插入或?qū)朊?。根?jù)您希望執(zhí)行的 LOAD 類型的不同,僅僅具有 LOAD 權(quán)限可能還是不夠的。還可能需要對(duì)該表具有特定特權(quán)。
具有 LOAD 權(quán)限的用戶可以運(yùn)行下列命令:
db2 quiesce tablespaces for table #p#
db2 list tablespaces
db2 runstats (任何表)
db2 load insert (必須對(duì)表具有插入特權(quán))
db2 load restart/terminate after load insert (必須對(duì)表具有插入特權(quán))
db2 load replace (必須對(duì)表具有插入和刪除特權(quán))
db2 load restart/terminate after load replace (必須對(duì)表具有插入和刪除特權(quán))
只有具有 SYSADM 或 DBADM 權(quán)限的用戶才允許給用戶或組授予或取消 LOAD 權(quán)限。下列示例演示了 LOAD 權(quán)限是如何允許我們的用戶將數(shù)據(jù) LOAD 到名為 sales 的表中的。假定已經(jīng)發(fā)出了命令 db2 connect to sample。
db2 grant load on database to user tst1
db2 grant insert on table sales to user tst1
有了 LOAD 權(quán)限和插入特權(quán),tst1 就可以對(duì) sales 表發(fā)出 LOAD INSERT、LOAD RESTART 或在 LOAD INSERT 之后發(fā)出 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 權(quán)限以及刪除和插入特權(quán),grp1 中的任何成員都可以對(duì) sales 表發(fā)出 LOAD REPLACE、LOAD RESTART 或者在 LOAD REPLACE 之后發(fā)出 TERMINATE。