データベースのセキュリティにおいて重要なポイントの一つは「アカウント管理」である。例えばWebアプリケーションに「SQLインジェクション」の脆弱性が存在する場合でも,適切なアカウント管理を実施していれば,その被害を最小限に抑えることができる。
そこで本稿では,データベースにおけるアカウント管理について解説したい。もちろん,アカウント管理がデータベース・セキュリティのすべてではない。監査なども重要なポイントになる。それらについては,次の機会に説明する。
データベースの機能を利用する
情報セキュリティにおいて,アカウント管理は“基本中の基本”である。いくら高価なセキュリティ装置を導入していても,ユーザー名とパスワードを推測されて(あるいは盗まれて)正規ユーザーになりすまされてしまえば,攻撃を防ぐことは難しい。
現在では多くの企業・組織もアカウント管理の重要性を認識している。例えば,デスクトップのログオン・パスワードなどを定期的に変更することを義務付けているところは少なくない。離職者のアカウントをすぐに抹消するような仕組みを用意しているところも多い。
しかしながらデータベースのアカウント管理については,重要性が認識されていない,あるいは認識されていても実施されていないケースが少なくないようだ。最近の商用データベースのほとんどは,何らかのアカウント管理機能を備えている。それらはとても有用なので,「何も対策を実施していない」という企業・組織では,データベースが備えるアカウント管理機能を活用してほしい。
例えばOracle 8以降では,以下のアカウント管理機能を備えている。
- 何度もログインに失敗したアカウントをロックアウトする機能
- 容易に推測できるパスワードを設定させない機能
- パスワードに有効期限を設定する機能
具体的には,以下のようなアカウント管理パラメータを設定できる。
プロファイルのパラメータ | 内容 |
---|---|
PASSWORD_LIFE_TIME | パスワードを変更すべき最長期間 |
PASSWORD_GRACE_TIME | パスワード変更までの猶予期間(この間にユーザーはパスワードを変更する必要がある) |
PASSWORD_REUSE_TIME | 同じパスワードを使用できない期間 |
PASSWORD_REUSE_MAX | 前に利用したパスワードが再利用可能になるまでの回数 |
FAILED_LOGIN_ATTEMPTS | アカウントをロックするまでのログイン試行回数 |
PASSWORD_LOCK_TIME | ロックされたアカウントを解除するまでの時間 |
PASSWORD_VERIFY_FUNCTION | パスワードを複雑にするプロシージャの指定 |
Microsoft SQL Serverでは,Windows認証モードを使ってアカウント管理を実現している(図1)。Windows認証モードでは,Windowsのアカウント管理機能をそのまま利用できる。
図1 SQL Server認証モードの選択 [画像のクリックで拡大表示] |
例えばパスワードについては,以下のようなポリシーを適用できる。
図2 SQL Serverに設定できるパスワード・ポリシー [画像のクリックで拡大表示] |
アカウントのロックアウトを設定することも可能だ。
図3 SQL Serverに設定できるアカウント・ロックアウトのポリシー [画像のクリックで拡大表示] |