SQL Server Auditについての理解を深める

デジタル化によって、組織が保管しているデータにユーザーが容易にアクセスできる状況になりました。しかし、ハッカーから機密データを保護する取り組みは複雑化しています。FBIの「2021年インターネット犯罪報告書」によると、サイバー犯罪に関する苦情は過去5年間で約300%増加しました。サイバー犯罪の急増は、リモートワークとクラウド導入の普及に起因しており、ハッカーは不適切な構成や保護されていないデータベースを悪用して、データを盗取しています。多くの企業では、Microsoft SQL Serverのデータベースに顧客の機密データを格納しています。Microsoft SQL Serverは、データベース管理システムのカテゴリーで19.15%の市場シェアを占めており、約180,106社が利用しています。

ITセキュリティ担当者は、重要なデータの完全性と機密性が侵害されないように、SQL Serverのすべてのアクティビティを定期的に監視・監査する必要があります。しかし、手動による監視は、非常に手間がかかります。そこで、ログの監査を効率化するために、MicrosoftはSQL Server Auditを提供しています。SQL Server Auditを使用することで、GDPR、HIPAA、SOX、PCI DSSといったデータ保護ポリシーにも準拠できます。

SQL Server監査とは

SQL Server監査では、潜在的な脅威や脆弱性を検出するために、SQL Serverで発生するすべてのアクティビティを追跡・確認します。SQL Serverで監査可能なアクションは、「監査アクショングループ」として分類されます。サーバーレベルの監視アクショングループのイベント(AUDIT_CHANGE_GROUP、APPLICATION_ROLE_CHANGE_PASSWORD_GROUPなど)は、「サーバー監査仕様」に分類されます。データベースレベルの監査アクショングループのイベント(DATABASE_OPERATION_GROUP、DATABASE_LOGON_GROUPなど)は、「データベース監査仕様」に分類されます。SQL Server Auditのレポート結果は、イベントログまたはイベントファイルに格納されます。

つまり、SQL Server Auditを使用すると、サーバー設定のすべての変更を監視・記録できます。さらに、すべてのサーバーアクティビティ(データベースの特定のテーブルで、誰がどの値を変更したかなど)を簡単に追跡可能です。疑わしいログイベントを分析することによって、ネットワークへの不正アクセスを特定できます。

監査の種類

SQL Server監査には、2種類あります。

  • サーバーレベルの監査
  • データベースレベルの監査

SQL Server監査の機能

SQL Server監査では、監査対象の指定、サーバー構成とスキーマの変更、データ変更の追跡が可能です。SQL Server監査で使用できる機能は、以下のとおりです。

  • C2 audit(C2監査)
  • Common Criteria compliance(共通基準コンプライアンス)
  • Login auditing(ログイン監査)
  • SQL Server Audit(SQL Server監査)
  • SQL Trace(SQLトレース)
  • Extended Events(拡張イベント)
  • Change data capture(データ変更キャプチャ)
  • DML、DDL、ログイントリガー

組織のニーズに応じて、上記のいずれかの機能を選ぶか、いくつかの機能を組み合わせて使用できます。その中でも、「C2 audit(C2監査)」と「Common Criteria compliance(共通基準コンプライアンス)」は、SQL監査で広く使用されている国際基準です。「C2 audit(C2監査)」は、SQL Serverの外の情報(誰がどのデータベースでイベントをトリガーしたか、サーバー名、イベントタイプ、結果など)を記録します。「Common Criteria compliance(共通基準コンプライアンス)」では、残余情報の保護、ログイン統計の表示、列レベルのGRANT(許可)よりテーブルレベルのDENY(拒否)を優先する設定が可能です。

「Login auditing(ログイン監査)」は、SQL Serverのログインアクティビティを監視し、失敗したログインと成功したログインの両方をエラーログに記録します。「SQL Trace(SQLトレース)」は、ユーザーアクティビティを収集するイベント駆動型の監視ツールです。「Change data capture(データ変更キャプチャ)」は、サーバーのテーブルに対する挿入、更新、削除のすべてのアクティビティを記録します。「DML、DDL、ログイントリガー」は、データベース操作の監査と制御に使用します。

SQL Server監査の実施方法

SQL Server監査の構成要素

  • SQL Server Auditオブジェクト
  • 監査仕様
  • ターゲット

SQL Server Auditオブジェクトは、監査対象のSQL Serverインスタンス内で作成されるオブジェクトです。サーバーレベルとデータベースレベルでイベントを監視するターゲットを定義します。1つのSQL Serverインスタンスに複数の監査を定義できます。各監査では、監査情報が別々のターゲットファイルに格納されます。宛先の種類(バイナリファイル、セキュリティプロトコル、アプリケーションプロトコル)とパスを定義します。監査オブジェクトでは、記録する対象を指定しません。つまり、イベントの種類、オブジェクト、データベースを監査オブジェクトで指定することはありません。それでは、SQL Server Auditイベントを作成してみましょう。

SQL Server監査の作成

  • 最初に監査を作成し、ターゲットを定義します。SQL Server監査は、2通りの方法で作成できます。
    • SQL Server Management Studio(GUI機能)を使用します:[オブジェクト エクスプローラー]パネルで[セキュリティ]フォルダを展開します。[監査]を右クリックし、[新しい監査]を選択します。
    • Transact-SQLコマンドを使用する
    • CREATE SERVER AUDIT [ZohoAudit_DDL_Access] TO FILE
      (
      FILEPATH = N'C:\\TestAudits\\'
      ,MAXSIZE = 10 MB
      )
      WITH
      (
      QUEUE_DELAY = 1000
      ,ON_FAILURE = CONTINUE
      )
      ALTER SERVER AUDIT [ZohoAudit_DDL_Access]WITH (STATE = ON)
      GO

  • 2種類の監査仕様(サーバー監査仕様、データベース監査仕様)のいずれかを選択します。
  • 監査仕様を有効にします。
  • Windowsイベントビューアとログファイルビューアを使用して、監査イベントを確認します。

SQL Server Auditオブジェクトを作成するには

  1. SQL Server Management Studioを開きます。
  2. SQL Server監査を作成するために[監査の作成]をクリックして、[監査の作成]ダイアログボックスを開きます。
  3. [監査名]フィールドに監査の名前を入力します。
  4. [監査の出力先]を選択します(推奨されるのは[ファイル]です)。
  5. 監査の[ファイル パス]を選択します。
  6. [ファイルの最大サイズ]を「1000」に設定します。
  7. [ディスク領域を予約する]チェックボックスをオンにします。

監査ログを表示するには

  • SQL Server Management Studioを開きます。
  • [オブジェクト エクスプローラー]パネルで[セキュリティ]フォルダを展開します。
  • [セキュリティ]フォルダ内の監査オブジェクトを右クリックし、監査ログレポートを表示します。

SQL Server Auditに組み込まれているログファイルビューアを使用すると、ログエントリのカスタマイズとフィルタリングを簡単に実施できます。デフォルトでは、SQL Serverの監査ログファイルは、人が読むには適していないSQLAUDIT形式で格納されます。しかし、比較的読みやすいLOGファイル形式での保存・エクスポートも可能です。

データ漏洩のリスクを軽減する最善策は、SQL Serverデータベースに対する積極的な監査です。SQL Server Auditは、サーバーで行われた重要な変更について監視、監査、通知、レポート生成を行うだけでなく、SQL Serverにおけるセキュリティ状態の全体像を明らかにします。SQL Server Auditの強力な機能を活用すれば、IT管理者は、企業全体でネットワークデータセキュリティ強化の対策を講じることができます。この記事が、SQL Server監査の実施と、ビジネスに不可欠な情報の保護に役立つことを願っています。