ガイド
OSCARの導入後に開発チームとセキュリティチームが行う作業を、順を追って説明します。以下のアドレス https://oscar.example とキー <API key> は、お使いの環境の値に置き換えてください。
全体の流れ
3種類のビルドはいずれも同じ3つのステップでSBOMをアップロードするため、どのビルドから来たものでもOSCAR上では同じように見えます。
- アップロード —
POST /api/v1/bom(プロジェクトがなければ作成:autoCreate=true) - 照会 —
GET /api/v1/project/lookup?name=…&version=…でプロジェクト識別子を取得 - タグ付け —
PATCH /api/v1/project/{uuid}で分類・説明・タグを設定
アップロードされるのはコンポーネント一覧だけです。SBOMに含まれるのはライブラリの名前・バージョン・ハッシュで、ソースコードは一切含まれません。
APIキーの発行
セキュリティ管理者がOSCARの Administration → Access Management → Teams を開き、チームを選んでAPIキーを発行します。用途ごとにキーを分けると、権限を最小限に保てます。
| 用途 | 権限 |
|---|---|
| ビルドからのSBOMアップロード | BOM_UPLOAD · PROJECT_CREATION_UPLOAD · タグ付けには VIEW_PORTFOLIO · PORTFOLIO_MANAGEMENT も必要 |
| AI問い合わせ(MCP) | VIEW_PORTFOLIO · VIEW_VULNERABILITY · VULNERABILITY_ANALYSIS · POLICY_VIOLATION_ANALYSIS(アップロードする場合は BOM_UPLOAD を追加) |
ビルドサーバーや開発者のPCでは、キーをファイルではなく環境変数に保管してください。
export SSEM_OSCAR_DTRACK_URL=https://oscar.example export SSEM_OSCAR_DTRACK_API_KEY_TEAM_OSCAR=<API key> # ビルド用 export SSEM_OSCAR_DTRACK_API_KEY_MCP=<API key> # AI問い合わせ用
Mavenプロジェクト
pom.xml に2つのプラグインを追加します。cyclonedx-maven-plugin がパッケージング前にSBOMを生成し、exec-maven-plugin が install フェーズでアップロードします。
<plugin>
<groupId>org.cyclonedx</groupId>
<artifactId>cyclonedx-maven-plugin</artifactId>
<version>2.9.1</version>
<configuration>
<schemaVersion>1.5</schemaVersion>
<outputFormat>json</outputFormat>
<outputName>${project.artifactId}-${project.version}.sbom</outputName>
</configuration>
<executions>
<execution>
<phase>prepare-package</phase>
<goals><goal>makeBom</goal></goals>
</execution>
</executions>
</plugin>
アップロードは curl 1回で済みます(exec-maven-plugin が実行するのと同じコマンドです)。
curl -X POST "$SSEM_OSCAR_DTRACK_URL/api/v1/bom" \ -H "X-Api-Key: $SSEM_OSCAR_DTRACK_API_KEY_TEAM_OSCAR" \ -F autoCreate=true \ -F projectName=my-service -F projectVersion=1.0.0 \ -F bom=@target/my-service-1.0.0.sbom.json
デプロイも install フェーズに紐付いている場合、ローカルで何気なく mvn install を実行するとサーバーにアップロードされます。ローカルでの確認は mvn package までにしてください。
npmプロジェクト
プロジェクトのルートに sbom-config.json を置き、アップロードスクリプト upload_sbom.py を実行します。SBOMファイル(bom.json)がない場合は、設定したビルドコマンドを先に実行します。
{
"project_name": "mobile-web",
"project_version": "5.0.2",
"project_classifier": "APPLICATION",
"bom_files": ["./bom.json"],
"build_command": "npm run build",
"tags": { "team": "front", "service-type": "frontend", "technology": "javascript",
"build": "npm-webpack", "npm-managed": "" }
}
python3 upload_sbom.py
Ant · 手動ビルド(ssemsbom)
pom.xml がなく lib/ にJARだけがあるプロジェクトでは、ssemsbom CLIがJARをスキャンしてCycloneDX 1.5のSBOMを生成し、アップロードします。
./install.sh # ~/.ssemsbom にインストールしてPATHに追加 ssemsbom --config sbom-config.json # 生成・アップロード・タグ付け ssemsbom --config sbom-config.json --no-upload # ファイル生成のみ
{
"project_name": "loan-batch",
"project_version": "2.4.1",
"lib_dirs": ["./lib", "./ext-lib"],
"output_file": "./build/sbom.json",
"tags": { "team": "core", "build": "ant", "target-was": "tomcat", "ant-managed": "" }
}
名前の識別方法
レガシーJARのメタデータはまちまちなため、信頼度の高い情報源から順に試します。前のステップで設定された値が、後のステップで上書きされることはありません。
- ファイル名 —
commons-lang3-3.12.0.jar→ 名前とバージョンの初期値 pom.properties— あればグループ・名前・バージョンをすべてここから取得(最も信頼度が高い)MANIFEST.MF— pomがない場合にのみバージョンを補完- グループ推定テーブル — 広く使われるライブラリの名前からグループを補完
Implementation-Vendor-Id— まだ空で、ドメイン形式に見える場合のみ- Maven Centralのハッシュ照会 —
--resolve-central指定時のみ(ネットワークが必要)
どれでも特定できない場合、グループは unknown のままです。名前が誤っているとエラーにはならず「脆弱性0件」として表示されるため、OSCARは推測しません。
標準タグ
画面やAIの回答でまとめて扱えるよう、3種類のビルドはすべて同じキーを使う必要があります。値のないタグ(ant-managed など)は名前だけで付与します。
| キー | 意味 | 例 |
|---|---|---|
team | 担当チーム | core |
category | カテゴリ | security |
service-type | サービス種別 | backend · frontend · utility |
technology | 主要技術 | java · javascript |
build | ビルドツール | maven · npm-webpack · ant |
target-host · target-server | デプロイ先ホスト · サーバー | app-01 |
target-was · target-vendor · target-java | アプリケーションサーバー · ベンダー · Java | tomcat · apache · openjdk |
maven-managed · npm-managed · ant-managed | ビルド管理の目印(値なし) | — |
タグの値は実際のデプロイ環境どおりに保ってください。「どのアプリケーションサーバーで何が動いているか」といった質問には、これらのタグをもとに回答します。
AIの接続(MCP)
OSCAR MCPサーバーはJava 21で動く単一のjarです。AIクライアントがこれを起動し、STDIOで通信します。Claude Desktopは設定ファイル(claude_desktop_config.json)を、Claude Codeはプロジェクトの .mcp.json を同じ形式で使います。
{
"mcpServers": {
"oscar": {
"command": "java",
"args": ["-jar", "/path/to/dtrack-mcp-server.jar"],
"env": {
"SSEM_OSCAR_DTRACK_URL": "https://oscar.example",
"SSEM_OSCAR_DTRACK_API_KEY_MCP": "<API key>"
}
}
}
}
接続できたら、次のように質問してみてください。
- 「Criticalの脆弱性があるプロジェクトは?」
- 「CVE-2021-44228の影響を受けるプロジェクトはある?」
- 「payment-apiのライセンスポリシー違反をまとめて」
- 「team:coreタグのプロジェクトは先週からどう変わった?」
ツールが47個あるため、社内モデルはツール呼び出し(Tool Calling)に対応したものを選んでください。非対応のモデルはツールを呼ばずに推測で回答してしまいます。
ライセンス翻訳エンジン
ライセンス全文は3つのエンジンのいずれかで翻訳します。導入時に、社内ポリシーに合わせて選択します。
| エンジン | 実行場所 | 適したケース |
|---|---|---|
| Ollama | 自社サーバー | 翻訳対象のテキストさえ社外に出せない |
| LM Studio | 自社サーバー(Apple Siliconで高速) | 同上 |
| Gemini | 外部API | 社内にGPUがなく、外部呼び出しが許可されている |
翻訳は 【日本語訳】 + 【原文】 の形で付け加えられます。エンジンに接続できない場合は原文のみを表示します。
よくある質問
ソースコードはOSCARにアップロードされますか?
いいえ。SBOMに含まれるのはライブラリの名前・バージョン・ハッシュだけです。
閉域網でも使えますか?
はい。OSCARは社内ネットワークで動作し、ネットワーク連携を通じて脆弱性データのみを取り込みます。社内のデータが外に出る経路はありません。
AIが誤った回答をしたら?
AIはツールを呼び出してエンジンのデータを取得するだけで、独自に判断しません。使ったツール名が回答と一緒に表示されるので、同じデータを画面で確認できます。
分析エンジン(Dependency-Track)はアップグレードできますか?
はい。OSCARはエンジンを改変せずにその前段で動作するため、公式リリースをそのままインストールできます。アップロード履歴はエンジンのデータベースの一部を参照するので、アップグレード後は履歴が引き続き蓄積されているか一度確認してください。
商用・自社製のJARはどうなりますか?
公開リポジトリにもJAR内部にも情報がないコンポーネントは識別できず、unknown のままになります。脆弱性照合から漏れる可能性があるため、別途管理してください。
その他のご質問は halo@levelupsoft.com までお寄せください。