メインコンテンツまでスキップ

Black Duck/Synopsys Detect PoCメモ

この記事の位置づけ

この記事は、SBOM PoCの始め方 から、Black DuckとSynopsys Detectに関する製品固有の確認事項を切り出したメモです。

PoCの目的、対象選定、評価観点は元記事で扱います。ここでは、Black Duck/Synopsys Detectを使う場合の構成、通信、実行前提を整理します。

用語

用語意味
SBOMソフトウェア構成部品の一覧。SPDXやCycloneDXなどで表現される
SCAOSS依存関係、脆弱性、ライセンスを解析する行為またはツール領域
Black DuckSCAを実施し、結果管理、可視化、ポリシー評価を行う製品
Synopsys DetectBlack Duckへ解析結果を送るCLIツール。リポジトリ上で実行する
Black Duckサーバー解析結果を受け取り、管理するBlack Duck環境

Synopsys Detectは、Black Duckへ解析結果を送信するCLIツールとして公開されています。1

構成の考え方

PoCで整理すべき構成要素は次の通りです。

構成要素確認すること
実行端末またはCIDetectをどこで実行するか
対象コード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サーバー証明書を信頼できる
ProxyCIや開発端末から外部通信できる
除外設定node_modules、build成果物、不要ディレクトリを除外する
private registry認証情報と取得経路を確認する
ログDetect実行ログを保管する
撤収PoC後にトークン、権限、テスト設定を削除する

PoCで見るべき結果

Black Duck/Synopsys DetectのPoCでは、次を確認します。

観点見ること
検出範囲直接依存、間接依存、private dependency
脆弱性既知CVE、重大度、修正候補、誤検知
ライセンスライセンス種別、複数ライセンス、未判定
ポリシー社内基準に照らした違反判定
性能実行時間、対象サイズ、CIへの影響
再現性複数回実行して結果が安定するか

運用上の注意

Detectを実行できるだけでは、運用に乗ったとは言えません。

  • APIトークンを個人端末に固定しない。
  • CIへ組み込む前に、失敗時にビルドを止める条件を決める。
  • 誤検知や例外の承認フローを決める。
  • 脆弱性の修正責任者と期限をチケットへ接続する。
  • ライセンス確認は法務または所管部門の判断へつなげる。
  • PoC用設定を本番運用へ持ち越す場合は、権限と証跡を見直す。

参考資料(出典)

Footnotes

  1. GitHub, blackducksoftware/detect。Synopsys Detect CLIの公式リポジトリ。 https://github.com/blackducksoftware/detect