監査ログシステムテーブル参照

プレビュー

この機能はパブリックプレビュー段階です。

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

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

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

  • ほとんどの監査ログは、ワークスペースのリージョンでのみ使用できます。

  • すべてのリージョンで使用できるアカウントレベルのログは Unity Catalog つだけです。

  • アカウント単位の監査ログには、 workspace_id 0として記録されます。

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

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

列名

データ型

説明

version

文字列

監査ログスキーマのバージョン

2.0

event_time

タイムスタンプ

タイムスタンプ

2023-01-01T01:01:01.123

event_date

日付

アクションが実行されたカレンダー日付

2023-01-01

workspace_id

ロング

ワークスペースの ID

1234567890123456

source_ip_address

文字列

要求の発信元の IP アドレス

10.30.0.242

user_agent

文字列

要求の発信元

Apache-HttpClient/4.5.13 (Java/1.8.0_345)

session_id

文字列

要求の送信元のセッションの ID

123456789

user_identity

文字列

要求を開始するユーザーの ID

{"email": "user@domain.com", "subjectName": null}

service_name

文字列

サービス名開始要求

unityCatalog

action_name

文字列

監査ログにキャプチャされたイベントのカテゴリ

getTable

request_id

文字列

要求の ID

ServiceMain-4529754264

request_params

地図

すべての要求パラメーターを含むキー値のマップ。 要求の種類によって異なります

[["full_name_arg", "user.chat.messages"], ["workspace_id", "123456789"], ["metastore_id", "123456789"]]

response

構造 体

応答戻り値の構造体

{"statusCode": 200, "errorMessage": null, "result": null}

audit_level

文字列

ワークスペースまたはアカウントレベルのイベント

ACCOUNT_LEVEL

account_id

文字列

アカウントの ID

23e22ba4-87b9-4cc2-9770-d10b894bxx

event_id

文字列

イベントの ID

34ac703c772f3549dcc8671f654950f0

サンプル クエリ

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

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

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

誰がこのテーブルにアクセスしましたか?

このクエリーでは、 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}}'

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

フルネームは、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

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

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

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

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

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

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