監査ログ システム テーブル リファレンス

重要

この機能はパブリック プレビュー段階にあります。

この記事では、監査ログ テーブル スキーマを概説し、監査ログ システム テーブルで使用できるサンプル クエリを提供して、アカウントの一般的な使用に関する質問に回答します。 監査ログ イベントの詳細については、「診断ログ リファレンス」を参照してください。

監査ログ システム テーブルは system.access.audit にあります。

監査ログに関する考慮事項

  • ほとんどの監査ログは、ワークスペースのリージョンでのみ使用できます。
  • Unity Catalog アカウント レベルのログのみすべてのリージョンで使用できます。
  • アカウント レベルの監査ログは 0 として workspace_id に記録されます。

監査ログ システム テーブル スキーマ

監査ログ システム テーブルでは、次のスキーマが使用されます。

列名 データ型 説明
version string 監査ログのスキーマのバージョン 2.0
event_time timestamp イベントのタイムスタンプ。 タイムゾーン情報は、UTC タイムゾーンを表す +00:00 と共に値の末尾に記録されます。 2023-01-01T01:01:01.123+00:00
event_date 日付 アクションが実行された予定表の日付 2023-01-01
workspace_id long ワークスペースの ID 1234567890123456
source_ip_address string 要求元の IP アドレス 10.30.0.242
user_agent string 要求元 Apache-HttpClient/4.5.13 (Java/1.8.0_345)
session_id string 要求が送信されたセッションの ID 123456789
user_identity string ユーザーが開始した要求の ID {"email": "user@domain.com",
"subjectName": null}
service_name string サービス名で開始した要求 unityCatalog
action_name string 監査ログにキャプチャされたイベントのカテゴリ getTable
request_id string 要求の ID ServiceMain-4529754264
request_params map すべての要求パラメーターを含むキー値のマップ。 要求の種類によって異なります [["full_name_arg", "user.chat.messages"],
["workspace_id", "123456789"],
["metastore_id", "123456789"]]
response struct 応答戻り値の構造体 {"statusCode": 200, "errorMessage": null,
"result": null}
audit_level string ワークスペースまたはアカウント レベルのイベント ACCOUNT_LEVEL
account_id string アカウントの ID 23e22ba4-87b9-4cc2-9770-d10b894bxx
event_id string イベントの ID 34ac703c772f3549dcc8671f654950f0

サンプル クエリ

次のセクションには、監査ログ システム テーブルに関する分析情報を得るために使用できるサンプル クエリが含まれています。 これらのクエリを機能させるには、中かっこ内の値を独自の {{}} パラメーターに置き換えます。

Note

これらの例の一部には、既定では有効になっていない詳細監査ログ イベントが含まれます。 ワークスペースで詳細監査ログを有効にするには、「詳細監査ログを有効にする」を参照してください。

この記事には、次のクエリの例が含まれています。

このテーブルにアクセスできるユーザーは誰ですか?

このクエリでは information_schema を使用して、テーブルに対するアクセス許可を持つユーザーを調べます。

SELECT DISTINCT(grantee) AS `ACCESSIBLE BY`
FROM system.information_schema.table_privileges
WHERE table_schema = '{{schema_name}}' AND table_name = '{{table_name}}'
  UNION
    SELECT table_owner
    FROM system.information_schema.tables
    WHERE table_schema = '{{schema_name}}' AND table_name = '{{table}}'
  UNION
    SELECT DISTINCT(grantee)
    FROM system.information_schema.schema_privileges
    WHERE schema_name = '{{schema_name}}'

最終日にテーブルにアクセスしたユーザーはどれですか?

Note

フル ネームは、DML 操作のログにはキャプチャされません。 スキーマと単純な名前を含め、すべてをキャプチャします。

SELECT
  user_identity.email as `User`,
  IFNULL(request_params.full_name_arg,
    request_params.name)
    AS `Table`,
    action_name AS `Type of Access`,
    event_time AS `Time of Access`
FROM system.access.audit
WHERE (request_params.full_name_arg = '{{catalog.schema.table}}'
  OR (request_params.name = '{{table_name}}'
  AND request_params.schema_name = '{{schema_name}}'))
  AND action_name
    IN ('createTable','getTable','deleteTable')
  AND event_date > now() - interval '1 day'
ORDER BY event_date DESC

ユーザーはどのテーブルにアクセスしましたか?

Note

日付範囲でフィルター処理するには、クエリの下部にある date 句のコメントを解除します。

SELECT
        action_name as `EVENT`,
        event_time as `WHEN`,
        IFNULL(request_params.full_name_arg, 'Non-specific') AS `TABLE ACCESSED`,
        IFNULL(request_params.commandText,'GET table') AS `QUERY TEXT`
FROM system.access.audit
WHERE user_identity.email = '{{User}}'
        AND action_name IN ('createTable',
'commandSubmit','getTable','deleteTable')
        -- AND datediff(now(), event_date) < 1
        -- ORDER BY event_date DESC

結果の例

EVENT WHEN TABLE ACCESSED QUERY TEXT
getTable 2023-05-31 system.access.audit GET table
getTable 2023-05-31 system.access.table_lineage GET table
commandSubmit 2023-05-31 Non-specific show functions;
commandSubmit 2023-05-31 Non-specific SELECT

request_params

FROM

system.access.audit

WHERE

service_name = "notebook"

AND action_name = "moveFolder"

LIMIT

5

セキュリティ保護可能なすべてのオブジェクトのアクセス許可の変更を表示する

このクエリは、アカウントで発生したすべてのアクセス許可の変更に対するイベントを返します。 クエリは、変更を行ったユーザー、セキュリティ保護可能なオブジェクトの種類と名前、および行われた特定の変更を返します。

SELECT event_time, user_identity.email, request_params.securable_type, request_params.securable_full_name, request_params.changes
FROM system.access.audit
WHERE service_name = 'unityCatalog'
  AND action_name = 'updatePermissions'
ORDER BY 1 DESC

最近実行したノートブック コマンドを表示する

このクエリは、最後に実行されたノートブック コマンドと、コマンドを実行したユーザーを返します。

Note

runCommand アクションは、詳細監査ログが有効になっている場合にのみ生成されます。 詳細監査ログを有効にするには、「詳細監査ログを有効にする」を参照してください。

SELECT event_time, user_identity.email, request_params.commandText
FROM system.access.audit
WHERE action_name = `runCommand`
ORDER BY event_time DESC
LIMIT 100