監査ログシステムテーブル参照
プレビュー
この機能はパブリックプレビュー段階です。
この記事では、監査ログ テーブルのスキーマの概要を説明し、アカウントの使用に関する一般的な質問に答えるために監査ログ システム テーブルで使用できるサンプル クエリーを提供します。 監査ログイベントの情報については、「 監査ログリファレンス」を参照してください。
監査ログのシステム テーブルは system.access.audit
にあります。
監査ログに関する考慮事項
ほとんどの監査ログは、ワークスペースのリージョンでのみ使用できます。
すべてのリージョンで使用できるアカウントレベルのログは Unity Catalog つだけです。
アカウント単位の監査ログには、
workspace_id
0
として記録されます。
監査ログ・システムテーブルスキーマ
監査ログ システム テーブルでは、次のスキーマを使用します。
列名 |
データ型 |
説明 |
例 |
---|---|---|---|
|
文字列 |
監査ログスキーマのバージョン |
|
|
タイムスタンプ |
タイムスタンプ |
|
|
日付 |
アクションが実行されたカレンダー日付 |
|
|
ロング |
ワークスペースの ID |
|
|
文字列 |
要求の発信元の IP アドレス |
|
|
文字列 |
要求の発信元 |
|
|
文字列 |
要求の送信元のセッションの ID |
|
|
文字列 |
要求を開始するユーザーの ID |
|
|
文字列 |
サービス名開始要求 |
|
|
文字列 |
監査ログにキャプチャされたイベントのカテゴリ |
|
|
文字列 |
要求の ID |
|
|
地図 |
すべての要求パラメーターを含むキー値のマップ。 要求の種類によって異なります |
|
|
構造 体 |
応答戻り値の構造体 |
|
|
文字列 |
ワークスペースまたはアカウントレベルのイベント |
|
|
文字列 |
アカウントの ID |
|
|
文字列 |
イベントの ID |
|
サンプル クエリ
次のセクションには、監査ログ システム テーブルについての情報を得るために使用できるサンプル クエリが含まれています。 これらのクエリを機能させるには、中括弧{{}}
内の値を独自の論点に置き換えます。
注
これらの例には、デフォルトでは有効になっていない詳細な監査ログ イベントが含まれています。 ワークスペースで詳細監査ログを有効にするには、 「詳細監査ログを有効にする」を参照してください。
この記事には、次の例が含まれています。
誰がこのテーブルにアクセスしましたか?
このクエリーでは、 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
結果 の例
|
|
|
|
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
セキュリティ保護可能なすべてのオブジェクトの アクセス許可の変更を表示する
このクエリは、アカウントで発生したすべての権限変更のイベントを返します。 クエリは、変更を行ったユーザー、セキュリティ保護可能なオブジェクトの種類と名前、および行われた特定の変更を返します。
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