次の方法で共有


依存関係スキャンのトラブルシューティング

Azure DevOps の GitHub Advanced Security で依存関係スキャンの問題をトラブルシューティングする方法について説明します。

依存関係スキャンでコンポーネントが識別されない

コンポーネントにフラグを設定せずに依存関係スキャン タスクが完了し、既知の脆弱性を持つコンポーネントのアラートを生成できない場合は、AdvancedSecurity-Dependency-Scanning@1 タスクの前にパッケージの復元手順があることを確認してください。

たとえば、C# (.NET Core) プロジェクトの場合、YAML スニペットのサンプルは以下のとおりです。

- task: DotNetCoreCLI@2
  displayName: 'Restore NuGet packages'
  inputs:
    command: 'restore'
    projects: '**/*.csproj'

    # If you are using a private package feed such as Azure Artifacts, you will need additional variables.
    # For more information, see https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/dotnet-core-cli-v2?view=azure-pipelines 
    feedsToUse: 'select'
    ...

- task: AdvancedSecurity-Dependency-Scanning@1

JavaScript プロジェクトの場合、YAML スニペットのサンプルは以下のとおりです。

- task: Npm@1
  displayName: 'npm install'
  inputs:
    command: 'install'
    workingDir: '$(System.DefaultWorkingDirectory)'

- task: AdvancedSecurity-Dependency-Scanning@1

依存関係スキャン タスクのタイムアウト

タイムアウト前に依存関係スキャン タスクが実行されるデフォルトの時間は、300 秒間 (5 分間) です。 タスクが完了前にタイムアウトする場合は、パイプライン変数 DependencyScanning.Timeout を設定できます。これは整数で秒数を表すものであり、DependencyScanning.Timeout: 600 のように設定します。 デフォルトのタイムアウト値 (300 秒間) 未満を設定しても無効です。

この変数を使用するには、パイプライン変数として DependencyScanning.Timeout を追加します。

- task: AdvancedSecurity-Dependency-Scanning@1
  env:
    DependencyScanning.Timeout: 600

ビルド タスクの緊急シナリオ

依存関係スキャン ビルド タスクがパイプラインの正常な実行をブロックしていて、ビルド タスクを緊急にスキップする必要がある場合は、パイプライン変数 DependencyScanning.Skip: true を設定できます。

依存関係スキャン タスクのアクセス許可

依存関係スキャン ビルド タスクは、パイプライン ID を使用して Advanced Security REST API を呼び出します。 既定では、同じプロジェクト内のパイプラインはアラートをフェッチするアクセス権を持っています。 ビルド サービス アカウントからこれらのアクセス許可を削除する場合、またはカスタム セットアップ (たとえば、リポジトリとは異なるプロジェクトでホストされているパイプライン) がある場合は、これらのアクセス許可を手動で付与する必要があります。

パイプラインで使用されるビルド サービス アカウントへの Advanced Security: View Alerts アクセス許可を付与します。これは、プロジェクト スコープパイプラインの場合は [Project Name] Build Service ([Organization Name])、コレクション スコープのパイプラインの場合は Project Collection Build Service ([Organization Name]) です。