Microsoft 以外のスキャン ツールを統合する

GitHub Advanced Security for Azure DevOps は、Static Analysis Results Interchange Format (SARIF) ファイルの情報を使用して、リポジトリにコード スキャン アラートを作成します。 SARIF ファイルのプロパティは、アラートのタイトル、場所、説明テキストなどのアラート情報を設定するために使用されます。

SARIF ファイルは、CodeQL などの多くのスタティック分析セキュリティ テスト ツールを使用して生成できます。 結果は SARIF バージョン 2.1.0 を使用する必要があります。 SARIF の詳細については、 SARIF のチュートリアルを参照してください。

[前提条件]

カテゴリ 要求事項
アクセス許可 - リポジトリのすべてのアラートの概要を表示するには、リポジトリに対する「コントリビューター」権限が必要です。
- Advanced Security でアラートを解除するには、プロジェクト管理者の権限が必要です。
- Advanced Security でアクセス許可を管理するには、プロジェクト コレクション管理者グループのメンバーであること、またはAdvanced Security: 設定の管理のアクセス許可が許可に設定されている必要があります。

高度なセキュリティの権限の詳細については、「高度なセキュリティ権限の管理」を参照してください。

Azure Pipelines を使用してコード スキャン分析をアップロードする

Azure Pipelines を使用して Microsoft SARIF 以外のファイルをリポジトリにアップロードするには、パイプラインで AdvancedSecurity-Publish タスクを使用する必要があります。これは、GitHub Advanced Security for Azure DevOps にバンドルされているタスクの一部です。 使用する主な入力パラメーターは次のとおりです。

  • SarifsInputDirectory: アップロードする SARIF ファイルのディレクトリを構成します。 予想されるディレクトリ パスは絶対パスです。
  • Category: 必要に応じて、SARIF ファイル内の結果のカテゴリを割り当てます。 このパラメーターを使用すると、同じコミットを複数の方法で分析し、GitHub のコード スキャン ビューを使用して結果を確認できます。 たとえば、複数のツールを使用して分析できます。mono リポジトリでは、変更されたファイルのサブセットに基づいてリポジトリのさまざまなスライスを分析できます。

次のコードは、Microsoft Defender for Cloud チームが所有する Microsoft Security DevOps タスク との統合の例を示しています。

trigger:
- main

pool:
  vmImage: ubuntu-latest

steps:
- task: MicrosoftSecurityDevOps@1
  inputs:
    command: 'run'
    categories: 'IaC'
- task: AdvancedSecurity-Publish@1
  inputs:
    SarifsInputDirectory: '$(Build.ArtifactStagingDirectory)/.gdn/'

結果フィンガープリントの生成

SARIF ファイルに partialFingerprintsが含まれていない場合は、 AdvancedSecurity-Publish タスクによって partialFingerprints フィールドが計算され、アラートの重複を防ぐことができます。 Advanced Security では、リポジトリに SARIF ファイルと静的分析で使用されるソース コードの両方が含まれている場合にのみ、 partialFingerprints を作成できます。 重複するアラートの防止の詳細については、「 実行全体のコード スキャン アラートを追跡するためのデータの作成を参照してください。

ツールの結果を検証する

SARIF プロパティがアップロードでサポートされているサイズであり、ファイルがコード スキャンと互換性があることを確認できます。 さらに、各 SARIF ファイルに存在するデータ オブジェクトには特定の制限があります。

SARIF データ 極限
ファイルあたりの実行数 20
実行ごとの結果 5,000 Advanced Security は、結果のセキュリティ フィールドが空でないかどうかを確認し、上位 5,000 件の結果を選択するように並べ替えます。 それ以外の場合は、到着した 5,000 件の結果を選択します。
実行ごとのルール なし 今後、1 回の実行あたり 25,000 ルールの制限。
実行あたりのツール拡張機能数 なし 今後、1 回の実行あたり 100 個のツール拡張機能の制限。
結果あたりの場所数 なし Advanced Security では、最初の 100 件の結果が選択されます。 アラート インターフェイスには、結果ごとに最初の場所のみが表示されます。
ルールあたりのタグ数 なし Advanced Security は最初の 10 個を選択します。
アラートの制限 なし  

SARIFファイルに関する問題のトラブルシューティングの詳細については、 SARIFファイルの検証を参照してくださいSARIF ファイルが Advanced Security の要件に特に準拠しているかどうかを検証するには、SARIF 検証コントロールを参照しAzure DevOps ingestion rulesを選択します。