このトピックでは、Log ServiceコンソールでData Management (DMS) の操作ログを照会および分析する方法について説明します。
背景情報
操作ログには、DMSで実行されるすべての操作の詳細が記録されます。 操作ログには、操作者、使用された機能の名前、操作が実行された時刻、操作のタイプ、および実行されたSQL文に関する情報が含まれます。 詳細については、「監査操作」トピックの「機能」セクションをご参照ください。
前提条件
Simple Log Serviceが有効化されています。 詳細については、「リソース管理の概要」をご参照ください。
Log ServiceプロジェクトとLogstoreが作成されます。 詳細については、「プロジェクトの作成」および「Logstore の作成」をご参照ください。
Logstoreは空で、Logstoreのフルテキストインデックス作成が有効になっています。 フルテキストインデックスを有効にする方法の詳細については、「インデックスの作成」をご参照ください。
課金方法
DMSの操作ログをSimple Log Serviceに無料でエクスポートできます。 ただし、Simple Log Serviceはストレージ料金を請求します。 Simple Log Serviceの課金の詳細については、「課金機能の課金項目」をご参照ください。
手順
手順1: Log ServiceプロジェクトのDMSへの登録
最初に DMS管理者としてのDMSコンソールV5.0 にログインします。
DMSコンソールの [ホーム] ページで、左側のナビゲーションウィンドウで [データベースインスタンス] の横にあるアイコンをクリックします。
説明DMSコンソールにシンプルモードでログインする場合は、左側のナビゲーションウィンドウで [データベースインスタンス] をクリックします。 表示されるインスタンスリストで、アイコンをクリックします。
[インスタンスの追加] ダイアログボックスで、次のパラメーターを設定して、Log ServiceプロジェクトをDMSに登録します。
セクション
パラメーター
説明
データソース
非該当
[Alibaba Cloud] タブで [SLS] を選択します。
基本情報
ファイルとログストレージ
[SLS] を選択します。
インスタンスリージョン
Log Serviceプロジェクトが存在するリージョンを選択します。
エントリーモード
Log Serviceプロジェクトの登録に使用する方法を選択します。 デフォルト値: 接続文字列アドレス。
接続文字列アドレス
Log Serviceプロジェクトの接続文字列アドレスを入力します。 インスタンスリージョンパラメーターを設定すると、DMSは自動的に接続文字列アドレスを生成します。
プロジェクト名
Log Serviceプロジェクトの名前を入力します。
AccessKey ID
Alibaba CloudアカウントのAccessKey IDを入力します。 AccessKey IDは、Log ServiceプロジェクトをDMSに登録するときにID認証に使用されます。
説明AccessKey IDの取得方法の詳細については、「AccessKeyペアの作成」をご参照ください。
AccessKeyシークレット
AccessKey IDに対応するAccessKeyシークレットを入力します。
説明AccessKeyシークレットの取得方法の詳細については、「AccessKeyペアの作成」をご参照ください。
制御モード
DMSでLog Serviceプロジェクトを管理するために使用するモードを選択します。 このパラメーターは、Flexible Managementにのみ設定できます。
詳細情報
環境タイプ
Log Serviceプロジェクトがデプロイされている環境のタイプを選択します。 有効な値: Dev、Test、Product、Pre、SIT、UAT、Pet、STAG。 詳細については、「インスタンスの環境タイプの変更」トピックの「環境タイプ」セクションをご参照ください。
[インスタンス名]
DMSでLog Serviceプロジェクトの名前を入力します。
説明DMSコンソールでLog Serviceプロジェクトを管理するときに、Log Serviceプロジェクトの名前を変更できます。 詳細については、「データベースインスタンスの変更」をご参照ください。
DBA
Log Serviceプロジェクトのデータベース管理者 (DBA) を選択します。 DBAは、DMSのLog Serviceプロジェクトに対する権限を管理できます。
クエリのタイムアウト (s)
SQLクエリ文の実行タイムアウト時間を指定します。 SQLクエリステートメントの実行が指定されたタイムアウト期間よりも長く続く場合、データベースのセキュリティを確保するために、ステートメントの実行は終了します。
export timeout(s)
SQL export文の実行タイムアウト時間を指定します。 SQL exportステートメントの実行が指定されたタイムアウト時間よりも長く続く場合、データベースのセキュリティを確保するためにステートメントの実行は終了します。
説明上記のパラメーターを設定したら、ダイアログボックスの下部にある [接続のテスト] をクリックします。 接続テストに合格するまで待ちます。
「getProject' コマンドの実行結果はnullです」というエラーメッセージが表示された場合は、DMSへのログインに使用するAlibaba CloudアカウントによってLog Serviceプロジェクトが作成されているかどうかを確認する必要があります。
[送信] をクリックします。
ステップ2: [タスクを作成してDMSの操作ログをエクスポートする]
DMSコンソールV5.0 にログインします。
上部のナビゲーションバーで、[セキュリティと仕様] > [操作監査] を選択します。
説明DMSコンソールにシンプルモードでログインする場合は、コンソールの左上隅にあるアイコンをクリックし、[すべての機能] > [セキュリティと仕様] > [操作監査] を選択します。
[ログのエクスポート] タブをクリックします。 [ログのエクスポート] タブで、右上隅の [新しいタスク] をクリックします。
[エクスポートタスクの作成] ダイアログボックスで、次のパラメーターを設定します。
パラメーター
必須
説明
タスク名。
必須
エクスポートタスクの名前。 簡単に識別できるように、わかりやすい名前を指定します。
宛先ログサービス
必須
リソースの管理に使用されるLog Serviceプロジェクト。
SLSログストア
必須
DMSの操作ログをエクスポートするLogstore。 ドロップダウンリストから宛先Logstoreを選択します。
説明宛先ログストアがドロップダウンリストに表示されていない場合は、[辞書の同期] をクリックします。 表示されるメッセージで、[OK] をクリックします。 その後、DMSはLogstoreのメタデータを自動的に収集します。
関数モジュール
必須
ログをエクスポートするDMS機能。 機能は、[操作ログ] タブの [機能モジュール] 列に表示できます。 有効な値には、インスタンス管理、ユーザー管理、権限、データクエリなどがあります。 デフォルトでは、[すべて] が選択されています。
スケジューリング方法
必須
タスクのスケジューリング方法。 有効な値:
ワンタイムタスク: ワンタイムタスクを作成すると、タスクはすぐにログを1回だけエクスポートします。
定期的なタスク: [日] 、[週] 、または [月] を選択して、ログを定期的に宛先ログストアにエクスポートできます。 定期的なタスクが初めて実行された場合、ログエントリの開始時刻からスケジュールされた開始時刻までにDMSで生成されたすべての操作ログがエクスポートされます。 増分ログのみが後でエクスポートされます。 詳細については、「DMSの操作ログをLog Serviceにエクスポートする」トピックの「定期的なスケジューリング」セクションをご参照ください。
ログ時間範囲
任意
説明このパラメーターは、[ワンタイムタスク] を [スケジューリング方法] として選択した場合に表示されます。
エクスポートする操作ログが生成される時間範囲。 デフォルトでは、このパラメーターを設定しない場合、過去3年間に生成されたすべてのログがエクスポートされます。
ログ開始時刻
任意
説明このパラメーターは、[定期的なタスク] を [スケジューリング方法] として選択した場合に表示されます。
自動トリガータスクには終了時間がありません。
エクスポートするログの開始時刻。 このパラメーターを設定しない場合、デフォルト値はタスクが作成された日付から3年前の日付です。
[OK] をクリックします。 ログエクスポートタスクが作成されます。 システムはまた、データを照会および分析するために、LogstoreにdbId、dbName、dbUserなどのインデックスフィールドを作成します。
ワンタイムタスクのステータスが [成功] の場合、ログがエクスポートされます。
説明Logstoreのインデックスは、作成後に有効になります。 したがって、ワンタイムタスクは、タスクが作成されてから約90秒後に実行が開始されます。
自動トリガータスクはログを複数回エクスポートし、ログがエクスポートされる前後に [保留中のスケジューリング] 状態になります。 タスクログを表示して、タスクが成功したかどうかを判断できます。
タスクの [操作] 列で次の操作を実行できます。
クエリ: [クエリ] をクリックします。 SQLコンソールページにリダイレクトされます。 表示されるページで、[クエリ] をクリックします。 ページ下部の [実行] セクションで、Logstoreにエクスポートされたログを表示できます。
タスクログ: [タスクログ] をクリックして、タスクの開始時刻、タスクの終了時刻、エクスポートするログエントリの数、タスクのステータスなどの情報を表示します。
一時停止: 一時停止をクリックします。 ダイアログボックスが表示された場合、[OK]をクリックします。 次に、自動トリガータスクが一時停止されます。
再起動: [再起動] をクリックします。 表示されるダイアログボックスで、[OK] をクリックして、中断されたタスクを再開します。
説明1回限りのタスクで再起動操作を実行することはできません。
自動トリガータスクで上記のすべての操作を実行できます。
エクスポートタスクの作成方法の詳細については、「DMSの操作ログをSimple Log Serviceにエクスポートする」をご参照ください。
手順3: Log ServiceコンソールでのDMSのエクスポートされた操作ログの照会と分析
Simple Log Serviceコンソール にログインします。
[プロジェクト] セクションで、管理するプロジェクトをクリックします。
左側のナビゲーションウィンドウで、[ログストレージ] をクリックします。 Logstoreリストで、管理するLogstoreをクリックします。
検索ボックスにクエリ文を入力します。
クエリステートメントは、
searchステートメント | analyticステートメント
形式の検索ステートメントと分析ステートメントで構成されます。 詳細については、「検索構文」および「集計関数」をご参照ください。Log Serviceコンソールでは、次の情報のみを照会および分析できます。
説明この例では、dmstest Logstoreが使用されています。
次のSQL文を実行して、特定のデータベースへのログインに最も失敗したユーザーを照会します。
__topic__ : DMS_LOG_DELIVERY AND subModule : LOGIN | SELECT concat(cast(operUserId as varchar), '(', operUserName, ')') user, COUNT(*) cnt FROM dmstest WHERE state = '0' GROUP BY operUserId, operUserName ORDER BY cnt DESC LIMIT 10;
次のSQL文を実行して、送信元IPアドレスが特定のインスタンスへのアクセスを許可されていないユーザーを照会します。この例では、127.0.0.1が使用されます。
説明インスタンスの送信元IPアドレスは、インスタンスをDMSに登録するときに使用するIPアドレスです。 このIPアドレスは、インスタンスのソースを識別するために使用されます。
__topic__ : DMS_LOG_DELIVERY | SELECT concat(cast(operUserId as varchar), '(', operUserName, ')') user, COUNT(*) cnt FROM dmstest WHERE state = '0' and requestIp in ('127.0.0.1') GROUP BY operUserId, operUserName ORDER BY cnt DESC LIMIT 10;
次のSQL文を実行して、DMSコンソールに最も頻繁にログオンするユーザーを照会します。
__topic__ : DMS_LOG_DELIVERY| SELECT concat(cast(operUserId as varchar), '(', operUserName, ')') user, COUNT(*) cnt FROM dmstest GROUP BY operUserId, operUserName ORDER BY cnt DESC LIMIT 10;
次のSQL文を実行して、同じ日に複数のデータベースにアクセスして管理するユーザーを照会します。
__topic__: DMS_LOG_DELIVERY | SELECT concat(cast(operUserId as varchar), '(', operUserName, ')') user, date_trunc('day', gmtCreate) time, dbId, COUNT(*) qpd from dmstest GROUP BY time, operUserId, operUserName, dbId ORDER BY time, qpd DESC;
次のSQL文を実行して、DMSのデータベースで操作を実行できなかったユーザーを照会します。
__topic__ : DMS_LOG_DELIVERY AND moudleName : SQL_CONSOLE | SELECT concat(cast(operUserId as varchar), '(', operUserName, ')') user, actionDesc as sqlStatement, subModule as sqlType, remark as failReason FROM dmstest WHERE state = '-1' order by id;
;
次のSQL文を実行して、機密データを最も頻繁にダウンロードするユーザーを照会します。
__topic__ : DMS_LOG_DELIVERY AND moudleName : DATA_EXPORT | SELECT concat(cast(operUserId as varchar), '(', operUserName, ')') user, COUNT(*) cnt FROM dmstest WHERE hasSensitiveData = 'true' GROUP BY operUserId, operUserName ORDER BY cnt DESC LIMIT 10;
cSC; 10; 10
次のSQL文を実行して、機密データをバッチで削除および変更するために実行されるSQL文を照会します。
__topic__ : DMS_LOG_DELIVERY | SELECT subModule, COUNT(*) cnt, COUNT(affectRows) affectRow FROM dmstest WHERE subModule != '' GROUP BY subModule ORDER BY cnt DESC;
次のSQL文を実行して、データのエクスポート中にデータ透かし機能を有効または無効にするユーザーを照会します。
__topic__ : DMS_LOG_DELIVERY AND moudleName : DATA_EXPORT | SELECT targetId as orderId, concat(cast(operUserId as varchar), '(', operUserName, ')') user, COUNT(*) cnt FROM dmstest where actionDesc like '%enable data watermark: false' GROUP BY targetId, operUserId, operUserName ORDER BY cnt DESC LIMIT 10;
説明'% enable data watermark: true'
を使用して、データ透かし機能を有効にしたユーザーにクエリを実行します。「 % enable data watermark: false」
をクエリ文で使用して、データ透かし機能を無効にしたユーザーにクエリを実行します。
次のSQL文を実行して、[SQLコンソール] ページの [実行履歴] セクションでSQL結果セットをダウンロードしたユーザーを照会します。
__topic__ : DMS_LOG_DELIVERY AND moudleName : SQL_CONSOLE_EXPORT | SELECT concat(cast(operUserId as varchar), '(', operUserName, ')') user, COUNT(*) cnt FROM dmstest GROUP BY operUserId, operUserName ORDER BY cnt DESC LIMIT 10;
クエリステートメントの詳細については、「ログのクエリと分析」をご参照ください。