Databricks

Databricks Audit Logsで実現する監査・追跡・コンプライアンス実務

2026-03-26
更新: 2026-03-27
NicheeLab編集部

「誰が、いつ、どのデータに、どのような操作をしたか」——この問いに即座に答えられなければ、 セキュリティインシデント発生時の原因究明もコンプライアンス監査への対応もできません。 DatabricksのAudit Logs(監査ログ)は、ワークスペース内のすべての操作を自動記録し、system.access.auditテーブル(System Tables)経由でSQLクエリによる分析を可能にします。

この記事では、監査ログの構造と主要イベント一覧、実務で使えるSQLクエリ例、 ログ配信設定(AWS S3 / Azure Event Hubs / GCS)、SOC 2 / ISO 27001対応のポイント、 そしてDatabricks認定試験で出題されるパターンを整理します。

監査ログの概要(system.access.audit)

Databricksの監査ログはSystem Tablesの一部として提供されます。 System Tablesはsystemカタログ配下のスキーマで、Databricksが自動的にデータを収集・更新する 読み取り専用のDelta Tableです。監査ログはsystem.access.auditに格納されます。

-- 監査ログテーブルの構造確認
DESCRIBE TABLE system.access.audit;

-- 主要カラム
-- event_time        TIMESTAMP   イベント発生時刻
-- event_date        DATE        イベント日付(パーティションキー)
-- workspace_id      BIGINT      ワークスペースID
-- action_name       STRING      操作の種類(例: createCluster, getTable)
-- user_identity     STRUCT      操作を行ったユーザー/SP情報
-- service_name      STRING      サービス名(例: clusters, unityCatalog, jobs)
-- request_params    MAP         リクエストパラメータ(操作対象の詳細)
-- response          STRUCT      レスポンス情報(ステータスコード、エラーメッセージ)
-- source_ip_address STRING      リクエスト元IPアドレス
-- audit_level       STRING      ログレベル(ACCOUNT_LEVEL / WORKSPACE_LEVEL)

主要イベント一覧表

カテゴリservice_name代表的なaction_name説明
ワークスペースaccountslogin, logout, tokenLoginユーザーのログイン/ログアウト、PATによる認証
クラスタclusterscreate, start, permanentDelete, resizeクラスタの作成・起動・削除・リサイズ
ノートブックnotebookcreateNotebook, runCommand, attachNotebookノートブックの作成・コマンド実行・クラスタへのアタッチ
ジョブjobscreate, runNow, runSucceeded, runFailedジョブの作成・実行・成功/失敗
Unity CatalogunityCatalogcreateTable, getTable, grantPermission, revokePermissionテーブルの作成/アクセス、権限の付与/取り消し
SecretssecretsgetSecret, putSecret, createScopeシークレットの読み取り/書き込み、Scopeの作成
SQL WarehousedatabrickssqlcreateEndpoint, startEndpoint, executeStatementSQL Warehouseの作成/起動、SQLの実行
ファイルdbfsaddBlock, create, deleteDBFSファイルの作成/削除
リポジトリreposcreateRepo, updateRepo, deleteRepoGit連携リポジトリの操作

実務で使えるSQLクエリ例

不正アクセスの検知(ログイン失敗の監視)

SELECT
  event_time,
  user_identity.email AS user_email,
  source_ip_address,
  response.status_code,
  response.error_message
FROM system.access.audit
WHERE action_name = 'login'
  AND response.status_code != 200
  AND event_date >= current_date() - INTERVAL 7 DAYS
ORDER BY event_time DESC;

Unity Catalogテーブルへのアクセス監査

SELECT
  event_date,
  user_identity.email AS user_email,
  action_name,
  request_params['full_name_arg'] AS table_name,
  COUNT(*) AS access_count
FROM system.access.audit
WHERE service_name = 'unityCatalog'
  AND action_name IN ('getTable', 'createTable', 'deleteTable')
  AND event_date >= current_date() - INTERVAL 30 DAYS
GROUP BY event_date, user_identity.email, action_name,
         request_params['full_name_arg']
ORDER BY event_date DESC, access_count DESC;

ジョブ実行履歴と失敗分析

SELECT
  event_time,
  user_identity.email AS triggered_by,
  request_params['jobId'] AS job_id,
  request_params['runId'] AS run_id,
  action_name,
  CASE
    WHEN action_name = 'runSucceeded' THEN 'SUCCESS'
    WHEN action_name = 'runFailed' THEN 'FAILED'
    ELSE action_name
  END AS status
FROM system.access.audit
WHERE service_name = 'jobs'
  AND action_name IN ('runSucceeded', 'runFailed', 'runNow')
  AND event_date >= current_date() - INTERVAL 14 DAYS
ORDER BY event_time DESC;

権限変更の追跡(GRANT/REVOKE)

SELECT
  event_time,
  user_identity.email AS granted_by,
  action_name,
  request_params['securable_type'] AS object_type,
  request_params['full_name_arg'] AS object_name,
  request_params['principal'] AS granted_to,
  request_params['privileges'] AS privileges
FROM system.access.audit
WHERE service_name = 'unityCatalog'
  AND action_name IN ('grantPermission', 'revokePermission', 'updatePermissions')
  AND event_date >= current_date() - INTERVAL 90 DAYS
ORDER BY event_time DESC;

クラスタコスト関連の監査

SELECT
  event_date,
  user_identity.email AS creator,
  request_params['cluster_name'] AS cluster_name,
  request_params['node_type_id'] AS instance_type,
  request_params['num_workers'] AS num_workers,
  request_params['autotermination_minutes'] AS auto_terminate_min
FROM system.access.audit
WHERE service_name = 'clusters'
  AND action_name = 'create'
  AND event_date >= current_date() - INTERVAL 30 DAYS
ORDER BY event_date DESC;

ログ配信設定

System Tables経由でのSQL分析に加えて、監査ログを外部ストレージやSIEMツールに配信できます。 ログ配信はAccount Console(またはAccount API)から設定し、アカウントレベルで有効化します。

クラウド配信先形式主な用途
AWSS3バケットJSON(gzip圧縮)長期アーカイブ、Athena分析、Splunk取り込み
AzureAzure Event Hubs / Azure MonitorJSONAzure Sentinel連携、リアルタイム監視
GCPGCS / Cloud LoggingJSONBigQuery分析、Cloud SIEMとの統合
# AWS: Account APIでログ配信を設定
curl -X POST "https://accounts.cloud.databricks.com/api/2.0/accounts/<account_id>/log-delivery" \
  -H "Authorization: Bearer <admin_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "log_type": "AUDIT_LOGS",
    "output_format": "JSON",
    "credentials_id": "<credential_config_id>",
    "storage_configuration_id": "<storage_config_id>",
    "delivery_path_prefix": "databricks/audit-logs"
  }'

System Tables vs ログ配信 比較

比較項目System Tables(system.access.audit)ログ配信(S3/Event Hubs/GCS)
セットアップ追加設定不要(有効化のみ)ストレージ/認証情報の設定が必要
クエリ方法Databricks SQL / Notebookから直接SQL外部ツール(Athena, Sentinel, Splunk)
データ形式Delta Table(最適化済み)JSON(gzip圧縮)
保持期間365日(プランにより変動)ストレージの設定次第(無期限も可能)
コストDBU消費(クエリ実行時)クラウドストレージの保管・転送コスト
リアルタイム性数分〜数十分の遅延Event Hubsで準リアルタイム可能
Databricks外からのアクセス不可(Databricks内でのみクエリ)可能(外部ツールから直接アクセス)

コンプライアンス対応

Databricksの監査ログは、主要なコンプライアンスフレームワークへの対応に活用できます。

フレームワーク監査ログの活用ポイント
SOC 2(Type II)アクセス制御の有効性証明(ログインイベント、権限変更、異常アクセス検知)。監査人にクエリ結果をエビデンスとして提出
ISO 27001A.12.4「ログ取得」要件への対応。イベントログの記録・保護・レビューの証跡
GDPR個人データへのアクセスログ。「誰がいつ個人データを含むテーブルにアクセスしたか」の追跡
HIPAAPHI(保護対象保健情報)へのアクセス監査。アクセスログの最低6年保持

コンプライアンス対応のベストプラクティスとして、以下を推奨します。

  • System Tablesで日常監視 + ログ配信で長期アーカイブの二重構成
  • 権限変更イベント(grantPermission / revokePermission)のアラート設定
  • ログイン失敗の閾値超過検知(ブルートフォース攻撃の早期検知)
  • 四半期ごとの監査ログレビューと権限棚卸し
  • ログ配信先のS3/ADLSに暗号化・アクセス制御・バージョニングを適用

試験で問われるポイント

Audit LogsはData Engineer Associate / Professional、およびAdministration関連の出題範囲に含まれます。

  • 「監査ログを格納するSystem Tablesのテーブル名」→ system.access.audit
  • 「誰がどのテーブルにアクセスしたか確認するには」→ system.access.auditをservice_name='unityCatalog'でフィルタ
  • 「監査ログをDatabricks外のSIEMツールに連携するには」→ ログ配信を設定
  • 「System Tablesのデータは何形式か」→ Delta Table(SQLで直接クエリ可能)
  • 「監査ログの保持期間を延長するには」→ ログ配信で外部ストレージにアーカイブ

問題で確認

Data Engineer / Administration / Security

問題 1

セキュリティチームが「過去30日間でUnity Catalogの権限変更(GRANT/REVOKE)を行ったユーザーとその対象オブジェクト」を調査したい。最も適切なアプローチはどれか。

  1. system.access.auditテーブルをservice_name='unityCatalog'かつaction_nameが'grantPermission'または'revokePermission'でフィルタしてSQLでクエリする
  2. 各ユーザーのNotebook実行履歴からGRANT文を手動で検索する
  3. Unity Catalogのdata lineage UIからテーブルのリネージグラフを確認する
  4. クラスタのドライバーログをS3からダウンロードしてgrepで検索する

正解: A

system.access.auditテーブルにはUnity Catalogのすべての権限変更イベント(grantPermission / revokePermission)が自動記録されます。service_nameとaction_nameでフィルタし、request_paramsから対象オブジェクトと付与先プリンシパルを抽出するのが最も効率的で正確な方法です。Notebook履歴の手動検索は網羅性がなく、API経由の権限変更を検出できません。リネージグラフはデータフローの追跡であり権限変更の追跡ではありません。クラスタログはSpark実行ログであり、Unity Catalogの権限変更は記録されません。

よくある質問

System Tables(system.access.audit)とログ配信(Audit Log Delivery)はどちらを使うべきですか?

system.access.auditはDatabricks SQL/Notebookから直接SQLでクエリでき、追加設定なしで利用できるため、日常的な監査クエリやダッシュボード構築に最適です。一方、ログ配信(S3/Azure Event Hubs/GCSへの配信)は、Databricks外のSIEMツール(Splunk、Sentinel、Datadogなど)にログを統合したい場合や、長期アーカイブ・コンプライアンスで外部ストレージへの保存が必須な場合に必要です。両方を併用するのがベストプラクティスです。

監査ログにはどのイベントが記録されますか?

主要なイベントカテゴリとして、ワークスペース操作(ログイン/ログアウト、設定変更)、クラスタ操作(作成/起動/終了/削除)、ノートブック操作(作成/実行/共有/エクスポート)、ジョブ操作(作成/実行/成功/失敗)、Unity Catalogイベント(GRANT/REVOKE/テーブルアクセス/リネージ)、Secrets操作(シークレットの読み取り/書き込み)が記録されます。各イベントにはタイムスタンプ、ユーザーID、アクション名、リクエストパラメータ、レスポンスコードが含まれます。

監査ログの保持期間はどのくらいですか?

System Tables(system.access.audit)の保持期間はDatabricksのプランにより異なり、デフォルトでは365日間です。コンプライアンス要件でそれ以上の保持が必要な場合は、ログ配信を設定してS3/ADLS/GCSにアーカイブするか、System Tablesのデータを定期的にDelta Tableにコピーして長期保存する方法があります。SOC 2やISO 27001の監査では通常1〜3年の保持が求められるため、外部ストレージへのアーカイブが推奨されます。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Databricks

Databricks資格一覧|全7試験・難易度・勉強法

Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...

Databricks

Databricks試験の難易度ランキング|全7資格を徹底比較

Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...

Databricks

Databricks資格の勉強方法|最短合格ルートと学習時間の目安

Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...

Databricks

Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略

Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...

Databricks

Databricks Data Engineer Professional完全解説|上級試験の攻略法

Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...

Databricksの記事一覧 (105件)
© 2026 NicheeLab All rights reserved.