※ 本記事は2017年2月9日に公開されたものです。

データベースのアカウントの分類方法はいくつもありますが、どのように利用されることを目的として作成されたかという観点からだと下記の3つに分類できます。

 

  • アプリケーション用のユーザー(人間が使わないアカウント)
  • 直接データベースにログインして利用するユーザー(人間が利用するアカウント)
  • デフォルトで最初から作成されているユーザー(運用フェーズでは誰も利用すべきでなないアカウント)

 

今回はデフォルトで最初から作成されているユーザーの考え方を説明します。もちろん、これが唯一無二の方法ではありませんが、セキュリティを担保するためのデータベースユーザー利用の考え方のひとつとして参考にしていただければと思います。

Oracle Databaseではデータベース作成時に既に複数のデータベースユーザーが作成されています。たとえばSYS、SYSTEMといったデータベース管理用アカウントやDBSNMP、OUTLNといった各種データベース機能が利用するアカウントやサンプルスキーマです。

これらのアカウントは可能な限りロックして、運用中は基本的には直接データベースに接続するユーザーとして利用しないべきです。特に事前作成されたアカウントにさらに権限を付与して利用することは危険です。

事前定義のアカウントは攻撃者にとってみれば、必ず存在する、もしくは存在する可能性が高いアカウントです。アカウントの奪取を試みるときにまずはこれらのアカウントが狙われやすいです。特にSYSやSYSTEMは強い権限を持っていて必ず存在するアカウントですので、最初に狙われることが多いです。これらのアカウントは容易に想像できない複雑なパスワードを設定し、だれからも利用されないようにして、ログイン試行があった場合には必ず監査し、必要であれば攻撃検知のアラートが上がるようにしておいた方がよいでしょう。

これらのアカウントを利用するのは、データベースが壊れたなどの非常時のみにして、普段は適切な権限を付与した個人アカウントを利用し、これらのアカウントでのログイン試行があったら不正アクセスを疑えるようにしておくことが、内部犯行、外部攻撃を直ぐに察知し、被害を未然に防ぐことにつながります。