監査ログ システムテーブル参照
プレビュー
このシステムテーブルは パブリック プレビュー段階です。 テーブルにアクセスするには、 system
カタログでスキーマを有効にする必要があります。 詳細については、「 システムテーブル スキーマを有効にする」を参照してください。
この記事では、監査ログ テーブル スキーマの概要を説明し、監査ログ システム テーブルと共に使用してアカウントの使用に関する一般的な質問に答えるサンプル クエリを示します。 監査ログイベントに関する情報については、「 監査ログリファレンス」を参照してください。
テーブルパス:このシステムテーブルは system.access.audit
にあります。
監査ログ・システムテーブルスキーマ
監査ログ システムテーブルは次のスキーマを使用します。
列名 |
データ型 |
説明 |
例 |
---|---|---|---|
|
string |
監査ログ スキーマのバージョン |
|
|
timestamp |
イベントのタイムスタンプ。 タイムゾーン情報は値の最後に記録され、 |
|
|
日付 |
アクションが発生したカレンダーの日付 |
|
|
ロング |
ワークスペースのID |
|
|
string |
要求の発信元の IP アドレス |
|
|
string |
要求の発信元 |
|
|
string |
要求の送信元のセッションの ID |
|
|
string |
要求を開始するユーザーの ID |
|
|
string |
リクエストを開始したサービス名 |
|
|
string |
監査ログでキャプチャされたイベントのカテゴリ |
|
|
string |
要求の ID |
|
|
マップ |
すべてのリクエストを含むキー値のマップ。 要求の種類によって異なります |
|
|
構造体 |
応答の戻り値の構造体 |
|
|
string |
ワークスペースまたはアカウントレベルのイベント |
|
|
string |
アカウントのID |
|
|
string |
イベントの ID |
|
|
構造体 |
アクションに関与した ID( |
|
サンプル クエリ
次のセクションでは、監査ログのシステムテーブルに知見を得るために使用できるサンプル SQL クエリについて説明します。
注:
例としては、デフォルトでは有効になっていない詳細な監査ログイベントがあります。 ワークスペースで詳細監査ログを有効にするには、「 詳細監査ログを有効にする」を参照してください。
この記事には、次のクエリの例が含まれています。
このテーブルにアクセスできるのは誰ですか?
このクエリでは、 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_name
UNION
SELECT
DISTINCT(grantee)
FROM
system.information_schema.schema_privileges
WHERE
schema_name = :schema_name
過去 7 日以内にテーブルにアクセスしたユーザーは誰ですか?
このクエリを機能させるには、クエリ パラメーターにテーブル パス情報を入力します。
注:
フルネームは、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 = :table_full_name
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 7 day
ORDER BY
event_date DESC
ユーザーが最近アクセスしたテーブルはどれですか?
このクエリを機能させるには、ユーザーの Eメール を :User
パラメーターに入力し、数値を :days_ago
パラメーターに入力します。
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) < :days_ago
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
Databricks アプリにログインしたユーザーはどのユーザーですか?
このクエリは、Databricks アプリ インスタンスへのログインごとにイベントを返します。
SELECT
event_date,
workspace_id,
request_params.request_object_id as app,
user_identity.email as user_email,
user_identity.subject_name as username
FROM
system.access.audit
WHERE
action_name IN ("workspaceInHouseOAuthClientAuthentication", "mintOAuthToken", "mintOAuthAuthorizationCode")
AND
request_params["client_id"] LIKE "{{application-ID}}"
GROUP BY
event_date,
workspace_id,
app,
user_email,
username
を、特定の {{application-ID}}
アプリに割り当てられたサービスプリンシパルの アプリケーション ID 値に置き換えます。Databricksこの値は、アプリをホストしている Databricks ワークスペースの管理設定で確認できます。