Databricks Appsのコードセキュリティスキャン
ベータ版
この機能はベータ版です。Databricksでは、ベータ版の期間中、対象となるワークスペースに対してコードセキュリティスキャンを有効化できます。
セキュリティ スキャンでは誤検知が発生したり、すべてのセキュリティ バグを特定できない可能性があります。
Databricks Appsは、ソースコードを変更するたびに、アプリのソースコードに一般的なセキュリティ上の問題がないかスキャンします。スキャンによってデプロイがブロックされたり、失敗したりすることはありません。スキャン結果はアプリの「 セキュリティ 」ページに表示されます。そこでアプリ管理者が結果を確認し、トリアージを行うことができます。
コードのセキュリティスキャンの仕組み
コードセキュリティスキャンは、デプロイメントの一部としてアプリのソースコードに対して静的解析をランします。
- ソースコード変更時にラン : ソースコードの変更をデプロイすると、スキャンが自動的にランされます。ソースコードを変更せずに既存のビルドを再利用するデプロイはスキャンされません。
- ソースのみを読み取ります :スキャナーはソースコードを実際に実行せずに解析し、アプリを修正することはありません。
- ノンブロッキング : スキャナーはセキュリティ上の懸念事項を報告しますが、デプロイをブロックしたり失敗させたりしません。重要度とセキュリティ要件に基づいて、検出結果を確認し、対処してください。
- 安全確保 :スキャンが完了できない場合、結果は「クリーン」ではなく「利用不可」として記録されます。そのため、スキャンが欠落しているものが「合格」と誤認されることはありません。
スキャンで検出されるもの
コードセキュリティスキャンは、アプリのソースコードのみを分析します。アプリの依存関係をスキャンせず、実行中のアプリの動的分析も実行しません。
スキャナーは、 Databricksが Databricks Apps用に選択、作成、調整した検出ルールを使用します。Databricksは、検出範囲と精度を向上させるために、ルールを随時追加、削除、または更新する場合があります。これらのルールは、次のような一般的なクラスの脆弱性を検出します。
- ハードコードされた資格情報とシークレット
- SQL インジェクション
- クロスサイトスクリプティング(XSS)
- サーバーサイドリクエストフォージェリ(SSRF)
- パストラバーサル
- 安全でないデシリアライゼーション
- 許容的なクロスオリジンリソース共有(CORS)構成
- 安全でないYAMLの読み込み
- ユーザー (代理) トークンの露出
クリーンなスキャンは、アプリが安全であることを保証するものではありません。スキャナーは特定のセットの問題を確認するため、そのルールでカバーされない問題は検出されません。特に機密データを扱うアプリの場合は、独自のコード レビューとセキュリティ プラクティスを維持してください。詳細なセキュリティガイダンスについては、「セキュリティのベスト プラクティス」を参照してください。
セキュリティ検出事項を表示
セキュリティ検索を表示するには、アプリに対するCAN MANAGE権限が必要です。Databricks アプリのアクセス許可を構成するを参照してください。
検出結果を表示するには:
- ワークスペースでアプリを開きます。Databricks アプリの詳細を表示するを参照してください。
- セキュリティ tabを選択します。
![Databricks アプリの [セキュリティ] ページ。結果の概要と、ファイルごとにグループ化された結果が表示されます。](/aws/ja/assets/images/scan-findings-98143c5de49d98454688250542b08789.png)
「 セキュリティ 」ページには、選択したデプロイメントの検出結果がファイルごとにグループ化されて表示されます。各検出結果には以下が含まれます。
- 一致したチェック
- ファイルパスと行番号
- 重大度レベル
- 問題の説明
検出結果では、次の重大度レベルが使用されます。
- 重要 : アプリに依存する前に対処する必要がある、可能性の高い脆弱性などの重大度の高い問題。
- 警告 :アプリに該当する場合は確認および修正が必要な潜在的な問題。
- 情報 : 低リスクの観察事項またはセキュアなコーディングに関する推奨事項(注意が必要)。
ページ上部の概要には、オープンな検出結果の数、重大な検出結果の数、全体的なリスクレベル、解決または無視した検出結果の数が表示されます。リスクレベルには、オープンな検出結果とその重大度が反映されます。解決または無視した検出結果はカウントされません。重大度別に検出結果をフィルタリングして、最も重要な問題に集中します。
以前のデプロイの結果を確認するには、コード バージョンのピッカーを使って以前のデプロイを選択します。
検出結果のトリアージ
トリアージを使用すると、対処した検出結果を追跡できます。検出結果を表示する場合と同様に、トリアージを行うにはアプリに対する CAN MANAGE 権限が必要です。
各検索結果の状態は以下のいずれかです。
- オープン : 新しい検出結果のdefaultの状態。
- 解決済み : 基になる問題を修正した後に、検出事項を解決済みにマークします。
- 無視 :アプリに適用されない、または既知のリスクとして受け入れた検出結果を無視します。
検出結果をトリアージするには、検出結果の [解決済みとしてマーク] または [無視] を選択します。検出結果を未解決に戻すには、 [再オープン] を選択します。複数の検出結果を一度にトリアージするには、複数の検出結果を選択して一括でアクションを適用します。
トリアージの状態は検出ごとに保存され、デプロイ間で維持されます。同じ問題が後のデプロイで現れた場合、設定した状態が保持されるため、すでに確認済みの問題を再トリアージする必要はありません。
スキャン結果
「 セキュリティ 」ページには、デプロイメントのスキャン結果が反映されます。スキャン結果はスキャンで何が検出されたかを示し、スキャンステータスはスキャンが完了したかどうかを示します。
結果は、スキャンのラン時に有効だった検出ルールを反映します。Databricks はルールが変更されても既存のデプロイを再スキャンしないため、以前の結果( セキュリティ上の懸念事項はありません を含む)が最新のルールを反映していない可能性があります。ソースコードを変更すると、次のスキャンが自動的にランします。
以下の結果は、スキャンによって検出された内容を示しています:
結果 | 説明 |
|---|---|
セキュリティ検出事項なし | スキャンが完了しましたが、現在のルールセットからは問題は見つかりませんでした。 |
検出結果 | スキャンで、レビューおよびトリアージが必要な問題が1つ以上見つかりました。 |
以下のステータスは、スキャン自体の状態を示しています:
ステータス | 説明 |
|---|---|
このデプロイメントをスキャンしています | スキャンを実行しています。スキャンが完了すると、ページが自動的に更新されます。 |
スキャンが不完全です | スキャンは実行されましたが、一部のファイルまたはルールがスキップされたため、結果が不完全である可能性があります。 |
スキャン結果を取得できませんでした | このデプロイメントのスキャンを完了できませんでした。 |
このデプロイはスキャンされませんでした | デプロイメントは、ソースコードを変更せずに既存のビルドを再利用しました。コード変更後にスキャンするには、再度デプロイしてください。 |