忍者ブログ
IT関係の小作人労働の日々の日記です。 最近データベースが好きです。 インフラ構築、DB構築、アプリケーション開発・・・何でも屋です。 何でもできそうで、何にもできない。

【データベースの知識】データベースの安全性を高めるための「14の必須チェックポイント」

システム構築において、企業の重要な資産であるデータを守るデータベース(DB)のセキュリティ対策は最優先課題である。
今回は、インフラ設計から日々の運用メンテナンスに至るまで、データベースのセキュリティを確保するために確実に実施すべき14の基本対策を体系的に整理した。


1. 通信とアクセス経路の制御(ネットワーク層)

外部からの侵入経路を断ち、盗聴を防ぐための基本設計。

  • ① 通信を暗号化する
    クライアントやアプリケーションサーバー(APサーバー)との間の通信ルートをSSL/TLS等で暗号化し、ネットワーク上での盗聴や改ざんを防ぐ。
  • ② データベースに接続できる端末を必要最小限とする
    ファイアウォールやセキュリティグループを活用し、信頼されたAPサーバーや特定の管理端末(踏み台サーバーなど)からのみ接続を許可する。
  • ③ 通信ポートをデフォルトから変更する
    標準ポート(Oracleの1521、PostgreSQLの5432など)のまま運用すると自動スキャンの標的になりやすいため、ポート番号を変更して攻撃の難易度を上げる。

2. アカウントと権限の管理(アイデンティティ層)

システム内部における不正操作や、乗っ取りリスクを最小化する対策。

  • ④ デフォルトのパスワードを変更する
    DBMSのインストール時に自動作成されるシステム管理者やサンプル用アカウントの初期パスワードは、必ず強固な文字列に変更する。
  • ⑤ データベースのアカウントを適切に設定する
    共有アカウントの利用を禁止し、開発者や運用者ごとに個別の識別子(ID)を割り当てて責任の所在を明確にする。
  • ⑥ 不要なアカウント、長期的に利用されていないアカウントを削除する
    テスト用アカウントや退職者の古いアカウントなど、利用されていない休眠アカウントはバックドアに悪用される前に完全に削除する。
  • ⑦ デフォルトのロールから不要な権限を削除する
    一般ユーザーに付与される標準ロール(PUBLICなど)に、過剰なシステム権限や他スキーマへの参照権限が残っていないか見直す。
  • ⑧ データベースのオブジェクトに対して、適切なアクセス制御を行う
    最小権限の原則に従い、テーブル、ビュー、ストアドプロシージャなどの各オブジェクトに対する割当権限(SELECT、INSERTなど)を必要最小限に制限する。

3. プラットフォームと製品の保守(システム層)

ソフトウェア自体の弱点を無くし、堅牢な土台を維持する対策。

  • ⑨ 脆弱性の少ないDBMSを利用する
    採用するデータベース管理システム(DBMS)自体のセキュリティ実績やベンダーのサポート体制を評価し、信頼性の高い製品・バージョンを選定する。
  • ⑩ DBMSに対して、セキュリティパッチを適用する
    既知の脆弱性を放置することは致命的なリスクとなる。ベンダーからリリースされる最新の修正パッチ(CPUやRUなど)を定期的に適用する。
  • ⑪ 不要な機能、モジュール、サービスなどは、削除や停止を行う
    利用していないオプション機能、拡張コンポーネント、組み込み関数などは、攻撃の足がかり(アタックサーフェス)を減らすために削除または停止する。

4. 監査とインシデント検知(監視層)

「万が一」の事態に備え、兆候を察知し、後から追跡できるようにするための仕組み。

  • ⑫ データベースへアクセスするAPサーバなどのログをとる
    経由地となるアプリケーション側のアクセスログや認証ログを収集し、誰がいつシステムを利用したかを突き止められるようにする。
  • ⑬ データベースの操作ログをとる
    DB内部でのデータ定義(DDL)や重要データの参照・更新(DML)、管理者権限の行使などの監査ログ(Audit Log)を確実に記録・保管する。
  • ⑭ データベースへの不正アクセスを検知する
    短時間での大量のログイン失敗、不審な時間帯のアクセス、通常とは異なる大量のデータエクスポートなどの異常な挙動をリアルタイムで検知・通知する仕組みを導入する。

5. まとめ:チェックリストの活用

これらの14項目は、どれか一つが欠けてもそこがセキュリティの「穴」になり得る。新しくデータベース環境を設計・構築する際はもちろんのこと、定期的なシステム運用の監査タイミングにおいて、以下の観点で設定状況を見直すガイドラインとして活用してほしい。

【定期監査時のセルフチェック例】
□ ネットワークレベルで不要な通信が遮断されているか?
□ パッチ適用状況は最新ロードマップに追従できているか?
□ ユーザー権限は「最小限の原則」が本当に維持されているか?
□ 有事の際に追跡可能なログが欠けなく採取できているか?
PR