チュートリアル: Azure Database for MySQL - フレキシブル サーバーを使用して監査ログを構成する
Azure Database for MySQL フレキシブル サーバーを使用して監査ログを構成することができます。 監査ログは、接続、管理、データ定義言語 (DDL)、データ操作言語 (DML) のイベントなどのデータベースレベルのアクティビティを追跡するために使用できます。 これらの種類のログは、通常、コンプライアンスのために使用されます。 データベース監査は通常、次のために使用されます。
- 特定のスキーマ、テーブル、または行で発生する、または特定のコンテンツに影響を与えるすべてのアクションについて説明する。
- ユーザー (またはその他) の説明責任に基づいて、不適切な操作を行うのを防ぐ。
- 疑わしいアクティビティを調査する。
- 特定のデータベース アクティビティに関するデータを監視し収集する。
この記事では、MySQL 監査ログ、Log Analytics ツール、またはブック テンプレートを使用して Azure Database for MySQL フレキシブル サーバーの監査情報を視覚化する方法について説明します。
このチュートリアルで学習する内容は次のとおりです。
- Azure portal または Azure CLI を使用して監査を構成する
- 診断を設定する
- Log Analytics を使用して監査ログを表示する
- ブックを使用して監査ログを表示する
前提条件
Azure portal を使用して監査を構成する
Azure portal にサインインします。
フレキシブル サーバー インスタンスを選択します。
左側のペインの [設定] の下で [サーバー パラメーター] を選択します。
audit_log_enabled パラメーターで、 [ON](オン) を選択します。
audit_log_events パラメーターのドロップダウン リストで、ログに記録するイベントの種類を選択します。
audit_log_exclude_users およびaudit_log_include_users パラメーターについては、MySQL ユーザー名を入力することによって、ログに含めたりログから除外したりする MySQL ユーザーを指定します。
[保存] を選択します。
Azure CLI を使用して監査を構成する
別の方法として、次のコマンドを実行して、Azure CLI からフレキシブル サーバーの監査を有効にして構成することもできます。
# Enable audit logs
az mysql flexible-server parameter set \
--name audit_log_enabled \
--resource-group myresourcegroup \
--server-name mydemoserver \
--value ON
診断を設定する
監査ログは Azure Monitor 診断設定と統合されているため、次の 3 つのデータ シンクにログをパイプすることができます。
- Log Analytics ワークスペース
- イベント ハブ
- ストレージ アカウント
Note
診断設定を構成する前に、データ シンクを作成する必要があります。 構成したデータ シンクで監査ログにアクセスできます。 ログが表示されるまでに最大で 10 分かかる可能性があります。
左側のウィンドウの [モニター] の下で、 [診断設定] を選択します。
[診断設定] ウィンドウで、 [診断設定を追加する] を選択します。
[名前] ボックスに、診断設定の名前を入力します。
監査ログの送信先 (Log Analytics ワークスペース、イベント ハブ、またはストレージ アカウント) を指定するために、対応するチェックボックスをオンにします。
Note
このチュートリアルでは、監査ログを Log Analytics ワークスペースに送信します。
[ログ] の [ログの種類] で、 [MySqlAuditLogs] のチェックボックスをオンにします。
監査ログをパイプするようにデータ シンクを設定した後、 [保存] を選択します。
Log Analytics を使用して監査ログを表示する
Log Analytics の左側のペインの [監視] から [ログ] を選択します。
[クエリ] ウィンドウを閉じます。
クエリ ウィンドウでは、実行するクエリを記述できます。 たとえば、特定のサーバーで監査イベントの概要を確認するために、次のクエリを使用しました。
AzureDiagnostics |where Category =='MySqlAuditLogs' |project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s ,ip_s , sql_text_s |summarize count() by event_class_s,event_subclass_s |order by event_class_s
ブックを使用して監査ログを表示する
監査に使用するブック テンプレートでは、プラットフォーム ログを送信するための診断設定を作成する必要があります。
Azure Monitor の左側のペインで、 [アクティビティ ログ] を選択し、 [診断設定] を選択します。
[診断設定] ウィンドウでは、新しい設定を追加したり、既存の設定を編集したりすることができます。 各設定には、各送信先の種類を 1 つだけ含めることができます。
注意
既に構成してあるデータ シンク (Log Analytics ワークスペース、ストレージ アカウント、またはイベント ハブ) で低速クエリ ログにアクセスできます。 ログが表示されるまでに最大で 10 分かかる可能性があります。
Azure portal の左側のペインで、Azure Database for MySQL フレキシブル サーバー インスタンスの [監視] の下にある [ブック] を選択します。
[監査] ブックを選択します。
ブックでは、次の視覚化を表示できます。
- サービスでの管理操作
- 監査の概要
- 接続イベントの監査の概要
- 接続イベントの監査
- テーブル アクセスの概要
- 識別されたエラー
注意
- これらのテンプレートを編集し、要件に従ってカスタマイズすることもできます。 詳細については、「Azure Workbooks」の「編集モード」セクションを参照してください。
- 素早く表示するために、ブックまたは Log Analytics クエリをダッシュボードにピン留めすることもできます。 詳細については、「Azure portal でダッシュボードを作成する」を参照してください。
[Administrative Actions on the service](サービスでの管理操作) ビューでは、サービスで実行されたアクティビティの詳細が表示されます。 これは、サブスクリプションのリソースに対して行われたすべての書き込み操作 (PUT、POST、DELETE) について、"何を、誰が、いつ" 行ったのかを確認するのに役立ちます。
他の視覚化を使用して、データベースの利用状況の詳細を把握することができます。 データベース セキュリティには、次の 4 つの部分があります。
- サーバー セキュリティ: 承認されていないユーザーがデータベースにアクセスするのを防ぐ役割を担います。
- データベース接続: 管理者は、承認された担当者がデータベースの更新を実行したかどうかを確認する必要があります。
- テーブルのアクセス制御: 許可されているユーザーのアクセス キーと、各ユーザーが扱うことを許可されているデータベース内のテーブルを表示します。
- データベース アクセス制限: データベースをインターネットにアップロードしたユーザーにとっては特に重要であり、外部ソースからデータベースにアクセスできないようにするのに役立ちます。