មគ្គុទ្ទេសក៍
អ្វីដែលក្រុមអភិវឌ្ឍ និងក្រុមសុវត្ថិភាពត្រូវធ្វើបន្ទាប់ពីដំឡើង OSCAR តាមលំដាប់លំដោយ។ សូមជំនួសអាសយដ្ឋាន https://oscar.example និង key <API key> ខាងក្រោម ដោយតម្លៃនៃការដំឡើងរបស់អ្នក។
លំហូរទាំងមូល
Build ទាំងបីប្រភេទ upload SBOM ដោយប្រើជំហានបីដូចគ្នា ដូច្នេះនៅក្នុង OSCAR វាមើលទៅដូចគ្នា មិនថាវាមកពី build ណាក៏ដោយ។
- Upload —
POST /api/v1/bom(បង្កើតគម្រោងប្រសិនបើមិនទាន់មាន៖autoCreate=true) - ស្វែងរក —
GET /api/v1/project/lookup?name=…&version=…ផ្ដល់លេខសម្គាល់គម្រោងមកវិញ - ដាក់ Tag —
PATCH /api/v1/project/{uuid}កំណត់ classifier ការពិពណ៌នា និង tag
មានតែបញ្ជីសមាសធាតុប៉ុណ្ណោះដែលត្រូវបាន upload។ SBOM មានឈ្មោះ library កំណែ និង hash — មិនដែលមាន source code ទេ។
ការទទួលបាន API key
អ្នកគ្រប់គ្រងសុវត្ថិភាពបើក Administration → Access Management → Teams នៅក្នុង OSCAR ជ្រើសរើសក្រុមមួយ ហើយបង្កើត API key។ ការប្រើ key ដាច់ដោយឡែកតាមគោលបំណងនីមួយៗ រក្សាសិទ្ធិឱ្យតូចចង្អៀត។
| គោលបំណង | សិទ្ធិ |
|---|---|
| Upload SBOM ពី build | BOM_UPLOAD · PROJECT_CREATION_UPLOAD · សម្រាប់ tag ត្រូវការ VIEW_PORTFOLIO · PORTFOLIO_MANAGEMENT ផងដែរ |
| ការសួរ AI (MCP) | VIEW_PORTFOLIO · VIEW_VULNERABILITY · VULNERABILITY_ANALYSIS · POLICY_VIOLATION_ANALYSIS (បន្ថែម BOM_UPLOAD ដើម្បី upload) |
នៅលើ build server និង PC របស់អ្នកអភិវឌ្ឍ សូមរក្សាទុក key ក្នុង environment variable ជាជាងក្នុងឯកសារ។
export SSEM_OSCAR_DTRACK_URL=https://oscar.example export SSEM_OSCAR_DTRACK_API_KEY_TEAM_OSCAR=<API key> # សម្រាប់ build export SSEM_OSCAR_DTRACK_API_KEY_MCP=<API key> # សម្រាប់ការសួរ AI
គម្រោង Maven
បន្ថែម plugin ពីរទៅក្នុង pom.xml៖ cyclonedx-maven-plugin បង្កើត SBOM មុនការ package ហើយ exec-maven-plugin upload វានៅក្នុងដំណាក់កាល 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>
ការ upload គឺជាពាក្យបញ្ជា curl តែមួយ (ពាក្យបញ្ជាដូចគ្នាដែល 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
ប្រសិនបើការ deploy ក៏ត្រូវបានភ្ជាប់ទៅដំណាក់កាល install ដែរ ការរត់ mvn install ក្នុងម៉ាស៊ីនផ្ទាល់ខ្លួនដោយមិនបានគិត នឹង upload ទៅ server។ សម្រាប់ការពិនិត្យក្នុងម៉ាស៊ីនផ្ទាល់ខ្លួន សូមឈប់ត្រឹម mvn package។
គម្រោង npm
ដាក់ sbom-config.json នៅក្នុង root នៃគម្រោង ហើយដំណើរការ script upload upload_sbom.py។ ប្រសិនបើគ្មានឯកសារ SBOM (bom.json) វានឹងដំណើរការពាក្យបញ្ជា build ដែលបានកំណត់ជាមុនសិន។
{
"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 · build ដោយដៃ (ssemsbom)
សម្រាប់គម្រោងដែលគ្មាន pom.xml ហើយមានតែ JAR ក្នុង lib/ CLI ssemsbom ស្កេន JAR បង្កើត SBOM CycloneDX 1.5 ហើយ upload វា។
./install.sh # ដំឡើងទៅ ~/.ssemsbom ហើយបន្ថែមទៅ PATH ssemsbom --config sbom-config.json # បង្កើត · upload · ដាក់ tag 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 ចាស់ៗមាន metadata មិនស៊ីសង្វាក់គ្នា ដូច្នេះប្រភពត្រូវបានសាកល្បងពីគួរឱ្យទុកចិត្តបំផុតទៅតិចបំផុត។ តម្លៃដែលកំណត់ដោយជំហានមុន មិនដែលត្រូវបានសរសេរជាន់ដោយជំហានក្រោយទេ។
- ឈ្មោះឯកសារ —
commons-lang3-3.12.0.jar→ ឈ្មោះ និងកំណែលំនាំដើម pom.properties— ប្រសិនបើមាន group ឈ្មោះ និងកំណែទាំងអស់មកពីទីនេះ (គួរឱ្យទុកចិត្តបំផុត)MANIFEST.MF— បន្ថែមតែកំណែប៉ុណ្ណោះ នៅពេលគ្មាន pom- តារាងសន្និដ្ឋាន group — បំពេញ group ពីឈ្មោះ library ដែលប្រើទូលំទូលាយ
Implementation-Vendor-Id— តែនៅពេលនៅទទេ ហើយមើលទៅដូចជា domain- ការស្វែងរក hash ក្នុង Maven Central — តែជាមួយ
--resolve-central(ត្រូវការបណ្ដាញ)
ប្រសិនបើគ្មានអ្វីដំណើរការ group នៅតែជា unknown។ ឈ្មោះខុសមិនបង្ហាញជាកំហុសទេ ប៉ុន្តែបង្ហាញជា «ភាពងាយរងគ្រោះ 0» ដូច្នេះ OSCAR មិនទាយទេ។
Tag ស្តង់ដារ
Build ទាំងបីប្រភេទត្រូវប្រើ key ដូចគ្នា ដើម្បីដាក់ជាក្រុមជាមួយគ្នាក្នុង UI និងក្នុងចម្លើយ AI។ Tag ដែលគ្មានតម្លៃ (ant-managed ជាដើម) ត្រូវបានភ្ជាប់តែឈ្មោះប៉ុណ្ណោះ។
| Key | អត្ថន័យ | ឧទាហរណ៍ |
|---|---|---|
team | ក្រុមម្ចាស់ | core |
category | ប្រភេទ | security |
service-type | ប្រភេទសេវាកម្ម | backend · frontend · utility |
technology | បច្ចេកវិទ្យាចម្បង | java · javascript |
build | ឧបករណ៍ build | maven · npm-webpack · ant |
target-host · target-server | Host · server សម្រាប់ deploy | app-01 |
target-was · target-vendor · target-java | App server · vendor · Java | tomcat · apache · openjdk |
maven-managed · npm-managed · ant-managed | សញ្ញាសម្គាល់ឧបករណ៍ build (គ្មានតម្លៃ) | — |
សូមរក្សាតម្លៃ tag ឱ្យត្រូវនឹងការ deploy ពិតប្រាកដ។ សំណួរដូចជា «តើអ្វីដំណើរការលើ app server មួយណា?» ត្រូវបានឆ្លើយដោយផ្អែកលើវា។
ការភ្ជាប់ AI (MCP)
Server OSCAR MCP គឺជា jar តែមួយដែលដំណើរការលើ Java 21។ កម្មវិធី 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។»
- «តើគម្រោងដែលមាន tag team:core បានផ្លាស់ប្ដូរយ៉ាងដូចម្ដេចចាប់តាំងពីសប្ដាហ៍មុន?»
ដោយមានឧបករណ៍ 47 សូមជ្រើសរើសម៉ូដែលក្នុងស្ថាប័នដែលគាំទ្រ tool calling។ ម៉ូដែលដែលមិនគាំទ្រ នឹងឆ្លើយដោយការទាយ ជំនួសឱ្យការហៅឧបករណ៍។
ម៉ាស៊ីនបកប្រែអាជ្ញាប័ណ្ណ
អត្ថបទអាជ្ញាប័ណ្ណពេញលេញត្រូវបានបកប្រែដោយម៉ាស៊ីនមួយក្នុងចំណោមបី ដែលជ្រើសរើសនៅពេលដំឡើងឱ្យស្របនឹងគោលការណ៍របស់អ្នក។
| ម៉ាស៊ីន | ដំណើរការនៅ | ល្អបំផុតនៅពេល |
|---|---|---|
| Ollama | Server របស់អ្នក | សូម្បីតែអត្ថបទដែលត្រូវបកប្រែក៏ត្រូវនៅខាងក្នុង |
| LM Studio | Server របស់អ្នក (លឿនលើ Apple Silicon) | ដូចខាងលើ |
| Gemini | API ខាងក្រៅ | គ្មាន GPU ក្នុងស្ថាប័ន ហើយអនុញ្ញាតការហៅទៅខាងក្រៅ |
ការបកប្រែត្រូវបានបន្ថែមជា 【ការបកប្រែ】 + 【ច្បាប់ដើម (Original)】។ ប្រសិនបើមិនអាចភ្ជាប់ទៅម៉ាស៊ីនបាន មានតែច្បាប់ដើមប៉ុណ្ណោះដែលត្រូវបានបង្ហាញ។
សំណួរញឹកញាប់
តើ source code ត្រូវបាន upload ទៅ OSCAR ដែរឬទេ?
ទេ។ SBOM មានតែឈ្មោះ library កំណែ និង hash ប៉ុណ្ណោះ។
តើវាដំណើរការក្នុងបណ្ដាញបិទបានទេ?
បាន។ OSCAR ដំណើរការក្នុងបណ្ដាញផ្ទៃក្នុង ហើយមានតែទិន្នន័យភាពងាយរងគ្រោះប៉ុណ្ណោះដែលត្រូវបាននាំចូលតាមស្ពានបណ្ដាញ។ គ្មានផ្លូវសម្រាប់ទិន្នន័យផ្ទៃក្នុងចេញទៅក្រៅទេ។
ចុះបើ AI ឆ្លើយខុស?
AI គ្រាន់តែហៅឧបករណ៍ដើម្បីទាញទិន្នន័យរបស់ម៉ាស៊ីន វាមិនវិនិច្ឆ័យដោយខ្លួនឯងទេ។ ឈ្មោះឧបករណ៍ដែលបានប្រើត្រូវបង្ហាញជាមួយចម្លើយ ដូច្នេះអ្នកអាចផ្ទៀងផ្ទាត់ទិន្នន័យដូចគ្នាលើអេក្រង់។
តើម៉ាស៊ីនវិភាគ (Dependency-Track) អាច upgrade បានទេ?
បាន។ OSCAR ធ្វើការនៅពីមុខម៉ាស៊ីនដោយមិនកែប្រែវា ដូច្នេះអ្នកដំឡើងកំណែផ្លូវការដូចដែលវាមាន។ ប្រវត្តិ upload អានផ្នែកមួយនៃមូលដ្ឋានទិន្នន័យរបស់ម៉ាស៊ីន ដូច្នេះបន្ទាប់ពី upgrade សូមពិនិត្យម្ដងថាប្រវត្តិនៅតែបន្តកត់ត្រា។
ចុះ JAR ពាណិជ្ជកម្ម ឬ JAR ក្នុងស្ថាប័នវិញ?
សមាសធាតុដែលគ្មានព័ត៌មានក្នុង repository សាធារណៈ ឬក្នុង JAR មិនអាចកំណត់អត្តសញ្ញាណបាន ហើយនៅតែជា unknown។ វាអាចត្រូវបានរំលងដោយការផ្គូផ្គងភាពងាយរងគ្រោះ ដូច្នេះសូមតាមដានវាដាច់ដោយឡែក។
មានសំណួរបន្ថែម? សរសេរមកកាន់ halo@levelupsoft.com។