Important
この機能は ベータ版です。 Azure Databricksはベータ期間中に対象となるワークスペースのコードセキュリティスキャンを可能にします。
Important
セキュリティスキャンは誤検知を生じさせることがあり、すべてのセキュリティバグを特定できないことがあります。
Databricks Appsは、ソースコード変更をデプロイするたびに、アプリのソースコードをスキャンして一般的なセキュリティ問題を探します。 スキャンはデプロイメントをブロックしたり失敗したりしません。 検出結果はアプリのセキュリティページに表示され、アプリマネージャーがそれらを確認してトリアージできます。
コードセキュリティスキャンの仕組み
コードセキュリティスキャンは、デプロイの一環としてアプリのソースコードに対して静的分析を行います:
- ソースコード変更時に実行:ソースコード変更をデプロイすると自動的にスキャンが行われます。 ソースコード変更なしで既存ビルドを再利用するデプロイはスキャンされません。
- ソースのみを読み取る: スキャナーはソースコードを実行せずに解析し、アプリを改変しません。
- 非ブロッキング: スキャナーはセキュリティ検出結果を報告しますが、デプロイをブロックしたり失敗させたりはしません。 調査結果はその深刻さとセキュリティ要件に基づいて確認し対処してください。
- フェイルセーフ:スキャンが完了できない場合、結果はクリーンではなく利用不可として記録されるため、スキャン漏れが合格と間違われることはありません。
スキャンが検出するもの
コードセキュリティスキャンはアプリのソースコードのみを分析します。 アプリの依存関係をスキャンせず、実行中のアプリの動的解析も行いません。
スキャナーは、Azure DatabricksがDatabricksアプリ向けに選択・作成・調整した検出ルールを使用しています。 Azure Databricksは、検出のカバレッジと正確性を向上させるために、ルールを追加、削除、更新することがあります。 これらのルールは、以下のような一般的な脆弱性のクラスを検出します:
- ハードコードされた認証情報と秘密情報
- SQL インジェクション
- クロスサイト スクリプティング (XSS)
- サーバー側リクエストフォージェリ (SSRF)
- パストラバーサル
- 安全でないデシリアライゼーション
- 許容的クロスオリジンリソース共有 (CORS) 構成
- 安全でないYAMLロード
- ユーザー(代理)トークンの公開
Note
クリーンスキャンでも、アプリが安全であることは保証されません。 スキャナーは特定の問題群をチェックするため、そのルールでカバーされない問題は検出されません。 特に機密データを扱うアプリでは、独自のコードレビューやセキュリティ対策を必ず維持してください。 さらなるセキュリティガイダンスについては、 セキュリティのベストプラクティスをご覧ください。
セキュリティ調査結果を見る
アプリのセキュリティ検出結果を表示するには、アプリに対する CAN MANAGE 権限が必要です。
Databricks アプリのアクセス許可の構成を参照してください。
調査結果を見るには:
- ワークスペースでアプリを開いてください。 「Databricks アプリの詳細を確認する」を参照してください。
- セキュリティ タブを選択します。
セキュリティページには、選択したデプロイメントの調査結果がファイルごとにグループ化されています。 各検出結果には次のものが含まれます。
- 一致したチェック
- ファイルパスと行番号
- 重症度レベル
- 問題の説明
調査結果では以下の重症度レベルが用いられています。
- クリティカル: アプリに頼る前に対処すべき、脆弱性の可能性が高いものなどの高重大度の問題。
- 警告: 該当する場合は、確認し、必要に応じて修正してください。
- 情報: リスクの低い指摘や安全なコーディングの提案として留意すべきです。
ページ上部の要約には、未解決の検出結果数、重大な検出結果数、全体的なリスクレベル、解決済みまたは無視した検出結果数が表示されます。 リスクレベルは未対応の検出結果とその深刻度を反映します。解決または無視した検出結果はリスクレベルに含まれません。 調査結果を重大度でフィルタリングし、最も重要な問題に焦点を当てましょう。
以前のデプロイの結果を確認するには、コードバージョンピッカーを使って前のデプロイを選択してください。
トリアージの所見
トリアージは、どの検出結果に対処したかを追跡できます。 検出結果の表示と同様に、アプリでトリアージを行うには、アプリに対する CAN MANAGE 権限が必要です。
各発見は以下のいずれかの状態を持ちます。
- オープン:新しい検出結果のデフォルトの状態。
- 解決済み: 根本的な問題を修正した後、検出結果を解決済みとしてマークしてください。
- 無視: あなたのアプリに当てはまらない、または既知のリスクとして受け入れた検出結果を無視すること。
検出結果をトリアージするには、検出結果で「解決済みにする」または「無視」を選択します。 発見を「オープン」に戻すには、「再度開く」を選択してください。 複数の所見を同時にトリアージするには、複数の所見を選択して一括でアクションを適用します。
トリアージ状態は検出項目ごとに保存され、デプロイ間で持続します。 同じ問題が後続のデプロイで発生しても、設定した状態が保持されるため、すでに確認した問題を再トリアージしなくなります。
スキャン結果
セキュリティページはデプロイメントのスキャン結果を反映しています。 スキャンの結果はスキャンで見つかったものを表し、スキャン状態はスキャン完了の有無を示します。
結果はスキャン実行時に適用されていた検出ルールを反映しています。 Azure Databricksはルール変更時に既存のデプロイメントを再スキャンしないため、以前の結果(No security findingsを含む)は現在のルールを反映していない可能性があります。 次のソースコード変更時に自動的に新しいスキャンが実行されます。
以下の結果が、スキャンで見つかった内容を示しています。
| 結果 | Description |
|---|---|
| セキュリティ上の問題はありません | スキャンは完了し、現在のルールセットから問題は見つかりませんでした。 |
| 結果 | スキャンで1つ以上の問題が見つかり、確認とトリアージが必要です。 |
以下のステータスはスキャン自体の状態を表しています。
| ステータス | Description |
|---|---|
| このデプロイメントをスキャンしています | スキャンは進行中です。 スキャンが終わるとページは自動的に更新されます。 |
| スキャンが完了していません | スキャンは実行されましたが、いくつかのファイルやルールが飛ばされたため、結果は部分的なものかもしれません。 |
| スキャン結果は利用できません | このデプロイではスキャンが完了できませんでした。 |
| このデプロイはスキャンされていません | このデプロイはソースコード変更なしで既存のビルドを再利用しました。 コード変更後に再デプロイしてスキャンしてください。 |