適用対象:Azure SQL Managed Instance
この記事では、Azure SQL Managed Instance で SQL Server Audit を使用して
Azure Storageへのインスタンス監査を設定する
次のセクションでは、SQL マネージド インスタンスでの監査の構成について説明します。
Azure ポータルに移動します。
監査ログが格納される Azure Storage container を作成します。
監査ログを格納するAzure ストレージ アカウントに移動します。
- リージョン間の読み取り/書き込みを回避できるように、SQL マネージド インスタンスと同じリージョンのストレージ アカウントを使用します。
- ストレージアカウントが仮想ネットワークまたはファイアウォールの背後にある場合は、仮想ネットワークからのアクセス許可を参照してください。
- リテンション期間を 0 (無制限のリテンション期間) から他の値に変更した場合、リテンション期間は、リテンション期間の値が変更された後に書き込まれたログにのみ適用されます。 リテンション期間が 無制限 に設定された期間中に書き込まれたログは、保持が有効になった後も保持されます。
ストレージ アカウントで [概要] に移動し、[BLOB] を選択します。
上部のメニューで、[+ コンテナー] を選択して新しいコンテナーを作成します。
コンテナーの [名前] を指定し、[パブリック アクセス レベル] を [非公開] に設定して、[OK] を選択します。
重要
サーバー レベルまたはデータベース レベルの監査イベントに対して変更できないログストアを構成する場合は、Azure Storageが提供する指示に従う必要があります。 (不変の BLOB ストレージを構成する際には、[追加のアペンドを許可] を選択してください)。
監査ログのコンテナーを作成した後、監査ログのターゲットとして構成するには、
T-SQL SQL Server Management Studio (SSMS) UI を使用する方法の 2 つがあります 。
T-SQL を使用して監査ログ用の BLOB ストレージを構成する:
コンテナー リストで新しく作成されたコンテナーを選択し、[コンテナーのプロパティ] を選択します。
コピー アイコンを選択してコンテナーの URL をコピーし、後で使えるように (メモ帳などに) URL を保存します。 コンテナー URL は、
https://<StorageName>.blob.core.windows.net/<ContainerName>という形式になっている必要があります。
Azure Storage SAS トークンを生成して、SQL マネージド インスタンスにストレージ アカウントへのアクセス権を付与します。
前の手順でコンテナーを作成したAzureストレージ アカウントに移動します。
[ストレージの設定] メニューの [Shared Access Signature] を選択します。
次に示すように SAS を構成します。
使用できるサービス:BLOB
開始日: タイム ゾーンに関連する問題を回避するため、前日の日付を使用します
終了日: この SAS トークンの有効期限が切れる日付を選びます
注意
監査エラーを回避するには、有効期限が切れたときにトークンを更新します。
[SAS の生成] を選択します。
SAS トークンが下部に表示されます。 コピー アイコンを選択してトークンをコピーし、後で使用するために (メモ帳など) 保存します。
重要
トークンの先頭にある疑問符 (
?) を削除します。
SQL Server Management Studioまたはその他のサポートされているツールを使用して、SQL マネージド インスタンスに接続します。
次の T-SQL ステートメントを実行し、前の手順で作成したコンテナー URL と SAS トークンを使って、新しい資格情報を作成します。
CREATE CREDENTIAL [<container_url>] WITH IDENTITY='SHARED ACCESS SIGNATURE', SECRET = '<SAS KEY>' GO次の T-SQL ステートメントを実行し、新しいサーバー監査を作成します (独自の監査名を選び、前の手順で作成したコンテナー URL を使います)。
RETENTION_DAYSを指定しないと、既定値の 0 (無制限のリテンション期間) になります。CREATE SERVER AUDIT [<your_audit_name>] TO URL (PATH ='<container_url>', RETENTION_DAYS = <integer>); GOサーバー監査仕様またはデータベース監査仕様を作成して続行します。
SQL Server Management Studio 18 以降のバージョンを使用して監査ログ用の BLOB ストレージを構成する:
SQL Server Management Studio UI を使用して SQL マネージド インスタンスに接続します。
Object Explorerのルート ノートを展開します。
[セキュリティ] ノードを展開し、[監査] ノードを右クリックして [新しい監査] を選択します。
[監査の出力先] で [URL] が選択されていることを確認し、[参照] を選択します。
(省略可能)Azure アカウントにサインインします。
ドロップダウンからサブスクリプション、ストレージ アカウント、BLOB コンテナーを選択するか、[作成] を選択して独自のコンテナーを 作成します。 完了したら、[ OK] を選択します。
Azure サブスクリプション、ストレージ アカウント、および BLOB コンテナーを選択します。
[監査の作成] ダイアログで [OK] を選択します。
注意
SQL Server Management Studio UI を使用して監査を作成すると、SAS キーを持つコンテナーへの資格情報が自動的に作成されます。
監査ログのターゲットとして BLOB コンテナーを構成した後、SQL Serverの場合と同様に、サーバー監査仕様またはデータベース監査仕様を作成して有効にします。
サーバー監査を有効にするには、次の T-SQL ステートメントを使用します。
ALTER SERVER AUDIT [<your_audit_name>]
WITH (STATE = ON);
GO
以下の追加情報をご覧ください。
Microsoft Support操作の監査
SQL Managed InstanceのMicrosoft Support操作を監査すると、サポート要求中にサーバーにアクセスする必要があるときに、Microsoft supportエンジニアの操作を監査できます。 監査に伴い、この機能を使用することで、従業員の透明性が増し、異常検出、トレンドの視覚化、データ損失防止が可能になります。
Microsoft Support操作の監査を有効にするには、SQL Manage Instance の Create Audit の下にある Security>Audit に移動し、Microsoft Support操作 を選択します。
注意
Microsoft操作を監査するには、別のサーバー監査を作成する必要があります。 既存の監査に対してこのチェック ボックスを有効にすると、監査が上書きされ、サポート操作がログに記録されます。
Event Hubs または Azure Monitor ログへのサーバーの監査を設定する
SQL マネージド インスタンスからの監査ログは、Azure Event HubsまたはAzure Monitorログに送信できます。 このセクションでは、この構成を行う方法について説明します。
Azure ポータルで SQL マネージド インスタンスに移動します。
[診断設定] を選択します。
[診断を有効にする] を選択します。 診断が既に有効になっている場合は、 代わりに +[診断設定の追加] を使用できます。
ログのリストで [SQLSecurityAuditEvents] を選択します。
Microsoft のサポート操作を構成する場合は、ログの一覧で DevOps 操作の監査ログ を選択します。
監査イベントの送信先 (Event Hubs、Azure Monitor ログ、またはその両方) を選択します。 各ターゲットに必要なパラメーター (ワークスペースLog Analyticsなど) を構成します。
[保存] を選択します。
SQL Server Management Studio (SSMS) またはその他のサポートされているクライアントを使用して、SQL マネージド インスタンスに接続します。
サーバー監査を作成するために次の T-SQL ステートメントを実行します。
CREATE SERVER AUDIT [<your_audit_name>] TO EXTERNAL_MONITOR; GOSQL Serverの場合と同様に、サーバー監査仕様またはデータベース監査仕様を作成して有効にします。
手順 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) を使用して、監査ログ データを表形式で返すことができます。
監査ログを調べるには、Azure Storage Explorer などのツールを使用します。 Azure Storageでは、監査ログは、監査ログを格納するために定義されたコンテナー内の BLOB ファイルのコレクションとして保存されます。 ストレージ フォルダーの階層、名前付け規則、およびログ形式の詳細については、BLOB 監査ログ形式のリファレンスに関する記事を参照してください。
監査ログの使用方法の完全な一覧については、「get started with Azure SQL Database auditingを参照してください。
Event Hubs に格納されているログの使用
Event Hubs から監査ログデータを取得するには、イベントを取り込みターゲットに書き込むためのストリームを設定する必要があります。 詳細については、Azure Event Hubsドキュメントを参照してください。
Azure Monitor ログに保存されたログを取り込んで分析する
監査ログがAzure Monitorログに書き込まれる場合は、Log Analytics ワークスペースで使用できます。監査データに対して高度な検索を実行できます。 開始点として、Log Analytics ワークスペースに移動します。
[全般] セクションで、[ログ] を選択し、基本的なクエリ (例: search "SQLSecurityAuditEvents") を入力して監査ログを表示します。
Azure Monitor ログを使用すると、統合された検索とカスタム ダッシュボードを使用してリアルタイムの運用上の分析情報を取得し、すべてのワークロードとサーバーで数百万件のレコードを簡単に分析できます。 ログ検索言語とコマンドAzure Monitorの詳細については、Azure Monitor ログ検索リファレンスを参照してください。