មគ្គុទ្ទេសក៍

អ្វីដែលក្រុមអភិវឌ្ឍ និងក្រុមសុវត្ថិភាពត្រូវធ្វើបន្ទាប់ពីដំឡើង OSCAR តាមលំដាប់លំដោយ។ សូមជំនួសអាសយដ្ឋាន https://oscar.example និង key <API key> ខាងក្រោម ដោយតម្លៃនៃការដំឡើងរបស់អ្នក។

លំហូរទាំងមូល

Build ទាំងបីប្រភេទ upload SBOM ដោយប្រើជំហានបីដូចគ្នា ដូច្នេះនៅក្នុង OSCAR វាមើលទៅដូចគ្នា មិនថាវាមកពី build ណាក៏ដោយ។

  1. Upload — POST /api/v1/bom (បង្កើតគម្រោងប្រសិនបើមិនទាន់មាន៖ autoCreate=true)
  2. ស្វែងរក — GET /api/v1/project/lookup?name=…&version=… ផ្ដល់លេខសម្គាល់គម្រោងមកវិញ
  3. ដាក់ 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 ពី buildBOM_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 មិនស៊ីសង្វាក់គ្នា ដូច្នេះប្រភពត្រូវបានសាកល្បងពីគួរឱ្យទុកចិត្តបំផុតទៅតិចបំផុត។ តម្លៃដែលកំណត់ដោយជំហានមុន មិនដែលត្រូវបានសរសេរជាន់ដោយជំហានក្រោយទេ។

  1. ឈ្មោះឯកសារ — commons-lang3-3.12.0.jar → ឈ្មោះ និងកំណែលំនាំដើម
  2. pom.properties — ប្រសិនបើមាន group ឈ្មោះ និងកំណែទាំងអស់មកពីទីនេះ (គួរឱ្យទុកចិត្តបំផុត)
  3. MANIFEST.MF — បន្ថែមតែកំណែប៉ុណ្ណោះ នៅពេលគ្មាន pom
  4. តារាងសន្និដ្ឋាន group — បំពេញ group ពីឈ្មោះ library ដែលប្រើទូលំទូលាយ
  5. Implementation-Vendor-Id — តែនៅពេលនៅទទេ ហើយមើលទៅដូចជា domain
  6. ការស្វែងរក 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ឧបករណ៍ buildmaven · npm-webpack · ant
target-host · target-serverHost · server សម្រាប់ deployapp-01
target-was · target-vendor · target-javaApp server · vendor · Javatomcat · 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>"
      }
    }
  }
}

នៅពេលភ្ជាប់រួច អាចសួរដូចជា៖

ដោយមានឧបករណ៍ 47 សូមជ្រើសរើសម៉ូដែលក្នុងស្ថាប័នដែលគាំទ្រ tool calling។ ម៉ូដែលដែលមិនគាំទ្រ នឹងឆ្លើយដោយការទាយ ជំនួសឱ្យការហៅឧបករណ៍។

ម៉ាស៊ីនបកប្រែអាជ្ញាប័ណ្ណ

អត្ថបទអាជ្ញាប័ណ្ណពេញលេញត្រូវបានបកប្រែដោយម៉ាស៊ីនមួយក្នុងចំណោមបី ដែលជ្រើសរើសនៅពេលដំឡើងឱ្យស្របនឹងគោលការណ៍របស់អ្នក។

ម៉ាស៊ីនដំណើរការនៅល្អបំផុតនៅពេល
OllamaServer របស់អ្នកសូម្បីតែអត្ថបទដែលត្រូវបកប្រែក៏ត្រូវនៅខាងក្នុង
LM StudioServer របស់អ្នក (លឿនលើ Apple Silicon)ដូចខាងលើ
GeminiAPI ខាងក្រៅគ្មាន 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។