監査ログ配信 を構成する

この記事では、Amazon S3 ストレージバケットへの JSON ファイル形式の監査ログの低レイテンシー配信を設定する方法について説明します。

監査ログが S3 ストレージバケットに配信されたら、そのデータを使用状況分析に使用できるようにすることができます。 Databricks は、アカウント内のワークスペースごとに個別の JSON ファイルを提供し、アカウント レベルのイベント用に個別のファイルを配信します。 ファイル スキーマと監査イベントの詳細については、「 監査ログのリファレンス」を参照してください。

オプションで、ログ配信用に作成した IAMロール に使用されるアカウント以外の AWS アカウントにログを配信できます。 これにより、複数の AWS アカウントからワークスペースを同じ S3 バケットに配信するように設定するなど、柔軟性が得られます。 このオプションでは、クロスアカウント IAM ロールを参照する S3 バケットポリシーを設定する必要があります。 手順とポリシーテンプレートは、「 ステップ 3: クロスアカウントサポート」に記載されています。

実行中のワークスペースのログの配信に加えて、キャンセルされたワークスペースのログが配信され、 ワークスペース の最終日を表すログが適切に配信されるようにします。

要件

監査ログの配信を構成するには、次のことを行う必要があります。

  • アカウント管理者であること。

  • アカウント API を使用して配信を設定できるように、 APIs に対して認証します。 「 アカウント API に対する認証方法」を参照してください。

高レベルのフロー

このセクションでは、監査ログ配信の高レベルのフローについて説明します。

  • ステップ 1: ストレージを設定する: AWS で、新しい S3 バケットを作成します。 Databricks APIsを使用して、アカウント API を呼び出して、バケット名を使用するストレージ設定オブジェクトを作成します。

  • ステップ 2: 認証情報を設定する: AWS で、適切な AWS IAMロールを作成します。 Databricks APIsを使用して、アカウント API を呼び出して、IAM ロールの ARN を使用する認証情報設定オブジェクトを作成します。

  • (オプション) ステップ 3: クロスアカウントのサポート: ログ配信用に作成した IAM ロールのアカウント以外の AWS アカウントにログを配信するには、S3 バケットポリシーを追加します。 このポリシーは、前のステップで作成したクロスアカウント IAM ロールの ID を参照します。

  • ステップ 4: ログ配信 API を呼び出す: アカウント API を呼び出して、前のステップの認証情報とストレージ設定オブジェクトを使用するログ配信設定を作成します。

これらのステップを完了すると、JSON ファイルにアクセスできるようになります。 配送場所は、次の形式です。

<bucket-name>/<delivery-path-prefix>/workspaceId=<workspaceId>/date=<yyyy-mm-dd>/auditlogs_<internal-id>.json

アカウント全体の監査ログ配信を設定すると、1 つのワークスペースに関連付けられていないアカウントレベルの監査イベントが workspaceId=0 パーティションに配信されます。

ワークスペース の数に基づく考慮事項

配信構成は、ワークスペースの数とそれらが配置されている場所によって異なる場合があります。

  • Databricks アカウントにワークスペースが 1 つある場合: 大まかなフローで説明されている手順に従って、ワークスペース用に 1 つの構成オブジェクトを作成します。

  • 同じ Databricks アカウントに複数のワークスペースがある場合: 次のいずれかの操作を行います。

    • アカウント内のすべてのワークスペースに対して同じ設定 (ログ配信 S3 バケットと IAMロール) を共有します。 これは、アカウントレベルの監査ログも配信する唯一の構成オプションです。 これはデフォルトのオプションです。

    • アカウントのワークスペースごとに個別の設定を使用します。

    • ワークスペースのグループごとに個別の構成を使用し、それぞれが構成を共有します。

  • 複数のワークスペースがあり、それぞれが個別の Databricks アカウントに関連付けられている場合: アカウントごとに一意のストレージおよび資格情報構成オブジェクトを作成します。 これらの設定オブジェクト間で S3 バケットまたは IAMロール を再利用できます。

ワークスペースがアカウント API を使用して作成されていない場合でも、アカウント API を使用してログ配信を構成できます。

アカウント API に対する認証方法

アカウント API に対して認証するには、サービスプリンシパル用の Databricks OAuth、ユーザー用の Databricks OAuth、または Databricks アカウント管理者のユーザー名とパスワードを使用できます。 Databricks では、ユーザーまたはサービスプリンシパルに Databricks OAuth を使用することを強くお勧めします。 サービスプリンシパルは、自動化ツール、ジョブ、アプリケーションで使用するために Databricks で作成する ID です。 「OAuth マシン間 (M2M) 認証」を参照してください。

次の例を使用して、Databricks アカウントに対して認証を行います。 サービスプリンシパルの OAuth、ユーザーの OAuth、またはユーザーのユーザー名とパスワード (レガシー) を使用できます。 背景については、以下を参照してください。

認証の例については、以下から選択します。

  1. Databricks CLI バージョン 0.205 以降をインストールします。 「Databricks CLI のインストールまたは更新」を参照してください。

  2. ステップを完了して、アカウント内のサービスプリンシパルのOAuth M2M認証を設定します。 OAuthマシン間(M2M)認証を参照してください。

  3. .databrickscfg ファイルで Databricks 構成プロファイルを特定するか、手動で作成し、関連する hostaccount_idclient_id 、およびサービスプリンシパルへのclient_secretマッピングに対してプロファイルのフィールドが正しく設定されます。OAuthマシン間(M2M)認証を参照してください。

  4. ターゲットの Databricks CLI コマンドを実行します ( <profile-name>.databrickscfg ファイル内の構成プロファイルの名前を表します)。

    databricks account <command-name> <subcommand-name> -p <profile-name>
    

    たとえば、アカウント内のすべてのユーザーを一覧表示するには、次のようにします。

    databricks account users list -p MY-AWS-ACCOUNT
    
    • 使用可能なアカウント コマンドのリストについては、コマンド databricks account -hを実行します。

    • アカウント・コマンドで使用可能なサブコマンドのリストについては、コマンド databricks account <command-name> -hを実行します。

  1. Databricks CLI バージョン 0.205 以降をインストールします。 「Databricks CLI のインストールまたは更新」を参照してください。

  2. ステップを完了して、アカウント内のユーザーのOAuth U2M認証を構成します。 OAuthユーザーからマシン(U2M)への認証を参照してください。

  3. 次の Databricks CLI コマンドを実行して、ユーザー認証プロセスを開始します。

    databricks auth login --host <account-console-url> --account-id <account-id>
    

    例:

    databricks auth login --host https://accounts.cloud.databricks.com --account-id 00000000-0000-0000-0000-000000000000
    

    host フィールドと account_id フィールドが既に設定されている既存の Databricks 構成プロファイルがある場合は、--host <account-console-url> --account-id <account-id>--profile <profile-name>に置き換えることができます。

  4. 画面の指示に従って、Databricks CLI が関連する Databricks 構成プロファイルを .databrickscfg ファイルに自動的に作成します。

  5. 引き続き画面の指示に従って、Web ブラウザーから Databricks アカウントにサインインします。

  6. ターゲットの Databricks CLI コマンドを実行します ( <profile-name>.databrickscfg ファイル内の構成プロファイルの名前を表します)。

    databricks account <command-name> <subcommand-name> -p <profile-name>
    

    たとえば、アカウント内のすべてのユーザーを一覧表示するには、次のようにします。

    databricks account users list -p ACCOUNT-00000000-0000-0000-0000-000000000000
    
    • 使用可能なアカウント コマンドのリストについては、コマンド databricks account -hを実行します。

    • アカウント・コマンドで使用可能なサブコマンドのリストについては、コマンド databricks account <command-name> -hを実行します。

  1. Databricks CLI バージョン 0.205 以降をインストールします。 「Databricks CLI のインストールまたは更新」を参照してください。

  2. .databrickscfg ファイルで Databricks 構成プロファイルを特定するか、手動で作成し、関連する hostaccount_idusername 、および Databricks ユーザー アカウントへのpasswordマッピング用にプロファイルのフィールドが正しく設定されます。「 基本認証 (レガシー)」を参照してください。

  3. ターゲットの Databricks CLI コマンドを実行します ( <profile-name>.databrickscfg ファイル内の構成プロファイルの名前を表します)。

    databricks account <command-name> <subcommand-name> -p <profile-name>
    

    たとえば、アカウント内のすべてのユーザーを一覧表示するには、次のようにします。

    databricks account users list -p MY-AWS-ACCOUNT
    
    • 使用可能なアカウント コマンドのリストについては、コマンド databricks account -hを実行します。

    • アカウント・コマンドで使用可能なサブコマンドのリストについては、コマンド databricks account <command-name> -hを実行します。

配信の詳細 の監査

アカウントでログ記録を有効にすると、Databricks は人間が判読できる形式で監査ログを定期的に配信場所に自動的に送信します。

  • 待機時間: 初期セットアップまたはその他の構成変更後、変更が有効になるまでに多少の遅延が予想されます。 監査ログ配信の初期設定では、ログ配信が開始されるまでに最大 1 時間かかります。 ログ配信が開始された後、監査可能なイベントは通常 15 分以内にログに記録されます。 追加の構成変更が有効になるまでに通常 1 時間かかります。

  • 暗号化: Databricks は、Amazon S3 サーバー側の暗号化を使用して監査ログを暗号化します。

  • 形式: Databricks は監査ログを JSON 形式で配信します。

  • 場所:配送場所は <bucket-name>/<delivery-path-prefix>/workspaceId=<workspaceId>/date=<yyyy-mm-dd>/auditlogs_<internal-id>.jsonです。 新しいJSONファイルは数分ごとに配信されるため、既存のファイルが上書きされる可能性があります。 配信パスは、構成の一部として定義されます。 アカウント全体の監査ログ配信を構成した場合、1 つのワークスペースに関連付けられていないアカウントレベルの監査イベントは、 workspaceId=0 パーティションに配信されます。

    • Databricks は、バケット内の配信されたログ ファイルをいつでも上書きできます。 ファイルが上書きされた場合、既存のコンテンツは残りますが、監査可能なイベントの追加行がある場合があります。

    • 上書きにより、アカウントへの読み取りまたは削除アクセスを必要とせずに、一度だけセマンティクスが保証されます。

ログ配信 APIs を使用する

ログ配信APIsには、次の追加機能があります。

ログ配信設定のステータスは、API レスポンスの log_delivery_status オブジェクトで確認できます。 log_delivery_statusを使用すると、ステータス(成功または失敗)と、試行または成功した配信の最終時刻を確認できます。

監査ログ配信の制限

アカウントごとに使用できるログ配信構成の数には制限があります (各制限は、課金対象の使用状況や監査ログなど、各ログの種類に個別に適用されます)。 タイプごとに、有効なアカウントレベルの配信設定(ワークスペースフィルターのない設定)を最大2つ作成できます。 さらに、ログの種類ごとにワークスペースごとに 2 つのワークスペース レベルの配信構成を作成して有効にできるため、ログの種類ごとに 2 つまでの配信構成に対して、ワークスペース フィルターに同じワークスペース ID を含めることができます。

ログ配信構成を削除することはできませんが、無効にすることはできます。 無効になっている設定を再度有効にすることができますが、前述の制限に違反している場合、要求は失敗します。