演習 - データベースの監視

完了

あなたは会社のセキュリティ管理者から警告を受け取ったとします。 ネットワークでセキュリティ侵害の可能性が検出されました。 未承認の個人が悪意のあるアクティビティを通してデータベースにアクセスした可能性があります。 これはどのような方法で追跡しますか。

あなたは疑わしいアクティビティがないかデータベースをアクティブに監視する必要があると判断します。 データベース内で起きていることを可視化するだけでなく、悪意のあるアクティビティの発生を防ぐためには何ができるでしょうか?

Azure SQL Database には、データベース内で起きていることを追跡するのに役立つ組み込みの機能があります。 これは監視を行い、悪意のあるアクティビティを特定した場合に警告を行うことができます。

Azure SQL Database 監査

監査を有効にすることで、後で検査するか、自動化されたツールに分析させる目的で、データベース上で行われる操作が保存されます。 監査はコンプライアンス管理や、データベースの使用状況の把握にも使用されます。 Azure SQL データベースで Azure 脅威検出を使用する場合にも、監査が必要です。

SQL Database 監査を使用して、以下を行うことができます。

  • 保持 。 監査するデータベース活動のカテゴリを定義できます。
  • レポート 。 事前に構成したレポートとダッシュボードを使用して、活動とイベントのレポートをすぐに使用できます。
  • 分析 。 疑わしいイベント、異常な活動、および傾向を発見できます。

監査ログは、指定した Azure Blob Storage アカウント内にある追加 BLOB に書き込まれます。 監査ポリシーはサーバー レベルまたはデータベース レベルで適用できます。 有効にすると、Azure portal を使用してログを表示したり、Log Analytics または Event Hubs に送信してさらに処理したり、分析したりできます。

実際の監査

ベスト プラクティスとして、次の場合を除き、サーバー BLOB 監査とデータベース BLOB 監査の両方を有効にすることは避けてください。

  • 特定のデータベースに対して異なるストレージ アカウントまたはリテンション期間を使用する場合。
  • 特定のデータベースの監査対象とするイベントの種類またはカテゴリが、このサーバー上の他のデータベースの管理対象と異なる場合。 たとえば、監査が必要なテーブルの挿入があるが、それが特定のデータベースに対してのみである場合など。

それ以外では、サーバーレベル BLOB 監査のみを有効にし、すべてのデータベースのデータベースレベル監査を無効のままにすることをお勧めします。

以下の手順に従ってシステムで監査を設定します。

  1. サンドボックスをアクティブ化したときと同じアカウントを使用して、Azure portal にサインインします。

  2. ポータルの一番上にある検索バーで、ご利用のサーバーを検索して、このサーバーをポータルで選択します。 NNNNN を自分のサーバー名の番号に置き換えます。

  3. 左側のメニュー ウィンドウの [セキュリティ] で、[監査] を選択します。

  4. 監査は既定では無効になっています。 データベース サーバーで有効にするには、[Azure SQL 監査を有効にする][オン] に切り替えます。

  5. [オン] ボタンを選択した後で、[ストレージ] チェックボックスをオンにします。

  6. サブスクリプションを選択します。

  7. 監査を保存する既存のストレージ アカウントを選択するか、新しいストレージ アカウントを作成することができます。 ストレージ アカウントは、サーバーと同じリージョンを使用するように構成する必要があります。

    この場合、新しいストレージ アカウントを定義します。 [ストレージ アカウント] で、[新規作成] を選択します。 [ストレージ アカウントの作成] ペインが表示されます。 ストレージ アカウントに <server-name>auditing という名前を付けて、<server-name> をご利用の論理サーバー名に置き換えます。

  8. 残りのオプションは既定値のままにし、[OK] を選択します。 [ストレージの設定] ウィンドウに戻り、既定値のままで [OK] を選択します。

  9. [保存] を選択して変更内容を保存し、データベース サーバーで監査を有効にします。

次に、監査レコードをいくつか生成し、何が期待できるかを確認します。

  1. ApplicationUser ユーザーとしてデータベースにサインインし直します。

    sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U 'ApplicationUser' -P '[password]' -N -l 30
    
  2. 次のクエリを実行します。

    SELECT FirstName, LastName, EmailAddress, Phone FROM SalesLT.Customer;
    GO
    
  3. Azure portal に戻り、SQL サーバーで、左側のメニュー ペインの [SQL データベース] を選択し、marketplace データベースを選択します。

  4. [マーケットプレース] データベースの左側のメニュー ウィンドウにある [セキュリティ][監査] を選択します。

  5. 監査をサーバーレベルで有効にしたので、ここでそれが有効になっていることを確認できるはずです。 一番上にあるメニュー バーで [監査ログの表示] を選択し、ログを表示します。

  6. [プリンシパル名][ApplicationUser][イベントの種類][バッチ完了] の監査レコードがいくつか表示されるはずです。 そのうちの 1 つに、実行したクエリの詳細が含まれているはずです。 認証の失敗や成功など、その他のイベントも表示されるはずです。 レコードを選択すると、イベントの完全詳細が表示されます。

監査ログ内のイベントの例を示すスクリーンショット。

以上の手順は、データベース サーバーのレベルで監査を構成します。 監査は、サーバー上のすべてのデータベースに適用されます。 データベースのレベルで監査を構成することもできます。

これらのログを使用してデータベースのセキュリティを強化する別の機能を確認します。

Azure SQL Database 向け Advanced Data Security

Advanced Data Security (ADS) により、データの探索と分類、脆弱性の評価、Advanced Threat Protection などの高度な SQL セキュリティ機能のセットが提供されます。

  • [Data Discovery & Classification] (データの検出と分類) (現在プレビュー段階) は、データベース内の機密データの検出、分類、ラベル付け、保護を行うために Azure SQL Database に組み込まれた機能を提供します。 データベースの分類の状態を把握し、データベース内やその境界を越えて機密データへのアクセスを追跡するために使用できます。
  • 脆弱性評価は、データベースの潜在的な脆弱性を検出、追跡、および修正するのに役立ち、構成が容易なサービスです。 セキュリティの状態を表示することができ、セキュリティの問題を解決して、データベースのセキュリティを強化するために実行可能な手順が含まれます。
  • Advanced Threat Protection では、データベースにアクセスしたりデータベースを悪用したりしようとする、通常とは異なる、害を及ぼす可能性のある試行を示す異常なアクティビティが検出されます。 データベースでの不審なアクティビティを継続的に監視し、潜在的な脆弱性、SQL インジェクション攻撃、および異常なデータベース アクセス パターンが見つかるとすぐにセキュリティ通知を提供します。 Advanced Threat Protection アラートでは、不審なアクティビティの詳細と、脅威の調査や危険性の軽減のために推奨される対処方法が提供されます。

セットアップと構成

データベースで ADS を有効にします。 ADS はサーバーレベル設定であるため、そこから開始します。

  1. Azure portal に戻り、SQL サーバーに移動します。 ページの一番上にある検索バーで、_<server-name> を検索してから、そのサーバーを選択します。

  2. 左側のメニュー ウィンドウの [セキュリティ] で、[Microsoft Defender for Cloud] を選択します。

  3. [Microsoft Defender for SQL を有効にする] を選択します。

  4. [サブスクリプション レベルで有効] というメッセージの横にある [構成] を選択します。 [サーバーの設定] ペインが表示されます。

  5. [定期的な反復スキャン] は、既定でオンになっています。 週単位のスキャンがトリガーされると、スキャン結果の概要が、指定したメール アドレスに送信されます。 この場合、これをオフにします。 サービス管理者に脅威が送信されるように、[管理者とサブスクリプションの所有者にも電子メール通知を送信する] が既定で有効になっています。 上部にある [保存] を選択して、設定を保存します。

  6. [Advanced Threat Protection 設定] で、[Add your contact details] (連絡先の詳細の追加) を選択して、Defender for Cloud の [メール通知] ペインを開きます。 ここではオプションとして、脆弱性評価と Advanced Threat Protection の両方の通知メールの送付先を、セミコロンで区切ったメール アドレスのリストとして定義できます。 サービス管理者に脅威が送信されるように、[管理者とサブスクリプションの所有者にも電子メール通知を送信する] が既定で有効になっています。

  7. [監査を有効にする] を選択して、[Azure SQL 監査] をオンにすることもできます。

  8. [保存] をクリックして変更を適用します。

脆弱性が検出されると、メール通知が届きます。 メールは、発生した事象と実行すべきアクションの概要を示します。

Microsoft Defender for Cloud からの通知警告の例を示すスクリーンショット。

データの検出と分類

  1. マーケットプレース データベースに移動します。 Azure portal の一番上にある検索バーで marketplace を検索してから、そのデータベースを選択します。

  2. 左側のメニュー ペインで、[セキュリティ][Data Discovery & Classification] (データの検出と分類) を選びます。

[分類] タブには、テーブル内の列で保護が必要なものが表示されます。 一部の列が、機密情報を含んでいたり、異なる国や地域では機密に分類されたりする場合があります。

[データの検出と分類] ペインの [分類] タブを示すスクリーンショット。

保護を構成することが必要な列がある場合、メッセージが表示されます。 このメッセージは、"15 個の列で機密に関する推奨事項が見つかりました" のような形式となります。 テキストを選択して推奨事項を表示できます。

列の横にあるチェックマークを選択するか、またはスキーマ ヘッダーの左側にあるチェックボックスをオンにして、機密扱いにする列を選択します。 機密に関する推奨事項を適用するには、[選択した推奨事項を受け入れます] ボタンを選択します。

次に、これらの列を編集した後、データベースの情報の種類および機密ラベルを定義します。 [保存] を選択して変更を保存します。

推奨事項を適切に処理すれば、アクティブな推奨事項は一覧に表示されなくなるはずです。

セキュリティの脆弱性

左側のメニュー ウィンドウの [セキュリティ] で、[Microsoft Defender for Cloud] を選択します。

[推奨事項] セクションは、データベースの構成上の問題とそれらに関連したリスクのリストを示します。

推奨事項を選択します。 推奨事項ペインには、リスク レベル、該当するデータベース、脆弱性の説明、問題解決のための推奨される修復などの詳細が表示されます。 修正を適用して 1 つまたは複数の問題を解決します。 必ず、すべての脆弱性に対処してください。

セキュリティ インシデントとアラート

このセクションには、検出された脅威の一覧が表示されます。

問題があれば、推奨事項に従って対処します。 SQL インジェクションの警告などの問題については、クエリを確認し、コード内のどこでそのクエリが実行されているかにさかのぼって作業することができます。 見つかったら、問題がなくなるようにコードを記述し直す必要があります。