TgWitness / เอกสาร

อ้างอิง / การเก็บรักษาข้อมูลและการบูรณาการ

webhooks ส่งออก

ส่งเหตุการณ์ที่ระบุขอบเขตไปยังผู้รับ HTTPS พร้อมลายเซ็น HMAC การลองส่งซ้ำ และสถานะการส่ง

เนื้อหาหลักปัจจุบัน: ใช้การเช็คเอาต์จากแหล่งที่มา; เวอร์ชัน 0.7.0 portable preview ยังไม่มีคุณสมบัตินี้

คู่มือขั้นตอนการทำงาน · Wiki

เปิด Integrations → Outgoing webhooks ในพื้นที่ทำงานที่เลือกไว้ เพิ่มผู้รับ HTTPS เลือกเหตุการณ์ collector/media/export และสามารถเลือกแชทได้ สำหรับข้อมูลสังเกตการณ์ใหม่และการเปลี่ยนแปลง ข้อความข้อความถูกปิดไว้ตามค่าเริ่มต้น การเปิดใช้งานส่วนสรุป จะเพิ่มสูงสุด 1,000 ตัวอักษรไปยังเหตุการณ์การเปลี่ยนแปลงข้อความ; สนาม Telegram แบบดิบและ ข้อมูลรับรองจะไม่ถูกส่งไปเลย

คัดลอก HMAC secret ลงในส่วนการตั้งค่าที่ได้รับการปกป้องของผู้รับเพียงครั้งเดียวเท่านั้น มัน ถูกเข้ารหัสใน vault ของ TgWitness และไม่สามารถเรียกคืนจากแผงควบคุมได้ ลบ และสร้างปลายทางใหม่เพื่อหมุนเวียนมัน ส่งการทดสอบจำลอง จะเพิ่มการทดสอบที่ไม่มีเนื้อหาแชทลงในคิว รีเฟรชสถานะการส่งเพื่อดูผลลัพธ์

ระบบส่งข้อมูลนี้ขยายวงจรการแจ้งเตือนที่มีอยู่ร่วมกับ Apprise โดยใช้ เส้นทางภายนอกของพื้นที่ทำงาน (workspace) และข้อจำกัดปลายทางส่วนตัวที่มีอยู่ ไม่มีระบบสำรองหรือการเปลี่ยนเส้นทางโดยตรงตามมา URL ต้องไม่รวมข้อมูลรับรอง สตริงการค้นหา หรือส่วนย่อย; ที่อยู่ส่วนตัวต้องได้รับการอนุญาตจากระดับเซิร์ฟเวอร์ ไม่ใช่การตั้งค่าที่ผู้ใช้แผงควบคุมสามารถข้ามได้

ข้อมูลที่ส่งและลายเซ็น#

Schema: tgwitness.webhook/1. ทุก payload ประกอบด้วย event_id, timestamp, workspace, type, synthetic และตัวนับ เหตุการณ์ที่บันทึกในสมุดบันทึกจะรวมถึงลำดับและค่าแฮช การส่งออกข้อมูลแบบเต็มรูปแบบและ การทดสอบสังเคราะห์ถือเป็นเหตุการณ์การส่งมอบ โดยไม่มีการอ้างอิงสมุดบันทึกที่ลงนามและสร้างขึ้น การแจ้งเตือนการลบข้อความใน Telegram และ missing_on_recheck ยังคงเป็นประเภทที่แยกต่างหาก

ส่วนหัวX-TgWitness-Signature คือt=UNIX_SECONDS,v1=HEX_HMAC_SHA256 คำนวณ HMAC จากไบต์ที่ระบุไว้อย่างแม่นยำtimestamp + "." + raw_request_body โดยใช้ คีย์ลับที่แสดงไว้เป็นไบต์ UTF-8 เปรียบเทียบลายเซ็นในเวลาคงที่ก่อน ที่จะวิเคราะห์หรือดำเนินการกับเนื้อหา ปฏิเสธเวลาประทับที่ห่างจาก นาฬิกาของคุณเกินห้านาที เวลาประทับจะได้รับการอัปเดตทุกครั้งที่มีการพยายามส่งข้อความ

ใช้ event_id เป็นกุญแจความคงที่ (idempotency key) ในพื้นที่จัดเก็บข้อมูลที่ทนทาน (durable storage) พร้อมด้วยข้อจำกัดความเป็นเอกลักษณ์แบบอะตอมิก (atomic unique constraint) ก่อนที่จะเกิดผลข้างเคียง (side effects) ลายเซ็นที่ถูกต้องเพียงอย่างเดียวไม่สามารถป้องกันการ เล่นซ้ำ (replay) ของคำขอที่เพิ่งส่งไปได้ เก็บ ID ที่ได้รับการประมวลผลไว้อย่างน้อยตลอด ช่วงเวลาการลองใหม่ (retry window); เก็บไว้นานกว่านั้นหากผู้รับสามารถประมวลผลเหตุการณ์ที่จัดเก็บไว้ได้ใหม่

ลองใหม่#

การส่งข้อมูลจะถูกจัดเข้าคิวอย่างคงทนก่อนการส่งคำขอ HTTP โดยใช้หลักการ "at-least-once": การสูญเสียการยืนยันหรือการเริ่มต้นใหม่ อาจส่งผลให้เหตุการณ์ถูกส่งซ้ำด้วย ID เดียวกัน มีทั้งหมดแปดครั้งในการลองส่ง โดยใช้การลดความถี่แบบเอ็กซ์โพเนนเชียล (exponential backoff) เริ่มต้นที่ 15 วินาที และจำกัดสูงสุดที่หนึ่งชั่วโมง การส่งสำเร็จต้องได้รับคำตอบ 2xx งานที่หมดเวลา จะแสดงข้อผิดพลาดที่มองเห็นได้; การส่งข้อมูลไม่ได้รับการรับประกันหลังจากสิ้นสุดการลองใหม่

คิวสามารถเก็บการส่งได้ 1,000 ครั้ง เมื่อเต็ม การสแกนเหตุการณ์ในบันทึกจะหยุดชั่วคราวและ จะเริ่มใหม่เมื่อมีพื้นที่ว่าง การส่งออกข้อมูลแบบเต็มที่ไม่สามารถจัดเข้าคิวได้ จะแสดงข้อผิดพลาดในคิวที่มองเห็นได้ ระบบจะพยายามส่งข้อมูลสูงสุด 5 ครั้งต่อรอบการแจ้งเตือน และบันทึกการพยายามส่ง 100 ครั้งล่าสุดไว้ การลบปลายทาง จะลบการส่งข้อมูลที่รออยู่ด้วย

ตัวอย่าง n8n#

นำเข้าตัวอย่างเวิร์กโฟลว์ ซึ่งยังไม่ถูกเปิดใช้งาน และไม่มีการเก็บข้อมูลลับหรือการดำเนินการต่อเนื่องใดๆ ตั้งค่า TGWITNESS_WEBHOOK_SECRET ใน สภาพแวดล้อม n8n worker, อนุญาตการเข้าถึงสภาพแวดล้อมนั้น และอนุญาต crypto builtin สำหรับโหนด Code ตัวอย่างนี้ใช้ตัวเลือก raw-body ของโหนด Webhook, ตรวจสอบลายเซ็น/ความสดใหม่ และยืนยันเหตุการณ์ที่ได้รับการตรวจสอบแล้ว สิ่งนี้สอดคล้องกับ การดำเนินการที่บันทึกไว้ในเอกสารของโหนด

ก่อนที่จะเพิ่มการเขียนหรือการแจ้งเตือน SIEM ให้เพิ่มระบบจัดเก็บข้อมูลที่มีความคงทนและคุณสมบัติ idempotency โดยใช้คีย์event_id จำกัดการแก้ไขเวิร์กโฟลว์ n8n และการเก็บรักษาบันทึกการดำเนินการ ตามข้อมูลที่คุณเลือกส่ง TgWitness ไม่เพิ่มคำสั่งขาเข้าใดๆ