編者按: 驗證口令
獲得訪問授權
這是目前最常用的訪問控制手段
Oracle數據庫也采用這樣的安全策略
在這一策略中
口令的管理是關鍵
然而要做好這項工作
既保證數據的安全也保證用戶使用方便卻並非易事
在Oracle數據庫中
若要訪問數據
必須先具有該數據庫的一個賬戶
這個訪問可以是直接訪問(通過一個數據庫的用戶連接)或間接訪問(通過在數據庫鏈接中預設權限的訪問)
每個賬戶必須有一個與其相關的口令
一個數據庫賬戶可以連接到一個操作系統賬戶上
口令是在創建用戶賬戶時為每一用戶設置的
並可在該賬戶創建後對它們進行變更
用戶變更賬戶口令的能力受他訪問工具權限的限制
數據庫以加密的形式將口令存儲在一個數據字典表中
如果賬戶直接與操作系統賬戶相關
就可以旁路口令檢查
在Oracle
i中
口令可以無效
數據庫管理員可以建立能重復使用口令的條件(通過一個數據庫口令歷史設置值)
也可以使用環境文件為口令制定標准
如最小長度
或如果連續多次與賬戶連接不成功
就可以自動鎖定賬戶
環境文件 可以使用環境文件來限制用戶能使用的系統和數據庫資源
並管理口令限制
如果數據庫中沒有創建環境文件
將使用缺省環境文件(Default)
缺省環境文件對於所有用戶資源沒有限制
表
列出了可以通過環境文件限制的資源
(注: PASSWORD_REUSE_MAX和PASSWORD_REUSE_TIME互不相容
如果其中一個資源設置成一個值
另一個必須設置成Unlimited
)
如表
所示
許多資源都可以被限制
在用戶超過資源限制前不會發生任何動作
一旦到達限值
SQL語句就被停止
環境文件是通過
create profile
命令創建的
可以用
alter profile
命令修改
下例所示的
alter profile
命令用於修改現有的環境文件
在這個例子中
數據庫的缺省環境文件被修改成允許最大空閒時間為
小時
alter profile DEFAULT limit idle_time
;
在Oracle
i中
可以使用環境文件來管理口令的終止
重新使用和復雜性
例如
可以限制一個口令的壽命
鎖定口令過舊的賬戶
也可以強制一個口令至少有一定程度的復雜性
並鎖定一個多次注冊失敗的賬戶
口令的鎖定與過期 FAILED_LOGIN_ATTEMPTS用於設定賬戶允許的嘗試次數
可以防止惡意人員無限制地嘗試賬戶口令來破解口令
例如
如果設置用戶環境文件的FAILED_LOGIN_ATTEMPTS資源為
該賬戶允許連續注冊失敗
次
第
次失敗就會引起賬戶被鎖定
在下面的例子中
創建一個供用戶TestUser使用的TEST_PROFILE環境文件
create profile TEST_PROFILE limit
FAILED_LOGIN_ATTEMPTS
;
create user TESTUSER identified by abcd
profile TEST_PROFILE;
grant CREATE SESSION to TESTUSER;
如果連續
次與TestUser賬戶的連接失敗
該賬戶將自動被Oracle鎖定
此後當輸入TestUser賬戶的正確口令時
會收到一條錯誤信息
ERROR:ORA
: the account is locked
要對賬戶解鎖
可在數據庫管理員賬戶中使用
alter user
命令的account unlock子句
如下所示
alter user TESTUSER account unlock;
賬戶解鎖後
TestUser賬戶再一次被允許連接
可以通過
alter user
命令的account lock子句來手動鎖定一個賬戶
alter user TESTUSER account lock;
若一個賬戶由於多次連接失敗而被鎖定
當超過其環境文件的PASSWORD_LOCK_TIME值時將自動解鎖
例如
如果PASSWORD_LOCK_TIME設為
前面例子中的TestUser賬戶就被鎖定
天
過後賬戶即被自動解鎖
可以通過環境文件中的PASSWORD_LIFE_TIME資源建立一個口令的最大期限
例如
可以強制TEST_PROFILE環境文件的用戶每
天改變一次口令
alter profile TEST_PROFILE limit
PASSWORD_LIFE_TIME
;
在這個例子中
alter profile
命令用於修改TEST_PROFILE環境文件
PASSWORD_LIFE_TIME值設為
因此使用這個環境文件的每個賬戶在
天後口令就會過期
如果口令過期
就必須在下次注冊時修改它
除非環境文件對過期的口令有一特定的寬限期
寬限期參數叫做PASSWORD_GRACE_TIME
如果在寬限期內沒有修改口令
賬戶就會過期
(注: 如果使用PASSWORD_LIFE_TIME參數
就必須為用戶提供一種便於其改變口令的方法
)
過期
賬戶與
鎖定
賬戶不同
鎖定賬戶會隨著時間的推移自動解鎖
而過期賬戶需要通過數據庫管理員人工干預才能重新激活
(注
如果使用口令過期特性
就要確保擁有應用程序的賬戶具有不同的環境文件設置值
否則它們會被鎖定
使得應用程序不能使用
)
如前面例子所述
若要重新恢復一個過期賬戶
需使用
alter user
命令
在這個例子中
用戶TestUser首先由數據庫管理員手工使其口令過期
alter user TESTUSER password expire;
接著
TestUser試圖連接其賬戶
當他輸入口令時
立即被提示輸入賬戶的新口令
也可以使用
create user
命令的
password expire
子句
強制用戶在第一次訪問時修改口令
不過
create user
命令不允許對用戶設置的新口令設置限期日期
要設置的話
必須使用前面例子中的PASSW??????餀??????ORD_LIFE_TIME環境文件參數
若要查看任一賬戶的口令限期
可查詢DBA_USERS數據字典視圖的Expire_Date列
若用戶自己想查看
可查詢USER_USERS數據字典視圖的Expiry_Date列(通過SQL*Plus或一個基於客戶機的查詢工具)
防止口令重新使用 若要防止一個口令被重新使用
可以使用兩個環境文件參數的其中一個: PASSWORD_REUSE_MAX或PASSWORD_REUSE_TIME
這兩個參數互不相容
如果給其中的一個設置了值
另一個就必須設為Unlimited
PASSWORD_REUSE_TIME參數規定一個口令可以重新使用前必須經過的天數
例如
如果設置PASSWORD_REUSE_TIME為
天
則在
天內不能使用同一個口令
PASSWORD_REUSE_MAX參數指定一個口令可以重新使用前必須對其改變的次數
如果試圖在這個限制到達前重新使用該口令
Oracle會拒絕口令的修改
例如
可以為本章前面創建的TEST_PROFILE環境文件設置一個PASSWORD_REUSE_MAX參數
alter profile TEST_PROFILE limit
PASSWORD_REUSE_MAX
PASSWORD_REUSE_TIME UNLIMITED;
如果用戶TestUser現在試圖重新使用一個最近的口令
修改口令就會失敗
例如
如下修改口令
alter user TESTUSER identified by eye
;
然後再次改變它
alter user TESTUSER identified by eye
;
在下次修改口令時
試圖重新使用最近的口令
就會失敗
他不能重新使用任何他最近用過口令
必須提供一個新口令
口令歷史被存儲在SYS模式下一個叫USER_HISTORY$的表中
在這個表中
Oracle存儲了用戶資源識別符
加密的口令值和創建該口令的日期/時間標記
當PASSWORD_REUSE_TIME值已過期或口令修改次數超過PASSWORD_REUSE_MAX值時
這個老的口令記錄就從SYS
USER_HISTORY$表中刪除
如果一個新的密碼與現有的密碼一樣
這個新口令就被拒絕
由於老口令存儲在SYS擁有的一個表中
所以數據存儲在System表空間中
因此
如果要為頻繁修改口令的大量用戶保留非常大的口令歷史
口令歷史表SYS
HISTORY$所需的空間就會影響System表空間的空間需求
設置口令復雜度 可以強制用戶的口令符合復雜度標准
例如
可以要求口令的最小長度
限制不能是一些簡單的詞
至少包括一個數字或標點符號等
create profile
和
alter profile
命令的PASSWORD_VERIFY_FUNCTION參數指定用於評估口令的函數名
如果用戶提出的口令不符合要求
就不會被接受
例如
可以拒絕
abcde
和
eye
作為口令
因為它們未包含任何數字值
為簡化實施口令復雜度的過程
Oracle提供了一個函數VERIFY_FUNCTION
在缺省情況下
不創建這個函數
只有在運行utlpwdmg
sql腳本文件(該文件位於Oracle軟件主目錄下的/rdbms/admin子目錄中)時才創建VERIFY_FUNCTION函數(注意這個函數應當在SYS模式下創建)
函數中的前三個條件子句檢查口令是否與用戶名相同
是否少於
個字符
是否是一組特定的詞之一
可以任意修改這些檢查或增加你的要求
例如
安全原則可能要求口令最少有六個字符
運行前要簡單地更新部分utlpwdmg
sql文件
函數的下一個主要部分是對口令字符串內容的三段檢查
要通過這些檢查
口令中至少要包含一個字符
一個數字和一個標點符號
同前面的檢查一樣
它們是可以編輯的
例如
可以不要求用戶在其口令中使用標點符號
只要簡單地繞過那部分口令檢查就可以
函數的下一部分是將新口令與老口令逐字符進行比較
如果它們之間的不同之處少於三處
新口令將不予接受
這個腳本文件中最後一條命令不屬於該函數
它是一條改變缺省環境文件的
alter profile
命令
如果改變了缺省環境文件
那麼數據庫中所有使用缺省環境文件的用戶都會受到影響
要注意
From:http://tw.wingwit.com/Article/program/Oracle/201311/17911.html