Azure SQL Database Managed Instance の監査の概要

適用対象:Azure SQL Managed Instance

Azure SQL Managed Instance の監査では、データベース イベントを追跡し、Azure Storage アカウントの監査ログにイベントを書き込みます。 また、監査によって以下を行うことができます。

  • 規定コンプライアンスの維持、データベース活動の理解、およびビジネス上の懸念やセキュリティ違犯の疑いを示す差異や異常に対する洞察が容易になります。
  • コンプライアンスを保証するものではありませんが、標準へのコンプライアンスを強化します。 詳細については、Microsoft Azure トラスト センターを参照してください。ここから最新の SQL Managed Instance コンプライアンス証明書の一覧を入手できます。

重要

Azure SQL Database、Azure Synapse、Azure SQL Managed Instance の監査は、可用性とパフォーマンスのために最適化されています。 アクティビティ量が非常に多いか、またはネットワークの負荷が高いときに、Azure SQL Database、Azure Synapse、Azure SQL Managed Instance では、操作の続行を可能にするために、一部の監査イベントが記録されない場合があります。

Azure Storage に対するサーバー監査の設定

以下のセクションでは、マネージド インスタンスの監査の構成について説明します。

  1. Azure ポータルにアクセスします。

  2. 監査ログが格納される Azure Storage コンテナーを作成します。

    1. 監査ログを格納する Azure ストレージ アカウントに移動します。

      • リージョンをまたいで読み取り/書き込みが行われないように、マネージド インスタンスと同じリージョンのストレージ アカウントを使います。
      • ストレージ アカウントが仮想ネットワークまたはファイアウォールの内側にある場合は、「仮想ネットワークからアクセスの許可」を参照してください。
      • 保持期間を 0 (無制限のリテンション期間) から他の値に変更した場合、リテンション期間は、リテンション期間の値が変更された後に書き込まれたログにのみ適用されます (リテンション期間が無制限に設定されている間に書き込まれたログは、リテンション期間が有効になった後も保持されます)。
    2. ストレージ アカウントで [概要] に移動し、[BLOB] を選択します。

      Screenshot showing the Azure Blobs widget.

    3. 上部のメニューで、[+ コンテナー] を選択して新しいコンテナーを作成します。

      Screenshot showing the Create blob container icon.

    4. コンテナーの [名前] を指定し、[パブリック アクセス レベル][非公開] に設定して、[OK] を選択します。

      Screenshot showing the Create blob container configuration.

    重要

    サーバー レベルまたはデータベース レベルの監査イベントに対して不変のログ ストアを構成する顧客は、Azure Storage で提供される手順に従う必要があります。 (不変 BLOB ストレージを構成するときに、 [さらに追加を許可する] を選択していることを確認してください)。

  3. 監査ログ用のコンテナーを作成した後、それを監査ログ用のターゲットとして構成するには、T-SQL を使用する方法と SQL Server Management Studio (SSMS) UI を使用する方法の 2 つがあります。

    • T-SQL を使用して監査ログ用の BLOB ストレージを構成する:

      1. コンテナー リストで新しく作成されたコンテナーを選択し、[コンテナーのプロパティ] を選択します。

        Screenshot showing the Blob container properties button.

      2. コピー アイコンを選択してコンテナーの URL をコピーし、後で使えるように (メモ帳などに) URL を保存します。 コンテナー URL は、https://<StorageName>.blob.core.windows.net/<ContainerName> という形式になっている必要があります。

        Screenshot showing the Blob container copy URL.

      3. マネージド インスタンスの監査アクセス権をストレージ アカウントに付与するための Azure Storage の SAS トークンを生成します。

        • 前の手順でコンテナーを作成した Azure ストレージ アカウントに移動します。

        • [ストレージの設定] メニューの [Shared Access Signature] を選択します。

          Shared access signature icon in storage settings menu.

        • 次に示すように SAS を構成します。

          • 使用できるサービス:BLOB

          • 開始日: タイム ゾーンに関連する問題を回避するため、前日の日付を使用します

          • 終了日: この SAS トークンの有効期限が切れる日付を選びます

            Note

            監査の失敗を避けるため、トークンの期限が切れたら更新します。

          • [SAS の生成] を選択します。

            Screenshot showing the SAS configuration.

        • SAS トークンが下部に表示されます。 コピー アイコンを選択してトークンをコピーし、後で使えるように (メモ帳などに) 保存します。

          Screenshot showing how to copy SAS token.

          重要

          トークンの先頭にある疑問符 (?) を削除します。

      4. SQL Server Management Studio またはサポートされるその他のツールを介してマネージド インスタンスに接続します。

      5. 次の T-SQL ステートメントを実行し、前の手順で作成したコンテナー URL と SAS トークンを使って、新しい資格情報を作成します。

        CREATE CREDENTIAL [<container_url>]
        WITH IDENTITY='SHARED ACCESS SIGNATURE',
        SECRET = '<SAS KEY>'
        GO
        
      6. 次の T-SQL ステートメントを実行し、新しいサーバー監査を作成します (独自の監査名を選び、前の手順で作成したコンテナー URL を使います)。 RETENTION_DAYS を指定しないと、既定値の 0 (無制限のリテンション期間) になります。

        CREATE SERVER AUDIT [<your_audit_name>]
        TO URL (PATH ='<container_url>', RETENTION_DAYS = <integer>);
        GO
        
      7. サーバー監査仕様またはデータベース監査仕様を作成して続行します。

    • SQL Server Management Studio 18 以降のバージョンを使用して監査ログの BLOB ストレージを構成します。

      1. SQL Server Management Studio UI を使ってマネージド インスタンスに接続します。

      2. オブジェクト エクスプローラーのルート ノードを展開します。

      3. [セキュリティ] ノードを展開し、[監査] ノードを右クリックして [新しい監査] を選択します。

        Screenshot showing how to Expand security and audit node.

      4. [監査の出力先][URL] が選択されていることを確認し、[参照] を選択します。

        Screenshot showing how to Browse Azure Storage.

      5. (オプション) Azure アカウントにサインインします。

        Screenshot showing how to Sign in to Azure.

      6. ドロップダウンからサブスクリプション、ストレージ アカウント、および BLOB コンテナーを選択するか、[作成] を選択して独自のコンテナーを作成します。 完了したら、[OK] を選択します。

        Select Azure subscription, storage account, and blob container.

      7. [監査の作成] ダイアログで [OK] を選択します。

        Note

        SQL Server Management Studio の UI を使用して監査を作成すると、SAS キーを含むコンテナーの資格情報が自動的に作成されます。

      8. BLOB コンテナーを監査ログのターゲットとして構成した後、SQL Server の場合と同様に、サーバー監査仕様またはデータベース監査仕様を作成して有効にします。

    • サーバー監査仕様の作成 T-SQL ガイド

    • データベース監査仕様の作成 T-SQL ガイド

  4. 手順 3 で作成したサーバー監査を有効にします。

    ALTER SERVER AUDIT [<your_audit_name>]
    WITH (STATE = ON);
    GO
    

以下の追加情報をご覧ください。

Microsoft サポート操作の監査

SQL Managed Instance に対する Microsoft サポート操作の監査では、サポート リクエスト時に Microsoft サポートのエンジニアがサーバーにアクセスする必要がある場合に、彼らの操作を監査することができます。 監査に伴い、この機能を使用することで、従業員の透明性が増し、異常検出、トレンドの視覚化、データ損失防止が可能になります。

Microsoft サポートの操作の監査を有効にするには、SQL Managed Instance の [セキュリティ]>[監査][監査の作成] で、[Microsoft サポート操作] を選択します。

Screenshot showing the Create audit icon.

Note

Microsoft 操作を監査するには、別のサーバー監査を作成する必要があります。 既存の監査に対してこのチェック ボックスをオンにすると、監査が上書きされ、ログ サポート操作のみが上書きされます。

Event Hubs または Azure Monitor ログに対するサーバー監査の設定

マネージド インスタンスからの監査ログは、Azure Event Hubs または Azure Monitor ログに送信できます。 このセクションでは、この動作の構成方法について説明します。

  1. Azure portal 内でマネージド インスタンスに移動します。

  2. [診断設定] を選択します。

  3. [診断を有効にする] を選択します。 診断が既に有効になっている場合は、 [+Add diagnostic setting](+ 診断設定を追加する) が代わりに表示されます。

  4. ログのリストで [SQLSecurityAuditEvents] を選択します。

  5. Microsoft サポート操作を構成する場合は、ログのリストで [DevOps 操作の監査ログ] を選択します。

  6. 監査イベントの宛先を選択します (イベント ハブ、Azure Monitor ログ、またはその両方)。 必要なパラメーター (Log Analytics ワークスペースなど) をターゲットごとに構成します。

  7. [保存] を選択します。

    Screenshot showing how to configure diagnostic settings.

  8. SQL Server Management Studio (SSMS) またはサポートされるその他のクライアントを使用して、マネージド インスタンスに接続します。

  9. サーバー監査を作成するために次の T-SQL ステートメントを実行します。

    CREATE SERVER AUDIT [<your_audit_name>] TO EXTERNAL_MONITOR;
    GO
    
  10. SQL Server の場合と同様に、サーバー監査仕様またはデータベース監査仕様を作成して有効にします。

  11. 手順 8 で作成したサーバー監査を有効にします。

    ALTER SERVER AUDIT [<your_audit_name>]
    WITH (STATE = ON);
    GO
    

T-SQL を使用して監査を設定する

-- Create audit without OPERATOR_AUDIT - Will audit standard SQL Audit events
USE [master];
GO

CREATE SERVER AUDIT testingauditnodevops TO EXTERNAL_MONITOR;
GO

CREATE SERVER AUDIT SPECIFICATION testingaudit_Specification_nodevops
FOR SERVER AUDIT testingauditnodevops ADD (SUCCESSFUL_LOGIN_GROUP),
    ADD (BATCH_COMPLETED_GROUP),
    ADD (FAILED_LOGIN_GROUP)
WITH (STATE = ON);
GO

ALTER SERVER AUDIT testingauditnodevops
    WITH (STATE = ON);
GO

-- Create separate audit without OPERATOR_AUDIT ON - Will audit Microsoft Support Operations
USE [master]

CREATE SERVER AUDIT testingauditdevops TO EXTERNAL_MONITOR
    WITH (OPERATOR_AUDIT = ON);
GO

CREATE SERVER AUDIT SPECIFICATION testingaudit_Specification_devops
FOR SERVER AUDIT testingauditdevops ADD (SUCCESSFUL_LOGIN_GROUP),
    ADD (BATCH_COMPLETED_GROUP),
    ADD (FAILED_LOGIN_GROUP)
WITH (STATE = ON);
GO

ALTER SERVER AUDIT testingauditdevops
    WITH (STATE = ON);
GO

監査ログの使用

Azure Storage に格納されたログの使用

BLOB 監査ログを表示するには、いくつかの方法が使用できます。

  • システム関数 sys.fn_get_audit_file (T-SQL) を使って、表形式で監査ログ データを返します。 この関数の使用方法の詳細については、sys.fn_get_audit_file のドキュメントを参照してください。

  • Azure Storage Explorerなどのツールを使用して監査ログを調査できます。 Azure Storage では、監査ログは、監査ログを格納するために定義されたコンテナー内に BLOB ファイルのコレクションとして保存されます。 ストレージ フォルダーの階層、名前付け規則、およびログ形式の詳細については、BLOB 監査ログ形式のリファレンスに関する記事を参照してください。

  • 監査ログの使い方の完全な一覧については、Azure SQL Database 監査の使用に関するページをご覧ください。

Event Hubs に格納されているログの使用

Event Hubs の監査ログ データを使用するには、イベントを処理し、そのイベントをターゲットに書き込むようにストリームを設定する必要があります。 詳細については、Azure Event Hubs のドキュメントをご覧ください。

Azure Monitor ログに格納されているログの使用および分析

監査ログが Azure Monitor ログに書き込まれると、それらの監査ログが Log Analytics ワークスペースで使用可能になります。Log Analytics ワークスペースでは、監査データに対して高度な検索を実行できます。 最初に、Log Analytics ワークスペースに移動します。 [全般] セクションで、[ログ] を選択し、基本的なクエリ (例: search "SQLSecurityAuditEvents") を入力して監査ログを表示します。

Azure Monitor ログにより、統合された検索とカスタム ダッシュボードを使用してオペレーション インサイトがリアルタイムで得られるため、ワークロードやサーバー全体に散在する何百万件のレコードもすぐに分析できます。 Azure Monitor ログ検索言語とコマンドに関する詳細については、Azure Monitor ログ検索リファレンスに関するページを参照してください。

注意

この記事は最近、Log Analytics ではなく Azure Monitor ログという用語を使うように更新されました。 ログ データは引き続き Log Analytics ワークスペースに格納され、同じ Log Analytics サービスによって収集されて分析されます。 Azure Monitor のログの役割をより適切に反映させるために、用語を更新しています。 詳しくは、Azure Monitor の用語の変更に関するページをご覧ください。

Azure SQL Managed Instance のデータベースと SQL Server のデータベースでの監査の相違点

Azure SQL Managed Instance のデータベースと SQL Server のデータベースにおける監査の主な相違点は、次のとおりです。

  • Azure SQL Managed Instance では、監査はサーバー レベルで機能し、Azure BLOB Storage に .xel ログ ファイルが保存されます。
  • SQL Server では、監査はサーバー レベルで機能しますが、イベントはファイル システムと Windows イベント ログに保存されます。

マネージド インスタンスの XEvent 監査では、Azure Blob Storage のターゲットがサポートされます。 ファイル ログと Windows ログはサポートされません

Azure Blob Storage を監査するための CREATE AUDIT 構文の主な相違点は次のとおりです。

  • 新しい TO URL 構文が用意されています。この構文を使って、.xel ファイルを配置する Azure Blob Storage コンテナーの URL を指定できます。
  • Event Hubs および Azure Monitor ログ ターゲットを有効にするための新しい構文 TO EXTERNAL MONITOR が用意されています。
  • Azure SQL Managed Instance は Windows ファイル共有にアクセスできないため、TO FILE 構文はサポートされていません
  • Shutdown オプションはサポートされていません
  • queue_delay の値として 0 はサポートされていません

次のステップ

  • 監査ログの使い方の完全な一覧については、Azure SQL Database 監査の使用に関するページをご覧ください。
  • 標準コンプライアンスをサポートする Azure プログラムの詳細については、Azure Trust Centerをご覧ください。ここから最新のコンプライアンス証明書の一覧を入手できます。