監査ログの配信を構成する
Databricks では、アカウントの監査ログにアクセスするために、監査ログ システムテーブル (system.access.audit) の使用を推奨しています。「監査ログシステムテーブルリファレンス」を参照してください。Databricks は、機密データが公開されたり、デプロイメントが危険にさらされたりする可能性があるため、このデータをプラットフォーム外に移動することはお勧めしません。監査ログの内容の性質上、エクスポートされた監査ログのセキュリティを維持し、悪用を防止する責任があることにご留意ください。
この機能には Premium プランが必要です。
この記事では、監査ログの配信を構成する方法について説明します。
Databricks では、Databricks ユーザーが実行したアクティビティの監査ログにアクセスできるため、企業は詳細な Databricks の使用パターンを監視できます。 ログに記録されたイベントの詳細については、「 監査ログのリファレンス」を参照してください。
Databricks アカウントの所有者またはアカウント管理者は、JSON ファイル形式の監査ログを Google Cloud Storage (GCS) ストレージ バケットに配信するように設定して、データを使用状況分析に使用できるようにすることができます。 Databricks は、アカウント内のワークスペースごとに個別の JSON ファイルと、アカウント レベルのイベント用に個別のファイルを提供します。
監査ログの配信を設定する
GCPプロジェクトまたは組織でGCP VPC Service Controls使用している場合は、すべての監査ログプロジェクトIDがイングレス許可リストに登録されていることを確認してください。そうでない場合、ログが配信されません。 ワークスペースでプライベートサービス接続を有効にする方法については、こちらをご覧ください。
監査ログの配信を構成するには、GCS バケットを設定し、Databricks にバケットへのアクセス権を付与してから、 アカウント コンソール を使用して、ログの配信場所を Databricks に指示する ログ配信構成 を定義する必要があります。
ログ配信設定は作成後に編集することはできませんが、アカウントコンソールを使用してログ配信設定を一時的または永続的に無効にすることは可能です。構成上の制限については、 「監査ログ配信の制限」を参照してください。
Google Cloud Console または Google CLI を使用して、GCP アカウントに Google Cloud Storage バケットを作成できます。次の手順は、Google Cloud Console を使用することを前提としています。
GCS バケットを作成して構成する
-
Google Cloud コンソールを 使用して、Google Cloud Storage GCPアカウントに バケットを作成します。
- [リージョン] で [ マルチリージョン ] を選択します。
- ストレージクラスについては、一般的な使用方法として [Standard ] を選択します。 ストレージクラスについては、Googleの記事を参照してください。
- コントロールアクセスの場合は、[ Uniform] を選択します。
-
新しいバケットの [Permissions ] タブをクリックします。
-
[ ADD ] をクリックし、ストレージ バケットの
New memberとしてサービス アカウントlog-delivery@databricks-prod-master.iam.gserviceaccount.comを入力します。サービスアカウントにCloud StorageのStorage Adminロールを付与し、アクセス条件を指定せずに付与します。これは、Databricks がこのバケットの配信済みログ ファイルを書き込んで一覧表示するために必要です。 バケットのサブディレクトリだけに権限を付与することはできません。 アクセス制御に関する Google の記事では、詳細なアクセス権限のために複数のバケットを作成することを推奨しています。

ログ配信設定の作成
ログ配信構成では、Databricks で監査ログを配信する GCS バケットの場所へのパスを定義します。
-
アカウント管理者として、Databricks アカウント コンソールにログインします。
-
[設定 ] をクリックします。
-
[ ログ配信 ] をクリックします。

-
[ ログ配信の追加 ] をクリックします。
-
[ログ配信構成名 ] に、Databricks アカウント内で一意な名前を追加します。スペースは使用できます。
-
[GCS バケット名 ] で、GCS バケット名を指定します。
-
[配信パスのプレフィックス ] で、必要に応じて、パスで使用するプレフィックスを指定します。「場所」を参照してください。
プレフィックスにはスラッシュ文字を含めることができますが、スラッシュで始めることはできません。 それ以外の場合、プレフィックスには有効な GCS オブジェクト パス文字を含めることができます。 スペース文字は使用できません。
-
[ ログ配信の追加 ] をクリックします。
ログ配信設定を無効化または有効化する
ログ配信設定は作成後に編集または削除することはできませんが、アカウントコンソールを使用して一時的または永続的に無効にすることは可能です。構成上の制限については、 「監査ログ配信の制限」を参照してください。
ログ配信設定を無効にするには:
- アカウント管理者として、Databricks アカウント コンソールにログインします。
- [設定 ] をクリックします。
- [ ログ配信 ] をクリックします。
- 無効にするログ配信設定の横にある、名前の右側にあるケバブメニュー
をクリックします。
- 無効にするには、[ ログ配信を無効にする] を選択します。
- 有効にするには、 [ ログ配信を有効にする] を選択します。
潜在
- ログ配信の設定から最大1時間後までは、監査配信が開始され、JSONファイルにアクセスできるようになります。
- 監査ログの配信が開始されると、通常、監査可能なイベントは 1 時間以内にログに記録されます。 新しい JSON ファイルは、各ワークスペースの既存のファイルを上書きする可能性があります。 上書きにより、アカウントへの読み取りまたは削除アクセス権を必要とせずに、正確に一度のセマンティクスが保証されます。
- ログ配信設定を有効または無効にすると、有効になるまでに最大 1 時間かかる場合があります。
場所
配送場所は次のとおりです。
gs://<bucket-name>/<delivery-path-prefix>/workspaceId=<workspaceId>/date=<yyyy-mm-dd>/auditlogs_<internal-id>.json
オプションの配信パスプレフィックスを省略すると、配信パスには <delivery-path-prefix>/は含まれません。
単一のワークスペースに関連付けられていないアカウントレベルの監査イベントは、 workspaceId=0 パーティションに配信されます。
監査ログ配信の制限事項
アカウントコンソールのログ配信作成機能は、アカウントレベルのログのみをサポートしています。ワークスペースレベルの設定を作成するには、ログ配信APIを使用する必要があります。
アカウントレベルで有効にできる監査ログ配信設定は2つまでという制限があります。また、ワークスペースごとに最大 2 つのワークスペースレベルの構成を作成して有効にすることができるため、同じワークスペース ID は 2 つまでの配信構成に表示できます。
ログ配信設定は削除できません。無効化することしかできません。無効化された設定を再度有効にすることは可能ですが、上記で説明した制限を超えるとリクエストは失敗します。
Databricksを使用した監査ログの分析の詳細については、「監査ログ システムテーブル リファレンス」を参照してください。
監査ログ スキーマに関する考慮事項
- アクションに時間がかかる場合、リクエストとレスポンスは別々にログに記録されますが、リクエストとレスポンスのペアの
requestIdは同じものになります。 - オートスケーリングによるクラスターのサイズ変更やスケジューリングによるジョブの起動などの自動アクションは、
System-Userユーザーによって実行されます。 requestParamsフィールドは切り捨てられます。JSON表現のサイズが100 KBを超えると、値は切り捨てられ、切り捨てられたエントリに文字列... truncatedが追加されます。まれに、切り捨て後のマップが100 KBを超える場合がありますが、その場合は代わりに空の値を持つ1つのTRUNCATEDキーが設定されます。
監査ログのスキーマの例
クラウドストレージに配信される監査ログは、JSON でイベントを出力します。serviceName プロパティと actionName プロパティは、イベントを識別します。名前付け規則は、Databricks REST API に従います。
次の例は、createMetastoreAssignmentイベントのものです。
{
"version": "2.0",
"auditLevel": "ACCOUNT_LEVEL",
"timestamp": 1629775584891,
"orgId": "3049056262456431186970",
"shardName": "test-shard",
"accountId": "77636e6d-ac57-484f-9302-f7922285b9a5",
"sourceIPAddress": "10.2.91.100",
"userAgent": "curl/7.64.1",
"sessionId": "f836a03a-d360-4792-b081-baba525324312",
"userIdentity": {
"email": "someone@example.com",
"subjectName": null
},
"serviceName": "unityCatalog",
"actionName": "createMetastoreAssignment",
"requestId": "ServiceMain-da7fa5878f40002",
"requestParams": {
"workspace_id": "30490590956351435170",
"metastore_id": "abc123456-8398-4c25-91bb-b000b08739c7",
"default_catalog_name": "main"
},
"response": {
"statusCode": 200,
"errorMessage": null,
"result": null
},
"MAX_LOG_MESSAGE_LENGTH": 16384
}