SQL・NoSQLのセキュリティ診断項目|設定・権限・暗号化を確認
顧客情報や売上データを保管するデータベースは、Webサイトや業務システムを支える重要な仕組みです。
安全性を確認するには、SQLインジェクションだけでなく、外部公開の設定、利用者やシステムの権限、暗号化、ログ、バックアップまで見る必要があります。
この記事では、SQL・NoSQLで共通して確認したいセキュリティ診断項目と、方式によって異なる入力処理の注意点をご紹介します。
SQL・NoSQLの違いと診断で見るポイント
データベースとは、顧客情報、購入履歴、社内データなどを整理して保存し、必要なときに検索・更新できる仕組みです。
SQLを使うリレーショナルデータベースは、図書館の本棚のように、表同士の関係を定義してデータを扱います。
NoSQLデータベースは、さまざまな形の箱を置ける倉庫のように、文書、キーと値などのデータ形式を柔軟に扱います。
| 方式 | データの扱い | 入力処理で確認する点 |
|---|---|---|
| SQL | 表と表の関係を定義して検索・更新する | 入力値をSQL文へ直接つなげず、プレースホルダーを使って値として渡しているか |
| NoSQL | 文書やキーと値などを柔軟に保存する | 入力値を検索条件の演算子やクエリ構造として解釈させず、型・項目・形式を制限しているか |
どちらも、利用者が送った値を命令の一部として扱うと、意図しない検索や更新につながります。
方式ごとにクエリの仕組みと安全なAPIが異なるため、利用中の製品・ライブラリに合った入力処理を確認してください。
被害につながる代表的な入り口
データベースの問題は、入力処理だけでなく、接続設定や返却情報の不備からも起こります。
- SQL・NoSQLインジェクション:ログイン画面や検索欄から送られた値が命令として解釈され、許可されていない検索・更新が実行される
- 外部公開の設定ミス:本来は社内ネットワークやアプリケーションサーバーからだけ接続するデータベースが、インターネットから直接到達できる
- 過剰な権限:Webアプリ用アカウントに管理者権限があり、侵害時に広い範囲の閲覧・変更・削除を許してしまう
- 情報の露出:エラー画面やログに、接続先、テーブル名、認証情報、個人情報などが表示される
SQLインジェクションの詳しい仕組みと修正方法は、SQLインジェクションの診断方法と具体的な対策で確認できます。
SQL・NoSQLのセキュリティ診断項目
次の6項目を、Webアプリケーション側とデータベース設定側に分けて確認します。
1. 入力値を安全に処理しているか
- SQLでは、文字列結合でSQL文を作らず、プリペアドステートメントやプレースホルダーを使う
- NoSQLでは、利用者の入力をクエリオブジェクトへそのまま渡さず、許可する項目・型・演算子を制限する
- 入力値の長さ、型、形式をサーバー側で検証し、想定外の値を拒否する
- 詳細なデータベースエラーを利用者の画面へ表示しない
画面で入力制限をしていても、通信内容を直接変更される可能性があります。
データベースへ渡す直前のサーバー側で、安全な値として処理できているかを確かめます。
2. データベースが外部へ直接公開されていないか
- データベースの接続ポートをインターネット全体へ公開していない
- 接続元をアプリケーションサーバーや管理用ネットワークに限定している
- 開発・検証用データベースにも本番と同じ公開制限を設けている
- 初期アカウント、不要な接続先、使っていない管理画面を無効化している
クラウド環境では、ファイアウォールだけでなく、セキュリティグループや公開アクセス設定も確認します。
具体例はクラウド設定ミスによる情報漏洩の対策チェックリストも参考にしてください。
3. 権限が必要最小限か
- Webアプリ用アカウントに、必要なデータと操作だけを許可している
- 閲覧、更新、バックアップ、管理を同じアカウントへ集中させていない
- 退職者や用途を終えたアカウント、長期間使っていない権限を削除している
- 管理者操作に多要素認証や接続元制限を設けている
たとえば、閲覧だけを行う機能に削除権限は不要です。
アプリケーションが侵害された場合でも、被害を許可済みの範囲へ抑えられる設計かを確認します。
4. 通信中と保存時のデータを暗号化しているか
- アプリケーションとデータベース間の通信にTLSを使用している
- ディスク、スナップショット、バックアップなど保存データを暗号化している
- 暗号鍵をソースコードやデータベースと同じ場所へ保存していない
- 鍵の利用権限、更新方法、失効手順を決めている
暗号化を有効にするだけでなく、暗号化されていない接続を拒否できるか、復元したバックアップにも同じ保護が引き継がれるかを確かめます。
5. 監査ログで異常を追跡できるか
- ログインの成功・失敗、権限変更、重要データの操作を記録している
- 誰が、いつ、どこから、何を実行したかを追跡できる
- ログにパスワード、秘密鍵、個人情報を必要以上に残していない
- ログの改ざん防止、保存期間、確認担当、異常時の通知を決めている
記録するだけでなく、不審な大量取得や管理者権限の変更を検知し、担当者が確認できる運用まで試します。
6. バックアップから復元できるか
- バックアップの対象、頻度、保存世代、保存先を決めている
- 本番環境と別の権限・保存先でバックアップを保護している
- 定期的な復元テストで、必要な時間内にデータを戻せることを確認している
- 復元後の整合性確認と、業務再開の判断基準を決めている
バックアップが存在しても、破損している、暗号鍵がない、復元手順が分からない状態では利用できません。
ランサムウェア対策とバックアップの復元手順を参考に、実際の復元まで確認してください。
診断を依頼する前に確認範囲を整理する
Webサイトから実施する診断では、入力画面やAPIを通じたSQL・NoSQLインジェクション、エラー表示などを確認できます。
『セキュリティー診断さん』のようなWebサイト向け診断を検討するときも、診断対象を先に整理することが大切です。
一方、データベースの外部公開、アカウント権限、保存時暗号化、監査ログ、バックアップは、クラウドやデータベースの設定情報へのアクセスが必要です。
診断を相談するときは、次の情報を伝え、どこまでが対象になるかを事前に確認しましょう。
- 対象のWebサイト、API、データベース製品と構成
- 本番・検証環境の区分と、実施してよい時間帯
- 診断用アカウントと確認してよい操作
- クラウド・データベース設定のレビューを含むか
- バックアップの復元テストや修正後の再診断を含むか
『セキュリティー診断さん』を利用する場合も、Webアプリケーション経由で確認できる範囲と、データベース設定の確認範囲を申し込み前に確かめてください。
6つの診断項目でデータベースを守ろう
SQL・NoSQLの安全性は、入力処理だけでは判断できません。
外部公開、最小権限、通信・保存時の暗号化、監査ログ、バックアップまで確認し、問題が見つかった項目は修正後に同じ条件で再確認しましょう。
また、専門的な視点であなたのウェブサイトをチェックしてもらうことは、安全への第一歩となります。
強力なパートナーとして、AI技術を活用した『セキュリティー診断さん』もおすすめです。
あなたの会社の大切な情報や、お客様との信頼関係を守るために、まずはウェブサイトの「健康状態」を知ることから始めてみませんか?
関連記事
同じテーマを深掘りしやすい記事を優先して表示しています。