すべてのプロダクト
Search
ドキュメントセンター

Data Management:Simple Log ServiceでのDMSの操作ログの照会と分析

最終更新日:Oct 14, 2024

このトピックでは、Simple Log ServiceコンソールでData Management (DMS) の操作ログをクエリおよび分析する方法について説明します。

背景情報

操作ログには、DMSで実行されるすべての操作の詳細が記録されます。 操作ログには、操作者、使用された機能の名前、操作が実行された時間、操作のタイプ、および実行されたSQL文に関する情報が含まれます。 詳細については、「操作監査機能の使用」トピックの「機能」セクションをご参照ください。

前提条件

  • Simple Log Serviceが有効化されています。 詳細については、「リソース管理の概要」をご参照ください。

  • Simple Log ServiceプロジェクトとLogstoreが作成されます。 詳細については、プロジェクトの管理トピックの「プロジェクトの作成」セクションおよびLogstoreの管理トピックの「Logstoreの作成」セクションをご参照ください。

  • Logstoreは空で、Logstoreに対してフルテキストインデックス作成が有効になっています。 フルテキストインデックスを有効にする方法の詳細については、「インデックスの作成」をご参照ください。

課金方法

DMSの操作ログをSimple Log Serviceに無料でエクスポートできます。 ただし、Simple Log Serviceはストレージ料金を請求します。 Simple Log Serviceの課金の詳細については、「課金機能の課金項目」をご参照ください。

手順

手順1: Simple Log ServiceプロジェクトをDMSに登録する

  1. 最初に DMS管理者としてDMSコンソールV5.0 にログインします。

  2. DMSコンソールのホームページで、左側のナビゲーションウィンドウの [データベースインスタンス] の横にあるimage..pngアイコンをクリックします。

    説明

    DMSコンソールにシンプルモードでログインする場合は、左側のナビゲーションウィンドウで [データベースインスタンス] をクリックします。 表示されるインスタンスリストで、アイコンをクリックしimage..pngます。

  3. [インスタンスの追加] ダイアログボックスで、以下のパラメーターを設定して、Simple Log ServiceプロジェクトをDMSに登録します。

    セクション

    パラメーター

    説明

    データソース

    非該当

    データソースのサービスプロバイダー。 この例では、Alibaba Cloudが選択されています。

    基本情報

    データベースタイプ

    データソースのタイプ。 この例では、SLSが選択されている。

    インスタンスリージョン

    Simple Log Serviceプロジェクトが存在するリージョン。

    接続方法

    Simple Log Serviceプロジェクトの登録に使用する方法。 デフォルト値: Connection String Address

    接続文字列アドレス

    Simple Log Serviceプロジェクトの接続文字列アドレス。 インスタンスリージョンパラメーターを設定すると、DMSは自動的に接続文字列アドレスを生成します。

    プロジェクト名

    Simple Log Serviceプロジェクトの名前。

    AccessKey ID

    Alibaba CloudアカウントのAccessKey ID。 AccessKey IDは、Simple Log ServiceプロジェクトをDMSに登録するときにID認証に使用されます。

    説明

    AccessKey IDの取得方法の詳細については、「AccessKeyペアの作成」をご参照ください。

    AccessKeyシークレット

    AccessKey IDに対応するAccessKeyシークレット。

    説明

    AccessKeyシークレットの取得方法の詳細については、「AccessKeyペアの作成」をご参照ください。

    高度な機能パック

    データソースに機能パックを追加することはできません。 デフォルトでは、データソースはFlexible Managementモードをサポートしています。

    詳細情報

    環境タイプ

    Simple Log Serviceプロジェクトがデプロイされている環境のタイプ。 有効な値: Dev、Test、Product、Pre、SIT、UAT、Pet、STAG。 詳細については、「インスタンスの環境タイプの変更」トピックの「環境タイプ」セクションをご参照ください。

    [インスタンス名]

    DMSのSimple Log Serviceプロジェクトの名前。

    説明

    DMSコンソールでプロジェクトを管理するときに、プロジェクトの表示名を変更できます。 詳細については、「データベースインスタンスの変更」をご参照ください。

    DBA

    Simple Log Serviceプロジェクトのデータベース管理者 (DBA) を選択します。 以降の操作では、DBAから権限を要求できます。

    クエリのタイムアウト

    SQLクエリ文の実行タイムアウト時間を指定します。 SQLクエリステートメントの実行が指定されたタイムアウト期間よりも長く続く場合、データベースのセキュリティを確保するために、ステートメントの実行は終了します。

    エクスポートタイムアウト

    SQL export文の実行タイムアウト時間を指定します。 SQL exportステートメントの実行が指定されたタイムアウト時間よりも長く続く場合、データベースのセキュリティを確保するためにステートメントの実行は終了します。

    説明
    • [基本情報] セクションで設定を完了したら、ダイアログボックスの左下隅にある [接続のテスト] をクリックします。 接続テストに合格するまで待ちます。

    • 「getProject' コマンドの実行結果はnullです」というエラーメッセージが表示された場合は、DMSへのログインに使用するAlibaba CloudアカウントによってSimple Log Serviceプロジェクトが作成されているかどうかを確認します。

  4. [送信] をクリックします。

ステップ2: DMSの操作ログをエクスポートするタスクを作成する

  1. DMSコンソールV5.0 にログインします。

  2. 上部のナビゲーションバーで、[セキュリティと仕様] > [操作監査] を選択します。

    説明

    DMSコンソールにシンプルモードでログインする場合は、コンソールの左上隅にある2023-01-28_15-57-17アイコンをクリックし、[すべての機能] > [セキュリティと仕様] > [操作監査] を選択します。

  3. [ログのエクスポート] タブをクリックします。 [ログのエクスポート] タブで、右上隅の [新しいタスク] をクリックします。

  4. [エクスポートタスクの作成] ダイアログボックスで、次の表に示すパラメーターを設定します。

    パラメーター

    必須

    説明

    タスク名。

    必須

    エクスポートタスクの名前。 簡単に識別できるように、わかりやすい名前を指定します。

    宛先ログサービス

    必須

    リソースの管理に使用されるSimple Log Serviceプロジェクト。

    SLSログストア

    必須

    DMSの操作ログをエクスポートするLogstore。 ドロップダウンリストから宛先Logstoreを選択します。

    説明

    宛先ログストアがドロップダウンリストに表示されない場合は、[同期辞書] をクリックします。 表示されたメッセージボックスで [OK] をクリックします。 その後、DMSはLogstoreのメタデータを自動的に収集します。

    関数モジュール

    必須

    ログをエクスポートする機能モジュール。 [操作ログ] タブでモジュールを表示できます。 有効な値には、インスタンス管理、ユーザー管理、権限、およびデータベース間クエリ結果エクスポートが含まれます。 デフォルトでは、[すべて] が選択されています。

    スケジューリング方法

    必須

    エクスポートタスクのスケジューリング方法。 有効な値:

    • ワンタイムタスク: エクスポートタスクを作成した後、タスクはログを1回だけエクスポートします。

    • 定期的なタスク: [日][週] 、または [月] を選択して、ログを定期的に宛先ログストアにエクスポートできます。 定期的なタスクが初めて実行された場合、ログエントリの開始時刻からスケジュールされた開始時刻までにDMSで生成されたすべての操作ログがエクスポートされます。 増分ログのみが後でエクスポートされます。 詳細については、「DMSの操作ログをSimple Log Serviceにエクスポートする」トピックの「定期的なスケジューリング」セクションをご参照ください。

    ログ時間範囲

    選択可能

    説明

    このパラメーターは、スケジューリング方法パラメーターをワンタイムタスクに設定した場合にのみ表示されます。

    エクスポートする操作ログが生成される時間範囲。 デフォルトでは、このパラメーターを設定しない場合、過去3年間に生成されたすべてのログがエクスポートされます。

    ログ開始時刻

    選択可能

    説明
    • このパラメーターは、Scheduling MethodパラメーターをPeriodic Tasksに設定した場合にのみ表示されます。

    • 定期的なタスクには終了時間がありません。

    エクスポートするログの開始時刻。 このパラメーターを設定しない場合、デフォルト値はエクスポートタスクが作成された日付から3年前の日付です。

  5. [OK] をクリックします。 ログエクスポートタスクが作成されます。 システムはまた、データを照会および分析するために、LogstoreにdbId、dbName、dbUserなどのインデックスフィールドを作成します。

    • ワンタイムタスクのステータスが [成功] の場合、ログがエクスポートされます。

      説明

      Logstoreのインデックスは、作成後に有効になります。 したがって、ワンタイムタスクは、タスクが作成されてから約90秒後に開始されます。

    • 定期的なタスクはログを複数回エクスポートし、ログがエクスポートされる前後に [保留中のスケジューリング] 状態になります。 タスクログを表示して、タスクが成功したかどうかを判断できます。

    タスクの [操作] 列で次の操作を実行できます。

    • クエリ: [クエリ] をクリックすると、SQLコンソールページに移動します。 表示されるページで、[クエリ] をクリックします。 ページ下部の [実行履歴] セクションで、Logstoreにエクスポートされたログを表示できます。

    • タスクログ: [タスクログ] をクリックして、開始時刻、終了時刻、エクスポートするログエントリ数、タスクのステータスなど、タスクに関する情報を表示します。

    • 一時停止: 一時停止をクリックします。 ダイアログボックスが表示された場合、[OK]をクリックします。 その後、定期タスクは一時停止される。

    • 再起動: [再起動] をクリックします。 表示されるダイアログボックスで、[OK] をクリックして、一時停止したタスクを再開します。

      説明
      • 1回限りのタスクで再起動操作を実行することはできません。

      • クエリや一時停止など、サポートされているすべての操作を定期的なタスクで実行できます。

エクスポートタスクの作成方法の詳細については、「DMSの操作ログをSimple Log Serviceにエクスポートする」をご参照ください。

ステップ3: Simple Log ServiceコンソールでDMSのエクスポートされた操作ログを照会および分析する

  1. Simple Log Serviceコンソールにログインします。

  2. [プロジェクト] セクションで、管理するプロジェクトをクリックします。

    image

  3. 左側のナビゲーションウィンドウで、[ログストレージ] をクリックします。 Logstoreリストで、管理するLogstoreをクリックします。

    image

  4. 検索ボックスにクエリ文を入力します。

    クエリ文は、検索文と分析文で構成され、検索文 | 分析文の形式です。 詳細については、「検索構文」および「集計関数」をご参照ください。

    Simple 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;

クエリステートメントの詳細については、「クエリとログの分析」トピックの「ステップ1: クエリステートメントの入力」セクションをご参照ください。

Simple Log Serviceの生ログのフィールド

Simple log ServiceにインポートされるDMS操作ログの重要なフィールドとその意味を次の表に示します。

項目

説明

id

ログの一意のID。

gmt_create

ログが作成された時刻。

gmt_modified

ログが変更された時刻。

oper_user_id

オペレータのユーザID。

oper_user_name

演算子の名前。

moudle_name

エクスポートされた機能モジュールの名前。 有効な値:

  • 許可: 権限

  • 所有者: データ所有者

  • SQL_CONSOLE: SQLエディター

  • DSQL_CONSOLE: データベース間データクエリ

  • LOGICDW_CONSOLE: 論理データウェアハウス

  • SQL_CONSOLE_EXPORT: SQLコンソールページでの結果のエクスポート

  • DSQL_CONSOLE_EXPORT: クロスデータベースクエリ結果のエクスポート

  • DATA_CHANGE: データ変更

  • DATA_EXPORT: データのエクスポート

  • DATA_TRACK: データトラッキング

  • SQL_REVIEW: SQLレビュー

  • DT_SYNC: データベースとテーブルの同期

  • DT_DETAIL: データベースとテーブルの詳細

  • DB_TASK: タスク管理

  • INSTANCE_MANAGE: インスタンス管理

  • USER_MANAGE: ユーザー管理

  • SECURITY_RULE: セキュリティルール

  • CONFIG_MANAGE: 設定管理

  • ACCESS_WHITE_IP: IPアドレスホワイトリスト

  • NDDL: スキーマデザイン

  • DATASEC_MANAGE: 機密データ管理

  • DATABASE_CLONE: データベースクローニング

  • DATABASE_MANAGE: データベース管理

  • MESSAGE_CENTER: 通知管理

  • VERSION_MANAGE: バージョン管理

  • OPER_AUDIT: オペレーション監査

  • SENSITIVE_DATA_PROTECT: 機密データ保護

  • SENSITIVE_DATA_USAGE: 機密データ監査

  • DB_EXPORT: データベースのエクスポート

  • WATERMARK_EXTRACT: 透かしの抽出

  • GENERATE: テストデータ生成

  • CLASSIFICATION_TEMPLATE: 分類テンプレート

  • SECURITY_CENTER: データセキュリティセンター

sub_module

サブ機能モジュール。

たとえば、SQLコンソールページのサブ機能モジュールは、実行されたSQLステートメントのタイプを参照します。

db_id

使用するデータベースのID。 IDはDMSで割り当てられます。

db_name

使用するデータベースの名前。

is_logic_db

データベースが論理データベースかどうかを指定します。

instance_id

使用するインスタンスのID。 IDはDMSで割り当てられます。

instance_name

使用するインスタンスの名前。

action_desc

操作の説明。

備考

備考です。

has_sensitive_data

ログに機密情報が含まれるかどうかを指定します。