2005年4月某日、総合テストもほぼ完了し、あとはリリースを待つのみという頃、
顧客より一通のメールが届きました。内容はというと。

ユーザのパスワード管理について、要件を満たしていない機能があったとの事。
Oracleとして、以下のようなルールを実装する事は可能かどうか?との問い。


(1)パスワードは8文字以上とする事
(2)パスワードは英文字以外に数字、又は記号を含んでいる事
(3)ユーザ名と同名ではいけない


などなど・・・


『こんな時期に環境変更ですか?』
と考えましたが、要件を満たしていないのであれば仕方ないですね。
総合テストをし直さなくてはいけないなんて大袈裟な変更でもないですし。


とは言うものの、これまで、私が経験してきた中では、このような機能は

実装した事がありません。
周りのDBA数人に聞いてみたところ、皆「そんな機能あったっけ?」との事。


「そのような機能はありませんでした。」とでも、回答するしかないかな、
と思いつつ、マニュアル(管理者ガイド)を確認してみました。


すると・・・なんと、ぴったりのものがあるじゃないですか~~~~!


「データベース管理者ガイド リリース2(9.2)」の「23-16」ページに
「パスワードの複雑度の検証」という項目がありました。

もしかして、常識?

恥ずかしい・・・。


ここを見ると、標準でインストールされているスクリプトを実行する事で、
以下の機能を持つ、パスワード複雑度の検証ルーチンが作成できるそうです。


・パスワードの長さが4文字以上であること。
・パスワードがユーザー名と同じでないこと。
・パスワードに少なくとも1つのアルファベット文字、1つの数字、
  及び1つの句読点文字が含まれていること。
・パスワードが、welcome、account、database、user などの
  簡単、又は明白な単語でないこと。
・以前のパスワードとの違いが3文字以上あること。


そのスクリプトはこちら。
$ORACLE_HOME/rdbms/admin/utlpwdmg.sql


このスクリプトをカスタマイズすれば簡単じゃないですかっ!
さすがOracleさん!
これくらいの機能は当然ありますよね!常識ですよね!


早速、このスクリプトをカスタマイズして、機能を実装しました。

ヨカッタ、ヨカッタ。


<今日のおさらい>

これまで、パスワードの管理を運用任せにしてしたところは多いと思う。
この機能を使って、設計時点から提案する事で、信頼が向上するかも。
個人情報保護法の影響で、特にセキュリティには厳しくなってますからね。
基本的な第一歩として、読み取られにくいパスワードの実装を忘れずに。


◆パスワード複雑度の検証ルーチン作成スクリプト
 $ORACLE_HOME/rdbms/admin/utlpwdmg.sql