次の方法で共有


ビルド タスクの構成とカスタマイズ

2022 年 12 月 31 日より、Microsoft セキュリティ コード分析 (MSCA) 拡張機能は廃止されます。 MSCA は、Microsoft Security DevOps の Azure DevOps 拡張機能に置き換えられます。 構成に関する記事の手順に従い、拡張機能のインストールと構成を行ってください。

この記事では、各ビルド タスクで使用できる構成オプションについて詳しく説明します。 この記事では、最初にセキュリティ コード分析ツールのタスクについて説明します。 最後に、後処理タスクについて説明します。

マルウェア対策スキャナータスク

マルウェア対策スキャナーのビルド タスクには、Windows Defender が有効になっているビルド エージェントが必要です。 ホストされた Visual Studio 2017 以降では、このようなエージェントが提供されます。 ビルド タスクは、Visual Studio 2015 でホストされているエージェントでは実行されません。

これらのエージェントで署名を更新することはできませんが、署名は常に 3 時間未満にする必要があります。

タスクの構成の詳細は、次のスクリーンショットとテキストに示されています。

マルウェア対策スキャナー ビルド タスクの構成

スクリーンショットの [種類 ] リスト ボックスで、[ 基本 ] が選択されています。 スキャンをカスタマイズするコマンド ライン引数を指定するには、[ カスタム ] を選択します。

Windows Defender では、Windows Update クライアントを使用して署名をダウンロードしてインストールします。 ビルド エージェントで署名の更新が失敗した場合、 HRESULT エラー コードは Windows Update から送信される可能性があります。

Windows Update のエラーとその軽減策の詳細については、 コンポーネント別の Windows Update エラー コード と、 Windows Update エージェント - エラー コードに関する TechNet の記事を参照してください。

このタスクの YAML 構成の詳細については、マルウェア対策 YAML オプションを確認してください

BinSkim タスク

BinSkim タスクを実行する前に、ビルドが次のいずれかの条件を満たしている必要があります。

  • ビルドでは、マネージド コードからバイナリ 成果物が生成されます。
  • BinSkim を使用して分析したいコミットされたバイナリ成果物があります。

タスクの構成の詳細は、次のスクリーンショットと一覧に示されています。

BinSkim ビルド タスクの構成

  • .pdb デバッグ ファイルが生成されるように、ビルド構成を Debug に設定します。 BinSkim はこれらのファイルを使用して、出力バイナリの問題をソース コードにマップします。
  • 独自のコマンド ラインの調査と作成を回避するには、次の手順を実行します。
    • [ 種類 ] ボックスの一覧で [ 基本] を選択します。
    • [関数] ボックスの一覧で [分析] を選択します。
  • [ターゲット] に、ファイル、ディレクトリ、またはフィルター パターンの 1 つ以上の指定子を入力します。 これらの指定子は、分析する 1 つ以上のバイナリを特定します。
    • 複数の指定したターゲットは、セミコロン (;)で区切る必要があります。
    • 指定子には、1 つのファイルを指定することも、ワイルドカードを含めることもできます。
    • ディレクトリの仕様は常に \* で終わる必要があります。
    • 例:
           *.dll;*.exe
           $(BUILD_STAGINGDIRECTORY)\*
           $(BUILD_STAGINGDIRECTORY)\*.dll;$(BUILD_STAGINGDIRECTORY)\*.exe;
  • [種類] リストで [コマンド ライン] を選択した場合は、次に binskim.exeを実行する必要があります。
    • binskim.exe する最初の引数が動詞 分析 の後に 1 つ以上のパス指定が続いていることを確認します。 各パスには、完全パスまたはソース ディレクトリを基準とするパスを指定できます。
    • 複数のターゲット パスをスペースで区切る必要があります。
    • /o または /output オプションは省略できます。 出力値が追加または置き換えられます。
    • 標準のコマンド ライン構成を次に示します。
           analyze $(Build.StagingDirectory)\* --recurse --verbose
           analyze *.dll *.exe --recurse --verbose

ターゲットのディレクトリを指定する場合は、末尾の \* が重要です。

BinSkim コマンド ライン引数、ID による規則、または終了コードの詳細については、 BinSkim ユーザー ガイドを参照してください。

このタスクの YAML 構成の詳細については、BinSkim YAML オプションを確認してください

クレデンシャル スキャナー タスク

タスクの構成の詳細は、次のスクリーンショットと一覧に示されています。

Credential Scanner ビルド タスクの構成

使用可能なオプションは次のとおりです。

  • 表示名: Azure DevOps タスクの名前。 既定値は [資格情報スキャナーの実行] です
  • ツールのメジャー バージョン: 使用可能な値には 、CredScan V2CredScan V1 が含まれます。 CredScan V2 バージョンを使用することをお勧めします。
  • 出力形式: 使用可能な値には、 TSVCSVSARIFPREfast が含まれます。
  • ツールのバージョン: [最新] を選択することをお勧めします。
  • スキャン フォルダー: スキャンするリポジトリ フォルダー。
  • 検索ファイルの種類: スキャンに使用する検索ファイルを検索するためのオプション。
  • 抑制ファイル: JSON ファイルは、出力ログの問題を抑制できます。 抑制シナリオの詳細については、この記事の FAQ セクションを参照してください。
  • 詳細出力: 説明不要です。
  • バッチ サイズ: 資格情報スキャナーの実行に使用される同時実行スレッドの数。 既定値は 20 です。 指定できる値の範囲は 1 ~ 2,147,483,647 です。
  • 一致タイムアウト: 検索者の一致を試行してからチェックを破棄するまでの時間 (秒単位)。
  • ファイル スキャン読み取りバッファー サイズ: コンテンツの読み取り中に使用されるバッファーのサイズ (バイト単位)。 既定値は 524,288 です。
  • 最大ファイル スキャン読み取りバイト数: コンテンツ分析中にファイルから読み取る最大バイト数。 既定値は 104,857,600 です。
  • コントロール オプション>このタスクを実行する: タスクを実行するタイミングを指定します。 より複雑な条件を指定するには、[ カスタム条件 ] を選択します。
  • バージョン: Azure DevOps 内のビルド タスクのバージョン。 このオプションは頻繁に使用されません。

このタスクの YAML 構成の詳細については、Credential Scanner の YAML オプションを確認してください

Roslyn Analyzers のタスク

Roslyn Analyzers タスクを実行する前に、ビルドが次の条件を満たしている必要があります。

  • ビルド定義には、C# または Visual Basic コードをコンパイルするための組み込みの MSBuild または VSBuild ビルド タスクが含まれています。 アナライザー タスクは、Roslyn アナライザーを有効にして MSBuild コンパイルを実行するために、組み込みタスクの入力と出力に依存します。
  • このビルド タスクを実行するビルド エージェントには Visual Studio 2017 バージョン 15.5 以降がインストールされているため、コンパイラ バージョン 2.6 以降が使用されます。

タスクの構成の詳細は、次の一覧とメモに示されています。

使用可能なオプションは次のとおりです。

  • ルールセット: 値は 、SDL RequiredSDL Recommended、または独自のカスタム ルール セットです。
  • アナライザーのバージョン: [最新] を選択することをお勧めします。
  • コンパイラ警告抑制ファイル: 抑制される警告 ID の一覧を含むテキスト ファイル。
  • コントロール オプション>このタスクを実行する: タスクを実行するタイミングを指定します。 より複雑な条件を指定するには、[ カスタム条件 ] を選択します。

  • Roslyn アナライザーはコンパイラと統合され、csc.exe コンパイルの一部としてのみ実行できます。 そのため、このタスクでは、ビルドで以前に実行したコンパイラ コマンドを再生するか、もう一度実行する必要があります。 この再生または実行は、MSBuild ビルド タスク ログについて Azure DevOps (旧称 Visual Studio Team Services) にクエリを実行することによって行われます。

    タスクがビルド定義から MSBuild コンパイル コマンド ラインを確実に取得する他の方法はありません。 ユーザーがコマンド ラインを入力できるようにフリーフォーム テキスト ボックスを追加することを検討しました。 しかし、これらのコマンド ラインを -date up-to保持し、メイン ビルドと同期するのは困難です。

    カスタム ビルドでは、コンパイラ コマンドだけでなく、コマンドのセット全体を再生する必要があります。 このような場合、Roslyn アナライザーを有効にすることは簡単でも信頼性も高くありません。

  • Roslyn アナライザーはコンパイラと統合されています。 Roslyn アナライザーを呼び出すには、コンパイルが必要です。

    この新しいビルド タスクは、既にビルドされている C# プロジェクトを再コンパイルすることによって実装されます。 新しいタスクでは、元のタスクと同じビルド定義またはビルド定義内の MSBuild および VSBuild ビルド タスクのみが使用されます。 ただし、この場合、新しいタスクでは Roslyn Analyzers が有効になっている状態でそれらを使用します。

    新しいタスクが元のタスクと同じエージェントで実行されている場合、新しいタスクの出力 によって、ソース フォルダー内の元のタスクの出力が上書きされます。 ビルド出力は同じですが、MSBuild を実行し、成果物のステージング ディレクトリに出力をコピーしてから、Roslyn Analyzers を実行することをお勧めします。

Roslyn Analyzers タスクのその他のリソースについては、 Roslyn ベースのアナライザーを確認してください。

このビルド タスクによってインストールおよび使用されているアナライザー パッケージは、NuGet ページ Microsoft.CodeAnalysis.FxCopAnalyzers にあります。

このタスクの YAML 構成の詳細については、Roslyn Analyzers の YAML オプションを確認してください

TSLint タスク

TSLint の詳細については、 TSLint GitHub リポジトリを参照してください。

ご存知かもしれませんが、 TSLint GitHub リポジトリ のホーム ページでは、TSLint は 2019 年中に非推奨になる予定です。 Microsoft では、代替タスクとして ESLint を調査しています。

このタスクの YAML 構成の詳細については、TSLint YAML オプションを確認してください

セキュリティ分析ログの公開タスク

タスクの構成の詳細は、次のスクリーンショットと一覧に示されています。

セキュリティ分析ログの発行ビルド タスクの構成

  • アーティファクト名: 任意の文字列識別子。
  • 成果物の種類: 選択内容に応じて、Azure DevOps Server またはビルド エージェントからアクセスできる共有ファイルにログを発行できます。
  • ツール: 特定のツールのログを保持することも、[ すべてのツール ] を選択してすべてのログを保持することもできます。

このタスクの YAML 構成の詳細については、セキュリティ ログの発行の YAML オプションを確認してください

セキュリティレポートのタスク

セキュリティ レポートの構成の詳細は、次のスクリーンショットと一覧に示されています。

セキュリティ レポートのビルド タスクの構成

  • レポート: パイプライン コンソールTSV ファイルHtml ファイル 形式のいずれかを選択します。 選択した形式ごとに 1 つのレポート ファイルが作成されます。
  • ツール: 検出された問題の概要を表示するビルド定義内のツールを選択します。 選択したツールごとに、エラーのみを表示するか、概要レポートにエラーと警告の両方を表示するかを選択するオプションが存在する場合があります。
  • 詳細オプション: いずれかのツールのログが選択されていない場合は、警告またはエラーのログ記録を選択できます。 エラーをログに記録すると、タスクは失敗します。
  • 基本ログ フォルダー: ログが見つかるベース ログ フォルダーをカスタマイズできます。 ただし、通常、このオプションは使用されません。

このタスクの YAML 構成の詳細については、セキュリティ レポートの YAML オプションを確認してください

事後分析タスク

タスクの構成の詳細は、次のスクリーンショットと一覧に示されています。

分析後のビルド タスクの構成

  • ツール: ビルド中断を条件付きで挿入するビルド定義内のツールを選択します。 選択したツールごとに、エラーのみで中断するか、エラーと警告の両方で中断するかを選択するオプションが存在する場合があります。
  • レポート: 必要に応じて、ビルドの中断の原因となっている結果を書き込むことができます。 結果は、Azure DevOps コンソール ウィンドウとログ ファイルに書き込まれます。
  • 詳細オプション: いずれかのツールのログが選択されていない場合は、警告またはエラーのログ記録を選択できます。 エラーをログに記録すると、タスクは失敗します。

このタスクの YAML 構成の詳細については、Post Analysis の YAML オプションを確認してください

次のステップ

YAML ベースの構成については、 YAML 構成ガイドを参照してください。

Security Code Analysis 拡張機能と提供されるツールについてさらに質問がある場合は、FAQ ページを参照してください。