Zennoxa Shield

Zennoxa Shield คือแพลตฟอร์ม DevSecOps ที่สแกนซอร์สโค้ด, dependency, secret, container และ infrastructure-as-code แล้วจัดลำดับว่าควรแก้อะไรก่อนตามความเสี่ยงจริง คู่มือนี้ครอบคลุมทุกฟีเจอร์ — ตั้งแต่ login ครั้งแรกไปจนถึง CLI, การเชื่อมต่อ และ admin panel

ฟรีช่วงเบต้า Rules Reference เปิดแอป

มีอะไรในระบบบ้าง

ภาพรวมของทุกฟีเจอร์ที่มีอยู่จริงใน Shield ตอนนี้ — ตรวจสอบกับซอร์สโค้ดของระบบแล้วทุกตัว

แดชบอร์ด

ภาพรวมความปลอดภัย: การ์ด KPI, โดนัทความรุนแรง, กราฟจำนวนสแกน 7 วัน, ตาราง Top 10 Critical และสแกนล่าสุด — อัปเดตสดผ่าน WebSocket

โปรเจกต์

สร้างโปรเจกต์จาก GitHub, GitLab, Bitbucket หรือ URL แบบ HTTPS พร้อม credential ต่อโปรเจกต์และสั่งสแกนโดยเลือก branch

การสแกน

ประวัติการสแกนพร้อมไทม์ไลน์แบบสด, รายละเอียดต่อสแกน, ไฟล์ที่สแกน, KPI ความรุนแรง และรายงานให้ดาวน์โหลด

ช่องโหว่

กรองตามความรุนแรงและสถานะ KEV, เรียงตาม priority, กางดูโค้ด และเปิดหน้ารายละเอียดที่มี rule ID, EPSS, KEV และการ์ด AI Analysis

รายงาน & Export

ดาวน์โหลดผลสแกนเป็น HTML, JSON, SARIF, Markdown หรือ CycloneDX SBOM พร้อมปุ่ม Copy Markdown — จากหน้ารายละเอียดสแกน

เกรดคุณภาพโค้ด

เกรดคุณภาพโค้ด A–F ต่อสแกน คำนวณจากโค้ดซ้ำ, code smell, ฟังก์ชันยาว, ความซ้อน และสัดส่วนเทสต์

กราฟ

แผนที่ dependency ข้าม repo แบบโต้ตอบได้ (npm, go.mod, Helm, ArgoCD, k8s) hover เพื่อไฮไลต์และดูหลักฐานของเส้นเชื่อม

ระดับความสำคัญ

คะแนนความเสี่ยง 0–100 รวม CVSS, EPSS, CISA KEV และ reachability เป็น 5 ระดับ ให้แก้สิ่งที่เสี่ยงสุดก่อน

ผู้ช่วย AI

แชตในระบบเกี่ยวกับ finding และกฎ — ตัวตอบแบบ deterministic ออฟไลน์ พร้อมชั้น LLM แบบนำมาเอง(ไม่บังคับ) และ fallback อัตโนมัติ

การเชื่อมต่อ

GitHub App/PAT, GitLab, Bitbucket, Jira, Slack, Teams, อีเมล, Obsidian และ webhook ขาออกแบบเซ็นลายเซ็น — ทั้งระดับองค์กรและต่อโปรเจกต์

เอกสาร API

REST API ยืนยันตัวตนด้วย Bearer token ครอบคลุมโปรเจกต์, สแกน, finding และการเชื่อมต่อ — ใช้จาก CI/CD และ CLI ได้

CLI

ตัวสแกนภาษา Go: login ผ่านเบราว์เซอร์, สแกน secrets + SAST ในเครื่องด้วย zone policy, ส่งผล และจัดการ apps ข้าม repo

เข้าสู่ระบบ

เข้าสู่ระบบที่ shield.zennoxa.com เพื่อไปยังแดชบอร์ด

  1. 1เปิด https://shield.zennoxa.com แล้วกรอกอีเมลและรหัสผ่าน
  2. 2คลิก "Sign In" — แดชบอร์ดจะเปิดให้อัตโนมัติ
  3. 3ถ้าเปิด 2FA ไว้ ให้กรอกรหัส 6 หลักจากแอป authenticator (หรือรหัสสำรอง)
เคล็ดลับ ลืมรหัสผ่าน? ใช้ลิงก์ "Forgot?" ที่หน้าเข้าสู่ระบบ — ระบบจะส่งลิงก์รีเซ็ตไปที่อีเมล (ใช้ได้ 1 ชั่วโมง)

แดชบอร์ด

หน้าแรกหลัง login แสดงภาพรวมความปลอดภัยขององค์กรทั้งหมดแบบสด

  1. 1การ์ด KPI 4 ใบด้านบน — Critical Findings, High Findings, Projects, Total Scans — แต่ละใบลิงก์ไปหน้าที่กรองแล้ว
  2. 2โดนัท "Findings by Severity" และกราฟแท่ง "Scans per day" (7 วันล่าสุด มี tooltip ตอน hover)
  3. 3ตาราง "Top 10 Critical" เรียงตามคะแนน priority พร้อมเลเยอร์ที่ตรวจพบและ reachability
  4. 4ตาราง "Recent Scans" พร้อมป้ายสถานะ — ทั้งหน้าอัปเดตเองผ่าน WebSocket เมื่อมีสแกนเริ่มหรือเสร็จ

โปรเจกต์

โปรเจกต์คือหนึ่ง repository ที่ต้องการสแกน สร้างหนึ่งโปรเจกต์ต่อหนึ่ง repo

  1. 1ที่ /projects คลิก "+ New Project"
  2. 2กรอกชื่อโปรเจกต์ (Slug จะเติมให้อัตโนมัติ) ทั้งสองช่องต้องกรอก
  3. 3ใช้แท็บ "From GitHub" เลือก repo จาก GitHub App ที่เชื่อมไว้ หรือ "Enter URL manually" สำหรับ URL แบบ HTTPS ของ GitHub, GitLab, Bitbucket, Azure DevOps หรือ self-hosted (ใส่ access token สำหรับ repo private)
  4. 4คลิก "Create Project" — จะไปที่หน้าโปรเจกต์ จด Project ID ไว้ใช้ตอนสแกนด้วย CLI
หมายเหตุ แต่ละโปรเจกต์ตั้ง credential ทับระดับองค์กรได้ (project token → org token → env ของ server) และเพิ่มช่องแจ้งเตือนกับ GitLab webhook ต่อโปรเจกต์ได้
เคล็ดลับ การลบโปรเจกต์เป็น soft-delete — ซ่อนจากรายการแต่เก็บประวัติสแกนและ finding ไว้เพื่อ audit

การสแกน

สั่งสแกนจากโปรเจกต์และดูแบบสด ทุกสแกนถูกเก็บไว้ในประวัติ

  1. 1ที่หน้าโปรเจกต์ คลิก "Trigger Scan" เลือก branch (หรือพิมพ์เอง) แล้ว "Start Scan" — สถานะเปลี่ยนเป็น RUNNING
  2. 2ไทม์ไลน์ความคืบหน้าแสดงขั้นตอน (cloning → scanning → analyzing → reporting → done) ยังไม่มี repo? กด "Try Demo Scan"
  3. 3เปิด /scans เพื่อดูประวัติทั้งหมด หรือคลิกสแกนเพื่อดูไฟล์ที่สแกน, KPI ความรุนแรง, ปัญหา license และรายงาน
หมายเหตุ ถ้าต้องการสแกนอัตโนมัติทุกครั้งที่ push ให้ใช้ CLI ใน CI (ดูหัวข้อ CLI)

ช่องโหว่ (Findings)

ช่องโหว่ทุกจุดที่พบ พร้อมความรุนแรง คะแนนความเสี่ยง และคำแนะนำวิธีแก้

  1. 1ที่ /findings ใช้ชิปกรองความรุนแรง (All, Critical, High, Medium, Low, Info) และตัวกรอง KEV
  2. 2คลิก "By Priority" เพื่อเรียงตามคะแนนความเสี่ยงแทนป้ายความรุนแรง — ความเสี่ยงจริงสูงสุดขึ้นก่อน
  3. 3คลิก chevron ที่แถวเพื่อกางดูโค้ดที่มีปัญหา; คลิกข้อความเพื่อเปิดหน้ารายละเอียด (rule ID, CWE, EPSS, สถานะ KEV)
  4. 4ถ้ามีคำอธิบาย AI การ์ด "AI Analysis" จะแสดงคำอธิบายภาษาคนและวิธีแก้ที่แนะนำ
หมายเหตุ การ์ด AI Analysis มีป้าย Source: "ollama" = สร้างโดย LLM ในเครื่อง (มี % ความมั่นใจ), "template" = คำแนะนำมาตรฐานที่ไม่ใช้ LLM ระบบ production ส่วนใหญ่ใช้ template
เคล็ดลับ อยากรู้ว่าแต่ละกฎตรวจอะไร เปิด Rules Reference ในหน้า docs

รายงาน & Export

ส่งออกผลสแกนได้หลายรูปแบบ ปุ่ม export อยู่ในหน้ารายละเอียดสแกน (ไม่มีหน้า Reports แยกต่างหาก)

  1. 1เปิดสแกนจาก /scans (หรือจากโปรเจกต์)
  2. 2ใช้ปุ่มดาวน์โหลดเพื่อ export เป็น HTML, JSON, SARIF, Markdown หรือ CycloneDX SBOM — ดาวน์โหลดแบบยืนยันตัวตนและคลิกเดียว
  3. 3ใช้ "Copy Markdown" เพื่อวางรายงานลงในเครื่องมืออื่นหรือผู้ช่วย AI
หมายเหตุ SARIF เหมาะกับแดชบอร์ด code-scanning (เช่น GitHub), SBOM (CycloneDX) เหมาะกับเครื่องมือ supply-chain และ Markdown สะดวกสำหรับ ticket และแชต

เกรดคุณภาพโค้ด

นอกจากความปลอดภัย Shield ยังให้เกรดคุณภาพโค้ดแบบ SonarQube กับแต่ละสแกน

  1. 1เปิดหน้ารายละเอียดสแกน — การ์ด Code Quality Grade แสดงป้ายเกรด A–F แบบมีสี
  2. 2เกรดคือคะแนนถ่วงน้ำหนัก 0–100 จากโค้ดซ้ำ, code smell, ฟังก์ชันยาว, ความซ้อนลึก และสัดส่วนเทสต์
  3. 3การ์ดแสดงปัญหาหลักที่ทำให้เกรดต่ำ ให้รู้ว่าควร refactor อะไรก่อน

กราฟ

แผนที่แบบโต้ตอบว่า repository ของคุณพึ่งพากันอย่างไร

  1. 1เปิด /graph เพื่อดูเครือข่าย dependency ข้าม repo ที่ตรวจพบระหว่างสแกน (npm, go.mod, Helm, ArgoCD, Kubernetes)
  2. 2hover ที่ node เพื่อไฮไลต์การเชื่อมต่อ; hover ที่เส้นเพื่อดูไฟล์หลักฐานเบื้องหลังการเชื่อมนั้น

ผู้ช่วย AI

แชตในระบบที่ตอบคำถามเกี่ยวกับ finding และกฎของคุณ

  1. 1เปิด /assistant แล้วถามคำแนะนำเช่น "What should I fix first?" หรือคำถามของคุณเอง (เช่น "what is GENERIC-SECRET?")
  2. 2มันตอบทันทีจากแคตตาล็อกกฎที่คัดมา พร้อมอ้างอิง rule ID — เห็นเฉพาะ finding ขององค์กรคุณเท่านั้น
หมายเหตุ ขอบเขตตามจริง: ผู้ช่วยเริ่มต้นเป็นตัวตอบแบบ deterministic บนกฎที่คัดมา 14 ข้อ (ไม่มีการรันโมเดล) แอดมินเชื่อม LLM ที่เข้ากับ OpenAI ของตัวเองได้ (ไม่บังคับ) เพื่อคำตอบที่ลึกขึ้น ถ้า error แชตจะกลับไปใช้ชั้น deterministic

ตั้งค่า

จัดการบัญชี, ความปลอดภัย และ credential ที่เชื่อมไว้

  1. 1โปรไฟล์: แก้ชื่อและอีเมล (การเปลี่ยนอีเมลจะส่งลิงก์ยืนยัน)
  2. 2รหัสผ่าน: เปลี่ยนได้ (อย่างน้อย 8 ตัวอักษร พร้อมยืนยัน)
  3. 3การยืนยันสองชั้น (2FA): สแกน QR (หรือกรอก secret) ในแอป authenticator แล้วบันทึกรหัสสำรองที่ดาวน์โหลดได้
หมายเหตุ หน้าตั้งค่ายังลิงก์ไป API Keys และ Integrations (มีหัวข้อแยกด้านล่าง)

API Key

มี credential 2 ชนิด: dashboard API key (znx_) สำหรับเรียก API/CI ตรงๆ และ CLI token (shield_cli_) สำหรับ command line

  1. 1ไปที่ Settings > API Keys แล้วคลิก "Create key"
  2. 2ตั้งชื่อคีย์และเลือกวันหมดอายุ — ไม่มีวันหมดอายุ หรือ 7 / 30 / 90 / 365 วัน หรือกำหนดเอง (ค่าเริ่มต้น 30 วัน)
  3. 3คัดลอกคีย์ znx_ แบบเต็มทันที — แสดงครั้งเดียว ทีหลังเห็นแค่ส่วนต้น, rotate ได้ (คีย์เก่าหยุดทำงานทันที) หรือ revoke ได้
ใช้ dashboard API key (znx_) เป็น Bearer token
curl -H "Authorization: Bearer znx_your_key_here" \
  https://shield.zennoxa.com/api/...
สำคัญ ห้าม commit คีย์หรือ token ลงซอร์สโค้ด — เก็บใน environment variable หรือ secrets manager
หมายเหตุ อย่าใส่คีย์ znx_ ใน SHIELD_CLI_TOKEN ของ CLI — ตัวนั้นต้องใช้ token แบบ shield_cli_ ที่สร้างจาก "shield login" ส่วน CLI token หมดอายุใน 90 วัน

การเชื่อมต่อ

เชื่อม Shield เข้ากับเครื่องมือที่ทีมใช้อยู่ — ทั้งระดับองค์กรและต่อโปรเจกต์

  1. 1ระดับองค์กร (Settings > Integrations): ติดตั้ง GitHub App (หรือเพิ่ม GitHub PAT สำหรับ self-hosted/enterprise) และเพิ่ม outbound webhook แบบเซ็นลายเซ็นสำหรับ event scan.completed / scan.failed
  2. 2ต่อโปรเจกต์ (ที่หน้าโปรเจกต์): GitLab & Bitbucket webhook, สร้าง issue ใน Jira และแจ้งเตือน Slack / Teams / Email พร้อมตัวกรองความรุนแรงขั้นต่ำ
  3. 3Obsidian: เชื่อม vault ที่ backed ด้วย git เพื่อ sync บันทึก triage สองทาง
หมายเหตุ token ถูกเก็บฝั่ง server และไม่แสดงกลับหลังบันทึก (เห็นแค่ส่วนท้าย) ส่วน outbound webhook แนบ secret สำหรับเซ็น HMAC ได้

ระดับความสำคัญ (Priority)

Shield จัดลำดับ finding ด้วยคะแนนความเสี่ยงที่คำนวณได้ ให้แก้สิ่งที่เสี่ยงสุดก่อน — ไม่ใช่แค่ป้ายความรุนแรงดิบ

CVSS 30%
ความรุนแรงพื้นฐาน
EPSS 30%
โอกาสถูกโจมตี
KEV 25%
ถูกโจมตีจริง
Reach 15%
โค้ดเข้าถึงได้
  1. 1แต่ละ finding ได้คะแนน 0–100 = CVSS (30%) + EPSS (30%) + KEV (25%) + Reachability (15%)
  2. 2ระดับ: 80 ขึ้นไป = critical, 60–79 = high, 40–59 = medium, 20–39 = low, ต่ำกว่า 20 = info
  3. 3ที่ /findings คลิก "By Priority" เพื่อเรียงตามคะแนนนี้
หมายเหตุ EPSS (FIRST.org) และ KEV (CISA) ใช้เฉพาะ finding ที่มี CVE — ส่วนใหญ่คือ dependency ส่วน finding แบบ SAST และ secret ไม่มี CVE ค่า EPSS กับ KEV จึงเป็น 0 ทำให้ finding พวกนี้ได้สูงสุดราวๆ 44 แม้ CVSS และ reachability เต็ม

เอกสาร API

ทุกอย่างในแดชบอร์ดมี REST API รองรับ เรียกได้จาก CI/CD หรือเครื่องมือของคุณเอง

  1. 1ยืนยันตัวตนด้วย Bearer token — dashboard API key (znx_) สำหรับเรียกตรง/CI หรือ CLI token (shield_cli_) สำหรับ CLI
  2. 2Base URL คือ https://shield.zennoxa.com/api/ — endpoint ครอบคลุมโปรเจกต์, สแกน, finding, quality gate, การเชื่อมต่อ และผู้ช่วย
  3. 3หน้า /docs สาธารณะอธิบายการเริ่มต้น, การใช้ CLI และกฎตรวจจับทั้งหมด

CLI

สแกนจาก terminal — เหมาะกับ GitHub Actions และ CI/CD อื่นๆ กฎฝังในไบนารีแล้ว (ไม่ต้องมีโฟลเดอร์กฎ)

  1. 1ติดตั้ง: โหลดไบนารีของ OS คุณจากหน้า GitHub Releases, ทำให้รันได้ แล้ววางไว้ใน PATH จากนั้นยืนยันตัวตน: รัน "shield login" (แบบโต้ตอบ) หรือตั้ง SHIELD_CLI_TOKEN สำหรับ headless/CI
  2. 2สแกนและส่งผล: shield scan . --submit --project ID --org ID เพิ่ม --zone (dev/staging/production) เพื่อเลือกเลเยอร์ที่รันและระดับที่ block
  3. 3เลือกรายงานด้วย --format (json/html/sarif) และ --output; CLI ออกด้วยโค้ด 2 เมื่อ zone policy block (ทำให้ CI ล้มเหลว)
  4. 4ดูผลบนแดชบอร์ด — CLI ไม่มีคำสั่ง list แต่ "shield apps list" แสดง Shield Apps ข้าม repo
ติดตั้ง Shield CLI (โหลดไบนารี)
# Download the CLI for your platform from GitHub Releases (macOS / Linux / Windows):
curl -L https://github.com/Zennoxa/shield/releases/latest/download/shield-linux-amd64 -o shield
chmod +x shield && sudo mv shield /usr/local/bin/shield
shield version
ยืนยันตัวตนและสแกน พร้อมส่งผลไปที่โปรเจกต์
# Headless / CI: use a CLI token (shield_cli_, not a znx_ key)
export SHIELD_CLI_TOKEN=shield_cli_your_token_here
shield scan . --submit \
  --project YOUR-PROJECT-ID --org YOUR-ORG-ID \
  --api-url https://shield.zennoxa.com
สแกนทุกครั้งที่ push ใน GitHub Actions (token เป็น repo secret)
- name: Shield scan
  env:
    SHIELD_CLI_TOKEN: ${{ secrets.SHIELD_CLI_TOKEN }}
  run: |
    shield scan . --submit \
      --project ${{ vars.SHIELD_PROJECT }} \
      --org ${{ vars.SHIELD_ORG }} --zone production
เคล็ดลับ --zone คือ policy (dev/staging/production) ไม่ใช่ git branch — ให้ checkout branch ก่อน ถ้า self-hosted หลัง CA ภายใน ใช้ --ca-cert (หรือ --insecure สำหรับ staging ที่ self-signed เท่านั้น)

ผู้ใช้

เชิญและจัดการทีมของคุณ (เฉพาะ admin)

  1. 1ที่ Admin > Users คลิก "Invite user" กรอกอีเมล แล้วเลือก role: Admin (สิทธิ์เต็ม), Member (สร้างโปรเจกต์และสแกน) หรือ Viewer (อ่านอย่างเดียว)
  2. 2คลิก "Send invite" — รหัสผ่านชั่วคราวใช้ครั้งเดียวจะปรากฏ คัดลอกและส่งให้อย่างปลอดภัย ผู้ใช้จะเปลี่ยนตอน login ครั้งแรก
  3. 3เปลี่ยน role ได้จากตารางเลย หรือคลิกไอคอนถังขยะสีแดงเพื่อลบผู้ใช้ (มีการยืนยัน)
หมายเหตุ เมนู Users, Feedback และ System Health จะเห็นเฉพาะ admin ตารางยังแสดงสถานะ 2FA และวันที่เข้าร่วมของแต่ละคน

ฟีดแบ็ก

อ่านฟีดแบ็กจากลูกค้าที่ส่งมาจากหน้าเว็บ marketing

  1. 1เปิด Admin > Feedback — แต่ละรายการมีป้ายหมวด (Bug / Feature / Integration / Question / Other), หน้าที่ส่งมา และวันที่
  2. 2คลิกอีเมลผู้ส่ง (ถ้ามี) เพื่อตอบกลับโดยตรง
หมายเหตุ เมื่อตั้งค่า SHIELD_FEEDBACK_EMAIL และ mailer (SMTP/Resend) ไว้ ฟีดแบ็กใหม่จะส่งอีเมลแจ้งเตือนด้วย และส่งแบบไม่ระบุตัวตนได้ (อีเมลไม่บังคับ)

สถานะระบบ

มุมมองสถานะการทำงานของแพลตฟอร์มแบบสด (เฉพาะ admin)

  1. 1เปิด Admin > System — แถบด้านบนแสดง "All systems operational" หรือ "System degraded"
  2. 2การ์ด KPI แสดงการเชื่อมต่อฐานข้อมูล (total/active/idle), WebSocket client ที่ทำงาน และการตรวจสุขภาพ API
  3. 3รายการบริการรายงานสถานะ Database, API server และ Dashboard แยกกัน
User Guide — Zennoxa Shield (คู่มือการใช้งาน)