使用配置文件創(chuàng)建口令管理策略
2024-07-21 02:39:55
供稿:網(wǎng)友
多數(shù) Oracle 數(shù)據(jù)庫(kù)用戶都使用默認(rèn)配置文件創(chuàng)建用戶帳戶。自從 Oracle 8 開始,就可以通過(guò)創(chuàng)建一個(gè)配置文件,然后使用以下兩個(gè)語(yǔ)句之一分配給它一個(gè)用戶來(lái)鎖定一個(gè)帳戶。
CREATE USER myuser . . . PROFILE myprofile;
ALTER USER myuser [被屏蔽廣告]PROFILE myprofile;
入侵?jǐn)?shù)據(jù)庫(kù)帳戶的一個(gè)典型嘗試是試用幾個(gè)常用的口令,比如“welcome”或者用戶名之類的。可以使用配置文件標(biāo)記FAILED_LOGIN_ATTEMPTS 阻止多次失敗的登錄嘗試。
CREATE PROFILE myprofile LIMIT
FAILED_LOGIN_ATTEMPTS 5
PASSWord_LOCK_TIME 1;
分配給這個(gè)配置文件的用戶將會(huì)在五次以不正確的口令嘗試登錄之后被拒之于門外。帳戶將會(huì)在一天之內(nèi)不可訪問(wèn),直至 DBA 發(fā)出了一個(gè)ALTER USER ACCOUNT UNLOCK 命令。
即使在幾年之后,我還發(fā)現(xiàn)在以前的項(xiàng)目中我的老口令依然能夠使用。這是一個(gè)很好的反面例子,說(shuō)明我們要對(duì)口令的生存時(shí)間設(shè)置一個(gè)期限,使其在特定的一段時(shí)間(也就是合同的結(jié)束之日)之后過(guò)期。另外還有一種選擇,即答應(yīng)一個(gè)特定的寬限期,這對(duì)不經(jīng)常使用的項(xiàng)目很有用。假如用戶在口令過(guò)期之前不登錄,用戶依然可以連接,但是會(huì)顯示一個(gè)警告,直到寬限期過(guò)期。在配置文件中使用PASSWORD_LIFE_TIME 和PASSWORD_GRACE_TIME 標(biāo)記能夠啟用這些特性。
ALTER PROFILE myprofile LIMIT
PASSWORD_LIFE_TIME 30
PASSWORD_GRACE_TIME 3;
分配給那個(gè)配置文件的用戶將會(huì)在口令修改的30之后不能使用他們的帳戶。30天之后,嘗試登錄將會(huì)出現(xiàn)一個(gè)警告消息,提示還有三天帳戶就會(huì)被鎖。
很多用戶會(huì)看到這些限制并且簡(jiǎn)單地嘗試將他們的口令重設(shè)為他們以前使用的口令,而不是每次都使用一個(gè)新口令。可以使用PASSWORD_REUSE_TIME 和PASSWORD_REUSE_MAX 標(biāo)記阻止用戶重用一個(gè)口令。
ALTER PROFILE myprofile LIMIT
PASSWORD_REUSE_TIME 30
PASSWORD_REUSE_MAX 100;
這個(gè)配置文件的用戶將不能重用一個(gè)口令超過(guò)30天,或者使用同一口令不能超過(guò)100次。
最后,一些用戶使用輕易猜出的口令。通過(guò)創(chuàng)建一個(gè) PL/SQL 過(guò)程來(lái)檢驗(yàn)口令就可以限制一個(gè)口令的格式(比如檢查最小長(zhǎng)度、字母、數(shù)字或者大小寫混合,或者確認(rèn)口令不是用戶名的變種)。必須以如下格式創(chuàng)建存儲(chǔ)過(guò)程:
CREATE OR REPLACE FUNCTION verify_password
(
userid varchar(30),
password varchar(30),
old_password varchar(30)
) RETURN BOOLEAN
. . .
可以以如下方式分配這個(gè)函數(shù)(可以是任何名稱,但是必須屬于 SYS 帳戶):
ALTER PROFILE myprofile LIMIT
PASSWORD_VERIFY_FUNCTION verify_password;