• เครื่องมือทำ instrumentation อัตโนมัติที่ปลอดภัยและเชื่อถือได้สำหรับแอปพลิเคชัน Go ซึ่งพัฒนาโดย Datadog
  • แทรก instrumentation ในขั้นตอนคอมไพล์เพื่อลด runtime overhead ให้น้อยที่สุด
  • ปกป้องแอปพลิเคชันด้วยความสามารถ RASP
  • แก้ไขซอร์สโค้ดระหว่างกระบวนการคอมไพล์เพื่อแทรก instrumentation สำหรับการติดตาม Datadog APM โดยอัตโนมัติ
  • ปกป้องแอปพลิเคชันจากช่องโหว่ทั่วไปด้วยความสามารถ Exploit Prevention ของ Datadog Application Security Management

วิธีการทำงาน

  • ทำงานร่วมกับ Go toolchain เพื่อวิเคราะห์และแก้ไขซอร์สโค้ดระหว่างกระบวนการคอมไพล์
  • จัดการโค้ดในระดับ Abstract Syntax Tree (AST) เพื่อให้ Go compiler ตรวจสอบความเปลี่ยนแปลงทั้งหมดและทำ type checking
  • ช่วยให้เข้าถึงพฤติกรรมทั้งหมดของแอปพลิเคชันได้อย่างไร้ข้อจำกัด พร้อมหลีกเลี่ยงข้อผิดพลาดที่อาจเกิดจากการแก้ไขไบนารีที่คอมไพล์แล้วโดยตรง
  • โค้ดที่แก้ไขแล้วจะผ่านกระบวนการ optimization ของ Go compiler ทำให้ลด runtime overhead ได้
  • แทรกคำสั่ง pragma //line ของ Go ลงในซอร์สโค้ดที่แก้ไข เพื่อไม่ให้การแก้ไขส่งผลต่อเลขบรรทัด และทำให้ stack trace ที่สร้างจากแอปพลิเคชันที่ถูกทำ instrumentation ชี้ไปยังตำแหน่งที่ถูกต้องในซอร์สโค้ดต้นฉบับ

เหตุผลที่ใช้ instrumentation แบบคอมไพล์ไทม์

  • ความปลอดภัย ความน่าเชื่อถือ และคุณภาพข้อมูล: instrumentation แบบคอมไพล์ไทม์สร้างข้อมูลที่ปลอดภัยและเชื่อถือได้มากกว่าการ patch ไบนารีหรือ eBPF
  • ระบบอัตโนมัติ: การ patch ไบนารีและ eBPF ให้ระบบอัตโนมัติในระดับสูง แต่ Orchestrion ต้องมีการเปลี่ยนแปลงกระบวนการ build และต้อง deploy แอปพลิเคชันใหม่
  • Performance overhead: eBPF อาจมี performance overhead จากการสลับ context ระหว่าง kernel กับ user space ส่วน Orchestrion แทรก instrumentation ตอนคอมไพล์ จึงลด runtime overhead ได้มากที่สุด
  • สภาพแวดล้อมที่รองรับ: eBPF ถูกจำกัดอยู่ในสภาพแวดล้อม Linux แต่ Orchestrion รองรับสภาพแวดล้อมที่หลากหลาย
  • ความสามารถโดยรวม: eBPF มีความสามารถค่อนข้างจำกัด แต่ Orchestrion ทำงานในระดับโค้ดจึงให้ความสามารถได้มากกว่า

Orchestrion สำหรับความปลอดภัย

  • ใช้งานความสามารถ RASP โดยแทรก instrumentation ที่สามารถเปลี่ยน control flow ของโปรแกรมได้ผ่านการทำงานในระดับโค้ด
  • สามารถปกป้องแอปพลิเคชันได้ด้วยตัวเองจากช่องโหว่ทั่วไป เช่น SQL injection หรือ local file inclusion
  • สามารถแทนที่ API หนึ่งด้วยอีก API หนึ่งได้อย่างสมบูรณ์ ทำให้นักพัฒนาไม่จำเป็นต้องคอยกังวลเรื่องการส่งค่า context ผ่านทุกชั้นของ business logic เพื่อทำ tracing context chaining

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น