※ 本記事は2016年12月19日に公開されたものです。

さまざまな会社にデータベースセキュリティアセスメントサービスをおこなっていますが、データベースユーザーのパスワードが非常に簡単なものに設定されているケース、ユーザー名とパスワードが同じものが使われているケースが散見されています。
会社のセキュリティポリシーとして簡単なパスワードは利用しないことなど決まっていても、簡単なパスワードが設定できてしまえば、ユーザーは簡単なパスワードを設定してしまうこともあります。パスワードの性質上、管理者が各利用者どんなパスワードを設定しているか確認することもできません。

そこでやはり簡単なパスワードは設定できないような仕組みを組み込むべきです。Oracle Databaseでは、パスワードプロファイル機能でこの仕組みを提供しています。パスワードプロファイルでは、パスワードの複雑性だけでなく以下の項目を設定することができます。

 

  • FAILED_LOGIN_ATTEMPTS
    設定回数以上ログインを失敗するとアカウントがロックされます。デフォルトは10(回)です。
    このパラメータが設定されていない場合、攻撃者は何回でもパスワードを変えながらログイン試行ができますので、不正ログインされる可能性が増加しますので、値を設定しておくことを推奨します。このパラメータが設定されている場合、不正ログイン試行や操作ミスなどでアカウントがロックされてアプリケーションからのログインができなくなってしまう可能性がありますのでご注意ください。
     
  • PASSWORD_GRACE_TIME
    パスワードが期限切れになる前に、ユーザーがパスワードを変更することができる期間を設定します。デフォルトは7(日)です。
     
  • PASSWORD_LIFE_TIME
    パスワードを利用できる期間を設定します。デフォルトは180(日)です。
    PASSWORD_LIFE_TIMEで設定した期間を過ぎると、次のログイン試行からPASSWORD_GRACE_TIMEで設定した期間、ログインごとにパスワードを変更するようにアラートメッセージでますが、ログインはされます。パスワードを変更せずにその期間を過ぎると、次回のログイン時にパスワードを変更するようにプロンプトが表示され、ログインはできていない状態になります。この状態でも新しいパスワードをしていさえすれば、データベースにログインできますので、ロックされた状態とは異なります。
    頻繁にデータベースに直接アクセスする利用者に定期的にパスワード変更をさせるセキュリティポリシーがある場合には、このパラメータでパスワード変更を強制できます。ただし、人間が使わないアプリケーション用のアカウントではパスワードを複雑なものとし、パスワードを変更しないほうが安全という考え方もあります。その場合は人間が利用するアカウント用と、アプリケーション用のアカウント用に異なるパスワードプロファイルを作成し割り当ててください。また、アプリケーション用のアカウントにデフォルトのプロファイルが適用されていると、パスワード変更を忘れ半年後にアプリケーションからログインできなくなってしまう可能性がありますのでご注意ください。
     
  • PASSWORD_LOCK_TIME
    FAILED_LOGIN_ATTEMPTSの回数をこえてログイン失敗しロックされたアカウントは、この期間を過ぎるとロックが解除されます。デフォルトは1(日)です。
    ロックされたアカウントは管理者が手動でロック解除することもできますが、管理者の手間を省くためにこのパラメータを利用して自動でロック解除させることができます。
     
  • PASSWORD_REUSE_MAX
    同じパスワードを利用できるようになるまでに必要なパスワード変更の回数を設定します。デフォルトはUNLIMITED(すぐに再利用可能)です。
     
  • PASSWORD_REUSE_TIME
    同じパスワードを利用できるようになるまでに必要なパスワード変更の日数を設定します。デフォルトはUNLIMITED(すぐに再利用可能)です。
     
  • PASSWORD_VERIFY_FUNCTION
    パスワードの複雑性ルールを検証するファンクションを指定します。デフォルトはNULL(検証しない)です。
    Oracle Databaseでは事前定義のパスワードの複雑性ルールを検証するファンクションを提供しています。たとえばVERIFY_FUNCTION_11G、ORA12C_VERIFY_FUNCTION、ORA12C_STRONG_VERIFY_FUNCTIONといったファンクションを提供しています。それぞれのルールは「パスワードの複雑度検証の概要」を参照して下さい。

 

パスワードプロファイルはDBA_PROFILESデータディクショナリビューから確認できます。
DBSATのレポートでは「User Accounts」セクションの「User Profiles」から確認できます。

どのユーザーにどのパスワードプロファイルが割り当てられているかはDBA_USERSデータディクショナリビューのPROFILE列から確認できます。DBSATのレポートでは「User Accounts」セクションの「User Accounts」から確認できます。

Oracle Database 11gR1以降では、DBCAでデータベース作成直後の状態ではパスワードの有効期限が180日に設定されています。6ヶ月後に有効期限がきて、いきなりアプリケーションからデータベースに接続できずアプリケーションが動かなくなった、というような事にならないように注意してください。

具体的なパスワードプロファイルの利用例はまた別のエントリで

「もくじ」にもどる