0Pricing
Cyber Security Academy · บทเรียน

การลงลายมือชื่อการพึ่งพาและสิ่งส่งมอบ

ตรวจสอบแหล่งที่มาด้วย SLSA และ Sigstore

การลงลายมือชื่อการพึ่งพาและสิ่งส่งมอบ เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดแหล่งที่มาจึงสำคัญ

SBOM บอกคุณว่าอาร์ติแฟกต์มี อะไร อยู่ภายใน ส่วนแหล่งที่มาจะบอกว่าอาร์ติแฟกต์นั้น มาจากที่ใดและถูกสร้างขึ้นอย่างไร การลงลายมือชื่อจะผูกอาร์ติแฟกต์เข้ากับต้นทางที่ตรวจสอบได้ ทำให้ผู้ใช้งานปฏิเสธสิ่งใดก็ตามที่ไม่ได้ถูกสร้างโดยกระบวนการทำงานที่คุณเชื่อถือได้

หากไม่มีข้อมูลแหล่งที่มา ผู้โจมตีที่สับเปลี่ยนไฟล์ tarball ในรีจิสทรีของคุณจะไม่ต่างจากรุ่นเผยแพร่ที่ถูกต้องตามปกติ

ไดเจสต์ ไม่ใช่แท็ก

รากฐานของความถูกต้องครบถ้วนคือการระบุเนื้อหา แฮชเข้ารหัสลับ (ไดเจสต์) ของอาร์ติแฟกต์จะระบุชุดไบต์นั้นโดยเฉพาะอย่างไม่ซ้ำกัน แท็กที่เปลี่ยนแปลงได้ เช่น latest สามารถถูกชี้ไปยังตำแหน่งใหม่ได้ แต่ไดเจสต์ทำเช่นนั้นไม่ได้

# pull by immutable digest, not a tag
docker pull my-app@sha256:1d52838af602b4b5a831beb13a0e4d073280665ea7be7f69ce2382f29c5a613f

# compute a file digest
sha256sum release-1.4.0.tar.gz

พื้นฐานลายมือชื่อดิจิทัล

ลายมือชื่อดิจิทัลใช้กุญแจส่วนตัวเพื่อลงลายมือชื่อบนแฮชของอาร์ติแฟกต์ ผู้ใดก็ตามที่มีกุญแจสาธารณะที่ตรงกันก็สามารถตรวจสอบได้ สิ่งนี้ให้หลักประกันสองประการ:

  • ความถูกต้องครบถ้วน — อาร์ติแฟกต์ไม่ได้ถูกแก้ไขหลังจากลงลายมือชื่อ
  • ความเป็นของแท้ — อาร์ติแฟกต์ถูกลงลายมือชื่อโดยผู้ครอบครองกุญแจส่วนตัว

ส่วนที่ยากไม่ใช่คณิตศาสตร์ แต่คือการจัดการกุญแจและการกระจายความไว้วางใจ: ผู้ตรวจสอบจะทราบได้อย่างไรว่าควรเชื่อถือกุญแจสาธารณะใด

การลงลายมือชื่อแบบไร้กุญแจด้วย Sigstore

การลงลายมือชื่อแบบดั้งเดิมบังคับให้ทีมต้องปกป้องกุญแจส่วนตัวที่มีอายุการใช้งานยาวนาน ซึ่งอาจรั่วไหลได้ Sigstore นำเสนอการลงลายมือชื่อแบบไร้กุญแจ: ระบบออกใบรับรองอายุสั้นที่ผูกกับตัวตน OIDC (เช่น งาน CI หรืออีเมลของนักพัฒนา) จากนั้นจึงลงลายมือชื่อและบันทึกเหตุการณ์ไว้ในบันทึกความโปร่งใสสาธารณะที่ชื่อว่า Rekor

ไม่มีกุญแจอายุการใช้งานยาวนานให้ขโมย และทุกลายมือชื่อสามารถตรวจสอบได้โดยสาธารณะ

การลงลายมือชื่อด้วย Cosign

Cosign คือเครื่องมือของ Sigstore สำหรับลงลายมือชื่อให้อิมเมจคอนเทนเนอร์และอาร์ติแฟกต์อื่น ๆ ในโหมดไร้กุญแจ เครื่องมือนี้จะใช้โทเค็น OIDC ของกระบวนการทำงาน จึงไม่มีไฟล์กุญแจอยู่บนดิสก์

# keyless sign in CI (uses ambient OIDC identity)
COSIGN_EXPERIMENTAL=1 cosign sign my-registry/my-app@sha256:1d5283...

# verify, asserting the expected signer identity
cosign verify my-registry/my-app@sha256:1d5283... \
  --certificate-identity-regexp '.*@my-org\.com' \
  --certificate-oidc-issuer https://accounts.google.com

บันทึกความโปร่งใส

Sigstore บันทึกเหตุการณ์การลงลายมือชื่อแต่ละครั้งไว้ใน Rekor ซึ่งเป็นบันทึกสาธารณะที่เพิ่มข้อมูลได้อย่างเดียวและแสดงหลักฐานการแก้ไขได้ นี่คือมาตรการควบคุมเชิงตรวจจับที่มีประสิทธิภาพ:

  • คุณสามารถพิสูจน์ได้ว่าเซ็นชื่อเมื่อใด
  • ผู้โจมตีที่ขโมยตัวตนไปจะไม่สามารถลงลายมือชื่อได้อย่างลับ ๆ — เหตุการณ์ดังกล่าวจะถูกบันทึกไว้เป็นสาธารณะ
  • ลายมือชื่อที่ผิดปกติ (ตัวตนที่ไม่คาดหมาย นอกเวลาทำการ) จะสามารถตรวจพบได้

ความโปร่งใสเปลี่ยนการถูกเจาะระบบอย่างเงียบ ๆ ให้กลายเป็นหลักฐานที่สังเกตเห็นได้

SLSA: ระดับความถูกต้องครบถ้วนของการสร้าง

SLSA (ระดับความปลอดภัยของห่วงโซ่อุปทานสำหรับอาร์ติแฟกต์ซอฟต์แวร์) คือกรอบงานที่ให้ระดับความน่าเชื่อถือของกระบวนการสร้างของคุณ ระดับที่สูงขึ้นต้องการหลักประกันที่เข้มแข็งขึ้นเพื่อป้องกันการแก้ไขโดยมิชอบ

  • L1 — มีข้อมูลแหล่งที่มาและจัดทำเอกสารไว้
  • L2 — ข้อมูลแหล่งที่มาที่ลงลายมือชื่อโดยบริการสร้างที่โฮสต์ไว้
  • L3 — การสร้างที่เสริมความปลอดภัยและแยกออกจากกัน ข้อมูลแหล่งที่มาจะปลอมแปลงไม่ได้แม้โดยผู้มีสิทธิ์ภายในกระบวนการทำงาน

SLSA คือแผนที่นำทาง: เลือกระดับเป้าหมายและปิดช่องว่างที่มีอยู่

หลักฐานรับรองแหล่งที่มาของการสร้าง

หลักฐานรับรองแหล่งที่มาคือข้อความที่ลงลายมือชื่อซึ่งอธิบายว่าอาร์ติแฟกต์ถูกสร้างขึ้นอย่างไร ได้แก่ คอมมิตต้นทาง ตัวตนของผู้สร้าง พารามิเตอร์การสร้าง และข้อมูลนำเข้า รูปแบบ in-toto ทำให้ข้อมูลนี้เป็นมาตรฐานเดียวกัน

# generate and attach SLSA provenance for an image
cosign attest --type slsaprovenance \
  --predicate provenance.json \
  my-registry/my-app@sha256:1d5283...

# verify provenance matches expected source repo
cosign verify-attestation --type slsaprovenance my-registry/my-app@sha256:1d5283...

การบังคับใช้ลายมือชื่อเมื่ออนุญาตให้ทำงาน

การลงลายมือชื่อจะมีประโยชน์ก็ต่อเมื่อมีสิ่งที่ปฏิเสธอาร์ติแฟกต์ที่ไม่มีลายมือชื่อ ใน Kubernetes ตัวควบคุมการอนุญาตสามารถบล็อกอิมเมจใดก็ตามที่ไม่มีลายมือชื่อและข้อมูลแหล่งที่มาที่ถูกต้องจากตัวตนที่คุณเชื่อถือ

  • ตัวควบคุมนโยบายจะตรวจสอบลายมือชื่อของ cosign ก่อนที่พ็อดจะเริ่มทำงาน
  • ปฏิเสธอิมเมจที่ลงลายมือชื่อโดยตัวตนที่ไม่คาดหมาย
  • กำหนดให้ข้อมูลแหล่งที่มาอ้างอิงไปยังที่เก็บต้นฉบับที่ได้รับอนุมัติ

การดำเนินการนี้ทำให้กระบวนการสมบูรณ์: อาร์ติแฟกต์ที่ไม่น่าเชื่อถือจะไม่ทำงานเลย

การลงลายมือชื่อให้ส่วนพึ่งพาต้นทาง

ข้อมูลแหล่งที่มามีค่ามากที่สุดเมื่อครอบคลุมสิ่งที่คุณนำมาใช้งาน ไม่ใช่เฉพาะสิ่งที่คุณส่งมอบเท่านั้น ระบบนิเวศต่าง ๆ กำลังเพิ่มการลงลายมือชื่อและข้อมูลแหล่งที่มาแบบมีมาให้ในตัว:

  • ข้อมูลแหล่งที่มาของ npmเชื่อมโยงแพ็กเกจที่เผยแพร่กับคอมมิตต้นทางและการทำงานของ CI
  • อิมเมจพื้นฐานของคอนเทนเนอร์มีลายมือชื่อของ cosign ให้ใช้งานมากขึ้นเรื่อย ๆ
  • รีจิสทรีภาษากำลังทดลองการตรวจสอบที่รองรับโดย Sigstore

ควรเลือกส่วนพึ่งพาที่เผยแพร่ข้อมูลแหล่งที่มาซึ่งตรวจสอบได้ และตรวจสอบข้อมูลดังกล่าวระหว่างการติดตั้งเมื่อระบบรองรับ

ให้ความสำคัญกับการตรวจสอบก่อน

กลยุทธ์การลงลายมือชื่อที่ใช้งานได้จริงควรมีหลายชั้นและตรวจสอบได้ตั้งแต่ต้นจนจบ:

  • ตรึงข้อมูลนำเข้าด้วยไดเจสต์
  • ลงลายมือชื่อแบบไร้กุญแจให้อาร์ติแฟกต์ และแนบ SBOM พร้อมหลักฐานรับรองแหล่งที่มา
  • บันทึกทุกอย่างไว้ในบันทึกความโปร่งใส
  • บังคับใช้การตรวจสอบขณะนำไปใช้งานด้วยนโยบายการอนุญาต

ห่วงโซ่จะแข็งแกร่งได้เท่ากับจุดเชื่อมโยงที่ไม่ได้รับการตรวจสอบซึ่งอ่อนแอที่สุดเท่านั้น ดังนั้นจึงควรตรวจสอบทุกจุดที่มีการนำไปใช้งาน

ตรวจสอบความเข้าใจอย่างรวดเร็ว: การลงลายมือชื่อแบบไร้กุญแจ

วิเคราะห์ว่าเหตุใดการลงลายมือชื่อแบบไร้กุญแจจึงช่วยเพิ่มความปลอดภัยให้ห่วงโซ่อุปทาน

สรุป: การลงลายมือชื่อส่วนพึ่งพาและอาร์ติแฟกต์

คุณได้เรียนรู้วิธีพิสูจน์แหล่งที่มาและบังคับใช้ข้อมูลดังกล่าว

  • ตรึงด้วยไดเจสต์ ไม่ใช่แท็กที่เปลี่ยนแปลงได้
  • ลายมือชื่อดิจิทัลให้ความถูกต้องครบถ้วนและความเป็นของแท้ ความท้าทายคือการจัดการกุญแจ
  • Sigstore + cosignช่วยให้ลงลายมือชื่อแบบไร้กุญแจได้ พร้อมบันทึกความโปร่งใสสาธารณะของ Rekor
  • SLSAให้ระดับความถูกต้องครบถ้วนของการสร้าง ส่วนหลักฐานรับรองแหล่งที่มาจะบันทึกว่าอาร์ติแฟกต์ถูกสร้างขึ้นอย่างไร
  • นโยบายการอนุญาตจะปฏิเสธสิ่งที่ไม่มีลายมือชื่อหรือไม่น่าเชื่อถือขณะนำไปใช้งาน

ถัดไป: การเสริมความปลอดภัยให้กระบวนการ CI/CD ที่สร้างอาร์ติแฟกต์เหล่านี้

คำถามที่พบบ่อย

บทเรียน “การลงลายมือชื่อการพึ่งพาและสิ่งส่งมอบ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การลงลายมือชื่อการพึ่งพาและสิ่งส่งมอบ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การลงลายมือชื่อการพึ่งพาและสิ่งส่งมอบ”

ตรวจสอบแหล่งที่มาด้วย SLSA และ Sigstore คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การลงลายมือชื่อการพึ่งพาและสิ่งส่งมอบ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม

ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ภัยคุกคามต่อห่วงโซ่อุปทาน
  2. บัญชีรายการวัสดุซอฟต์แวร์ (SBOM)
  3. การลงลายมือชื่อการพึ่งพาและสิ่งส่งมอบ
  4. การรักษาความปลอดภัยไปป์ไลน์ CI/CD
← กลับไปที่ Cyber Security Academy