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

Databricks アプリのベスト プラクティス

このページでは、Databricks アプリの開発と実行に関する重要なベスト プラクティスの一覧を示します。これらのガイドラインは、セキュリティ、パフォーマンス、およびプラットフォームの要件に焦点を当てています。

一般的なベストプラクティス

  • データ処理には Databricks ネイティブの機能を使用します 。App コンピュートは、UI レンダリング用に最適化されています。 クエリとデータセットには [ Databricks SQL ] を、バッチ処理には [ Lakeflow ジョブ] を、推論ワークロードの AI にはモデルサービングを使用します。

  • グレースフル シャットダウン処理を実装します 。アプリは、 SIGTERM シグナルを受信してから 15 秒以内にシャットダウンするか、 SIGKILLで強制的に終了する必要があります。

  • 特権操作は避けてください 。アプリは特権のないユーザーとして実行され、ルート アクセスなどの昇格されたアクセス許可を必要とするアクションを実行できません。

  • プラットフォーム管理型ネットワーキングを理解する 。リクエストはリバースプロキシ経由で転送されるため、アプリはリクエストの発信元に依存することはできません。Databricks は TLS ターミネーションを処理し、アプリは HTTP/2 クリアテキスト (H2C) をサポートする必要があります。カスタム TLS 処理を実装しないでください。

  • 正しいホストとポートにバインドします 。アプリは 0.0.0.0 でリッスンし、 DATABRICKS_APP_PORT 環境変数で指定されたポートを使用する必要があります。詳細については、 環境変数 を参照してください。

  • コンテナの起動時間を最小限に抑えます 。初期化ロジックを軽量にして、コールドスタートのレイテンシを短縮します。スタートアップ中に大きな依存関係のインストールや外部 API 呼び出しなどの操作をブロックしないようにします。必要な場合にのみ、重いリソースをロードします。

  • stdout と stderr にログを記録します 。Databricks は、標準出力ストリームとエラー ストリームからログをキャプチャします。これらをすべてのログに使用して、ログが Databricks UI に表示されるようにします。ローカルファイルへのログの書き込みは避けてください。

  • 予期しないエラーを適切に処理します 。グローバル例外処理を実装して、キャッチされないエラーによるクラッシュを防ぎます。スタックトレースや機密データを公開せずに、適切なHTTPエラー応答を返します。

  • ピン留め 依存関係のバージョン . requirements.txtファイルで正確なバージョン番号を使用して、ビルド間で一貫した環境を確保します。ピン留めされていないパッケージや最新バージョンのパッケージの使用は避けてください。

  • ユーザー入力を検証し、サニタイズします 。内部向けアプリであっても、常に受信データを検証し、サニタイズして、インジェクション攻撃や不正な形式の入力を防ぎます。

  • 負荷の高い操作には、メモリ内キャッシュを使用します 。クエリ結果や API 応答など、頻繁に使用されるデータをキャッシュして、レイテンシを減らし、冗長な処理を回避します。functools.lru_cachecachetools、または同様のライブラリを使用し、マルチユーザー アプリではキャッシュのスコープを慎重に設定します。

セキュリティのベストプラクティス

  • 最小特権の原則に従います 。ユーザーまたはグループごとに必要な権限のみを付与します。フルコントロールが必要な場合を除き、CAN MANAGEではなくCAN USEを使用してください。権限のベスト プラクティスを参照してください。

  • アプリごとに専用のサービスプリンシパルを使用します 。 サービスプリンシパル認証情報をアプリやユーザー間で共有しないでください。 CAN USECAN QUERYなど、必要な最小限の権限のみを付与します。「 リソースへのアプリ アクセスの管理」を参照してください。

  • シークレットを管理します 。環境変数で生のシークレット値を公開しないでください。アプリ構成で valueFrom を使用し、特にチームの役割が変更された場合に、シークレットを定期的にローテーションします。「 ベスト プラクティス」を参照してください。

  • スコープを最小化し、ユーザーアクションをログに記録 します。ユーザー認証を使用する場合は、アプリに必要なスコープのみをリクエストし、構造化された監査レコードを使用してすべてのユーザー アクションをログに記録します。ユーザー 認証のベストプラクティスを参照してください。

  • アウトバウンド ネットワーク アクセスを制限 します。パッケージリポジトリや外部 APIsなど、アプリに必要なドメインのみを許可します。 dry-実行モードと拒否ログを使用して、構成を検証します。 ネットワークポリシーの設定に関するベストプラクティスを参照してください。

  • 安全なコーディングの実践に従ってください 。SQL クエリをパラメーター化して、インジェクション攻撃を防止し、入力検証やエラー処理などの一般的な安全な開発ガイドラインを適用します。「 ステートメント実行 API: ウェアハウスでの SQL の実行」を参照してください。