依存関係スキャンのトラブルシューティング
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])
です。