メインコンテンツまでスキップ

Audit log システムテーブル リファレンス

備考

プレビュー

このシステムテーブルは パブリック プレビュー段階です。 テーブルにアクセスするには、 system カタログでスキーマを有効にする必要があります。 詳細については、「 システムテーブル スキーマを有効にする」を参照してください

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

テーブルパス :このシステムテーブルは system.access.auditにあります。

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

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

Audit log システムテーブル schema

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

列名

データ型

説明

version

string

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

2.0

event_time

タイムスタンプ

イベントのタイムスタンプ。 タイムゾーン情報は、UTCタイムゾーンを表す +00:00 で値の末尾に記録されます。

2023-01-01T01:01:01.123+00:00

event_date

日付

アクションが行われたカレンダーの日付

2023-01-01

workspace_id

ロング

ワークスペースの 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

マップ

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

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

response

構造体

応答の戻り値の構造体

{"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

identity_metadata

構造体

アクションに関与した ID( run_byrun_asなど)。 「監査グループ 専用のコンピュート アクティビティ」を参照してください。

{run_by: example@email.com; run_as: example@email.com;

サンプル クエリ

次のセクションでは、監査ログのシステムテーブルに知見を得るために使用できるサンプル SQL クエリについて説明します。

注記

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

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

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

このクエリでは、 information_schema を使用して、テーブルに対するパーミッションを持つユーザーを特定します。 カタログ、スキーマ、およびテーブル名のパラメーターの値を入力します。

SQL
SELECT DISTINCT(grantee), privilege_type, 'catalog' AS level
FROM system.information_schema.catalog_privileges
WHERE
catalog_name = :catalog_name
UNION
SELECT DISTINCT(grantee), privilege_type, 'schema' AS level
FROM system.information_schema.schema_privileges
WHERE
catalog_name = :catalog_name AND schema_name = :schema_name
UNION
SELECT DISTINCT(grantee) AS `accessible by`, privilege_type, 'table' AS level
FROM
system.information_schema.table_privileges
WHERE
table_catalog = :catalog_name AND table_schema = :schema_name AND table_name = :table_name
UNION
SELECT table_owner, 'ALL_PRIVILEGES' AS privilege_type, 'owner' AS level
FROM system.information_schema.tables
WHERE
table_catalog = :catalog_name AND table_schema = :schema_name AND table_name = :table_name

過去 7 日以内にテーブルにアクセスしたユーザーは誰ですか?

このクエリを機能させるには、クエリ パラメーターにテーブル パス情報を入力します。

注記

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

SQL
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 パラメーターに入力します。

SQL
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

結果の例

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

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

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

SQL
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 アクションは、詳細監査ログが有効になっている場合にのみ発行されます。詳細監査ログを有効にするには、「 詳細監査ログを有効にする」を参照してください。

SQL
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 アプリ インスタンスへのログインごとにイベントを返します。

SQL
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 ワークスペースの管理設定で確認できます。

他のユーザーやグループとアプリの共有方法を変更するために更新された Databricks アプリはどれですか?

このクエリは、アクセス許可の種類、新しいアクセス許可が割り当てられているユーザーまたはグループ、変更を送信したユーザーなど、Databricks アプリへのアクセスを変更するためのアクセス許可の更新のイベントを返します。

SQL
SELECT
event_date,
workspace_id,
request_params['request_object_id'] as app,
user_identity['email'] as sharing_user,
acl_entry['group_name'],
acl_entry['user_name'],
acl_entry['permission_level']
FROM
system.access.audit t
LATERAL VIEW
explode(from_json(request_params['access_control_list'], 'array<struct<user_name:string,permission_level:string,group_name:string>>')) acl_entry AS acl_entry
WHERE
action_name = 'changeAppsAcl'
AND
request_params['request_object_type'] = 'apps'
ORDER BY
event_date DESC