Black Duck/Synopsys Detect PoCメモ
この記事の位置づけ
この記事は、SBOM PoCの始め方 から、Black DuckとSynopsys Detectに関する製品固有の確認事項を切り出したメモです。
PoCの目的、対象選定、評価観点は元記事で扱います。ここでは、Black Duck/Synopsys Detectを使う場合の構成、通信、実行前提を整理します。
用語
| 用語 | 意味 |
|---|---|
| SBOM | ソフトウェア構成部品の一覧。SPDXやCycloneDXなどで表現される |
| SCA | OSS依存関係、脆弱性、ライセンスを解析する行為またはツール領域 |
| Black Duck | SCAを実施し、結果管理、可視化、ポリシー評価を行う製品 |
| Synopsys Detect | Black Duckへ解析結果を送るCLIツール。リポジトリ上で実行する |
| Black Duckサーバー | 解析結果を受け取り、管理するBlack Duck環境 |
Synopsys Detectは、Black Duckへ解析結果を送信するCLIツールとして公開されています。1
構成の考え方
PoCで整理すべき構成要素は次の通りです。
| 構成要素 | 確認すること |
|---|---|
| 実行端末またはCI | Detectをどこで実行するか |
| 対象コード | Git、SVN、TFVC、チェックアウト済みコード、成果物 |
| Black Duckサーバー | SaaSか自前構築か、URL、証明書、APIトークン |
| ネットワーク | 実行元からBlack DuckへHTTPS到達できるか |
| 認証情報 | APIトークンの保管、権限、期限 |
| 出力 | SBOM、脆弱性、ライセンス、ポリシー違反 |
| 証跡 | 実行ログ、結果ID、スキャン対象、実行時刻 |
自前構築時の通信
Black DuckサーバーをAWSなどに自前構築する場合、少なくとも次の通信を確認します。
| 通信 | 用途 | 確認点 |
|---|---|---|
| 開発端末/CI -> Black Duckサーバー | 解析結果アップロード、API参照 | HTTPS到達性、証明書信頼、APIトークン |
| Black Duckサーバー -> 更新元 | ナレッジベースやシグネチャ更新 | インターネット疎通、Proxy、DNS |
| 運用者 -> Black Duck UI | 結果確認、ポリシー確認 | SSO、管理者権限、監査ログ |
製品バージョンにより構成要素や要件は変わるため、実装時は対象バージョンの公式インストールガイドを正とします。
実行対象
Detectは、チェックアウト済みのコードや成果物を解析対象にできます。PoCでは、リポジトリ方式そのものより、解析時点で対象ファイルが実行環境に揃っているかを確認します。解析対象が欠けると、検出漏れをツール精度の問題と誤認しやすいためです。
| 対象 | 確認すること |
|---|---|
| ソースコード | 依存関係ファイル、lock file、ビルド定義があるか |
| バイナリ | 成果物解析が必要か |
| コンテナイメージ | イメージスキャンを対象に含めるか |
| private dependency | 社内registry、認証、到達性 |
| モノレポ | プロジェクト分割、除外設定、スキャン時間 |
実行前チェック
PoC実行前に次を確認します。
| 項目 | 確認内容 |
|---|---|
| APIトークン | PoC用に発行し、必要最小権限にする |
| 証明書 | 実行元がBlack Duckサーバー証明書を信頼できる |
| Proxy | CIや開発端末から外部通信できる |
| 除外設定 | node_modules、build成果物、不要ディレクトリを除外する |
| private registry | 認証情報と取得経路を確認する |
| ログ | Detect実行ログを保管する |
| 撤収 | PoC後にトークン、権限、テスト設定を削除する |
PoCで見るべき結果
Black Duck/Synopsys DetectのPoCでは、次を確認します。
| 観点 | 見ること |
|---|---|
| 検出範囲 | 直接依存、間接依存、private dependency |
| 脆弱性 | 既知CVE、重大度、修正候補、誤検知 |
| ライセンス | ライセンス種別、複数ライセンス、未判定 |
| ポリシー | 社内基準に照らした違反判定 |
| 性能 | 実行時間、対象サイズ、CIへの影響 |
| 再現性 | 複数回実行して結果が安定するか |
運用上の注意
Detectを実行できるだけでは、運用に乗ったとは言えません。
- APIトークンを個人端末に固定しない。
- CIへ組み込む前に、失敗時にビルドを止める条件を決める。
- 誤検知や例外の承認フローを決める。
- 脆弱性の修正責任者と期限をチケットへ接続する。
- ライセンス確認は法務または所管部門の判断へつなげる。
- PoC用設定を本番運用へ持ち越す場合は、権限と証跡を見直す。