監査ログの配信を構成する

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

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

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

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

要件

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

  • アカウント管理者になる。

  • APIsアカウントAPI を使用して配信を設定できるように、 に対して認証します。アカウント 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

注:

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

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

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

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

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

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

    • アカウント内の各ワークスペースに個別の構成を使用する。

    • ワークスペースのグループごとに個別の構成を使用し、グループ内で構成を共有する。

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

注:

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

アカウントAPIへの認証方法

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

次の例を使用して、Databricks アカウントに認証します。 サービスプリンシパルにOAuth使用するか、ユーザーにOAuthを使用できます。 背景については、以下を参照してください。

注:

Databricks のユーザー名とパスワードを使用した基本認証は、2024 年 7 月 10 日にサポートが終了しました。 Databricks 管理パスワードのサポート終了を参照してください。

認証の例については、以下から選択してください。

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

  2. ステップを完了して OAuth アカウント内のサービスプリンシパルのM2M認証を設定します。 「 Databricksを使用してサービスプリンシパルで へのアクセスを認証するOAuth (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を実行します。

    • accountコマンドで使用可能なサブコマンドを一覧表示するには、コマンドdatabricks account <command-name> -hを実行します。

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

  2. アカウント内のユーザーの OAuth U2M 認証を構成するためのステップを完了します。 「OAuth (OAuth U2M) を使用してユーザーアカウントで Databricks へのアクセスを認証する」を参照してください。

  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
    

    注:

    既存の Databricks 構成プロファイルhost フィールドと account_id フィールドが既に設定されている場合は、 --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を実行します。

    • accountコマンドで使用可能なサブコマンドを一覧表示するには、コマンド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 ファイルは数分ごとに配信され、既存のファイルが上書きされる可能性があります。 配信パスは、構成の一部として定義されます。 アカウント全体の監査ログ配信を構成した場合、単一のワークスペースに関連付けられていないアカウント レベルの監査イベントはworkspaceId=0パーティションに配信されます。

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

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

ログ配信APIs使用する

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

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

監査ログの配信の制限

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

ログ配信設定を削除することはできませんが、無効にすることはできます。無効にした構成を再度有効にすることはできますが、前述の制限に違反するとリクエストが失敗します。