SCT

กำลังเตรียมประสบการณ์ดิจิทัล

กรอง จัดรูปแบบ และปิดข้อมูลส่วนบุคคลใน log ก่อนส่งออก: แนวคิดจาก Cloudflare Logpush Transformers ที่ใช้กับระบบ log ใดก็ได้

log ของเว็บไซต์มักถูกส่งต่อไปยังระบบวิเคราะห์ ระบบความปลอดภัย หรือที่เก็บข้อมูลระยะยาวทั้งก้อน ทั้งที่ส่วนหนึ่งไม่มีใครใช้ และบางฟิลด์เป็นข้อมูลส่วนบุคคลอย่างหมายเลข IP Cloudflare เปิดให้ใช้ Logpush Transformers ซึ่งให้เขียน SQL สั้น ๆ กรอง จัดรูปแบบ และปิดข้อมูลก่อน log ออกจากระบบ ใช้ได้ทุกแพ็กเกจรวมแผนฟรี บทความนี้อธิบายวิธีคิดเบื้องหลัง ซึ่งนำไปใช้กับระบบ log ใดก็ได้

log ของเว็บไซต์มักถูกส่งต่อไปยังระบบวิเคราะห์ ระบบความปลอดภัย หรือที่เก็บข้อมูลระยะยาวทั้งก้อน ทั้งที่ส่วนหนึ่งไม่มีใครใช้ และบางฟิลด์เป็นข้อมูลส่วนบุคคลอย่างหมายเลข IP Cloudflare เปิดให้ใช้ Logpush Transformers ซึ่งให้เขียน SQL สั้น ๆ กรอง จัดรูปแบบ และปิดข้อมูลก่อน log ออกจากระบบ ใช้ได้ทุกแพ็กเกจรวมแผนฟรี บทความนี้อธิบายวิธีคิดเบื้องหลัง ซึ่งนำไปใช้กับระบบ log ใดก็ได้

ทำไมต้องจัดการ log ก่อนส่งออก

ปัญหาแรกคือค่าใช้จ่าย ระบบวิเคราะห์และระบบความปลอดภัยส่วนใหญ่คิดเงินตามปริมาณข้อมูลที่รับเข้าและเก็บไว้ คำขอตรวจสุขภาพระบบ (health check) ที่ยิงเข้ามาทุกไม่กี่วินาที หรือคำขอจากระบบภายในจึงกลายเป็นค่าใช้จ่ายที่ไม่มีใครใช้ ปัญหาที่สองคือข้อมูลส่วนบุคคล หมายเลข IP และข้อมูลระบุตัวตนอื่นที่ติดไปกับ log ทำให้ปลายทางทุกแห่งต้องอยู่ภายใต้ข้อกำหนดของ PDPA ด้วย ปัญหาที่สามคือรูปแบบ เมื่อรวม log จากหลายผู้ให้บริการ ชื่อฟิลด์แต่ละที่ไม่ตรงกัน ทำให้แดชบอร์ดเดียวอ่านทั้งหมดไม่ได้

Logpush Transformers ทำอะไร

Transformer คือคำสั่ง SQL ที่ผูกกับชุดข้อมูล log ชุดหนึ่ง ส่วน WHERE ใช้กรองแถวที่ไม่ต้องการออก ส่วน SELECT ใช้เพิ่ม เปลี่ยนชื่อ ลบ หรือจัดกลุ่มฟิลด์ใหม่ และใช้ฟังก์ชันอย่าง regexp_replace ปิดข้อมูลบางส่วนได้ ผลลัพธ์ส่งออกเป็น NDJSON (JSON หนึ่งบรรทัดต่อหนึ่งรายการ) ตามเดิม เขียนและลองกับข้อมูลตัวอย่างได้ในหน้า Transformer Studio ของแดชบอร์ด หรือผ่าน API และทุกครั้งที่แก้จะเก็บเป็นเวอร์ชันใหม่ให้ย้อนดูได้

ตัวอย่างการแปลง log หนึ่งรายการด้วย Transformer (สรุปจากตัวอย่างในบทความต้นฉบับ)
ก่อนหลังเหตุผล
ClientIP เต็มรูปแบบredacted_ip เช่น 203.0.XXX.XXXลดข้อมูลส่วนบุคคลที่ส่งออก
เวลาแบบข้อความunix_ts ตัวเลขวินาทีให้ระบบปลายทางเรียงเวลาได้ทันที
host และ path แยกกันรวมไว้ในกลุ่ม requestตรงกับโครงข้อมูลของแดชบอร์ด
ไม่มีชื่อผู้ให้บริการprovider = cloudflareรวม log จากหลาย CDN ได้
รหัสสถานะ HTTPเพิ่ม is_server_error เมื่อรหัส 500 ขึ้นไปนับข้อผิดพลาดฝั่งเซิร์ฟเวอร์ได้ง่าย
คำขอ /healthz และ /metricsถูกกรองทิ้งไม่ต้องจ่ายค่าเก็บข้อมูลที่ไม่มีใครใช้

เบื้องหลัง: ประมวลผลระดับล้านแถวต่อวินาทีโดยไม่ทำ log หาย

ระบบส่ง log ของ Cloudflare รับข้อมูลมากกว่า 110 ล้านรายการต่อวินาที การแปลงจึงต้องเร็วมาก ทีมแปลง log แต่ละชุดเป็นรูปแบบคอลัมน์ของ Apache Arrow แล้วส่งให้ Apache DataFusion ซึ่งเป็นตัวประมวลผล SQL ที่เขียนด้วย Rust ทำงาน คำสั่ง SQL ถูกเตรียมเป็นแผนการประมวลผลครั้งเดียวแล้วใช้ซ้ำ ผลทดสอบแปลงข้อมูลชุดละ 5,000 แถวได้ในราว 3 มิลลิวินาที หรือประมาณ 1.6 ล้านแถวต่อวินาทีต่อหนึ่งเธรดการทำงาน

ขั้นตอนภายในของ Logpush Transformers: แปลง log เป็น Apache Arrow ส่งให้ Apache DataFusion ประมวลผล SQL แล้วแปลงกลับเป็น JSON ก่อนบีบอัดส่งปลายทาง (ภาพจาก The Cloudflare Blog)
ขั้นตอนภายในของ Logpush Transformers: แปลง log เป็น Apache Arrow ส่งให้ Apache DataFusion ประมวลผล SQL แล้วแปลงกลับเป็น JSON ก่อนบีบอัดส่งปลายทาง (ภาพจาก The Cloudflare Blog)

หลักออกแบบที่ควรนำไปใช้คือการล้มเหลวแบบปลอดภัย (fail closed) ถ้าการแปลงข้อมูลชุดใดผิดพลาด ระบบจะไม่ส่งข้อมูลดิบที่ยังไม่ได้ปิดข้อมูลส่วนบุคคลออกไปแทน แต่จะหยุดตำแหน่งไว้ ลองใหม่โดยเว้นระยะนานขึ้นเรื่อย ๆ และรายงานข้อผิดพลาด ถ้าล้มต่อเนื่องนานจะปิดงานส่งออกนั้นเอง เพราะการส่งข้อมูลส่วนบุคคลหลุดออกไปแม้ครั้งเดียวแก้คืนไม่ได้

นำแนวคิดนี้ไปใช้กับระบบของเราเอง

  1. จัดการตั้งแต่ต้นทาง กรองและปิดข้อมูลก่อน log ออกจากระบบ ไม่ใช่ไปลบที่ปลายทางทีหลัง
  2. ทำรายการฟิลด์ที่เป็นข้อมูลส่วนบุคคล เช่น IP อีเมล เบอร์โทร โทเคน แล้วกำหนดว่าฟิลด์ไหนลบ ฟิลด์ไหนปิดบางส่วน
  3. ตัด log ที่ไม่มีใครใช้ โดยเฉพาะ health check และทราฟฟิกภายใน
  4. กำหนดโครงข้อมูลกลาง ให้ log จากทุกระบบใช้ชื่อฟิลด์เดียวกัน
  5. ล้มเหลวแบบปลอดภัย ถ้าขั้นปิดข้อมูลพัง ให้หยุดส่ง ไม่ใช่ส่งข้อมูลดิบแทน
  6. เก็บกฎการแปลงเป็นเวอร์ชัน เพื่อย้อนดูได้ว่าช่วงเวลาใดส่งข้อมูลอะไรออกไป

ระบบที่ไม่ได้ใช้ Cloudflare ก็ทำแนวเดียวกันได้ด้วยเครื่องมือรวบรวม log ที่แปลงข้อมูลระหว่างทางได้ เช่น Vector หรือ Fluent Bit สิ่งสำคัญไม่ใช่เครื่องมือ แต่คือการตัดสินใจว่าข้อมูลไหนควรออกจากระบบ และให้ขั้นตอนนี้อยู่ก่อนปลายทางทุกแห่ง

ธุรกิจไทยที่ส่ง log ไปเก็บกับผู้ให้บริการต่างประเทศควรตรวจว่าใน log มีข้อมูลส่วนบุคคลอะไรติดไปบ้าง เพราะนับเป็นการส่งข้อมูลออกนอกประเทศตาม PDPA ด้วย การตัดข้อมูลที่ไม่จำเป็นตั้งแต่ต้นทางลดทั้งความเสี่ยงและค่าใช้จ่ายไปพร้อมกัน ทีมงาน Smart Cyber Tech ออกแบบระบบคลาวด์และระบบเก็บ log ขององค์กร ให้ส่งเฉพาะข้อมูลที่จำเป็นและตรวจสอบย้อนหลังได้ ปรึกษาได้ที่ แบบฟอร์มติดต่อ

สรุปสาระสำคัญ

  • ทำไมต้องจัดการ log ก่อนส่งออก
  • Logpush Transformers ทำอะไร
  • เบื้องหลัง: ประมวลผลระดับล้านแถวต่อวินาทีโดยไม่ทำ log หาย
แหล่งอ้างอิงเรียบเรียงจาก The Cloudflare Blog — อ่านบทความต้นฉบับ
ภาพปกและแผนภาพ: The Cloudflare Blog · ลิขสิทธิ์ภาพเป็นของเจ้าของต้นฉบับ ใช้ประกอบการรายงานพร้อมอ้างอิงแหล่งที่มา
มีคำถามเพิ่มเติมเกี่ยวกับบทความนี้? เขียนหาเราได้ที่ info@smart-cyber-tech.com
บริการที่เกี่ยวข้องจากทีมงาน Smart Cyber Tech

บทความอื่นที่เกี่ยวข้อง

บทความที่เกี่ยวข้อง

หาให้เจอว่าเว็บช้าหรือถูกบล็อกตรงไหนด้วย Distributed Tracing: เข้าใจ span, traceparent และ OpenTelemetry ผ่าน Cloudflare Traces DevOps

หาให้เจอว่าเว็บช้าหรือถูกบล็อกตรงไหนด้วย Distributed Tracing: เข้าใจ span, traceparent และ OpenTelemetry ผ่าน Cloudflare Traces

เมื่อหน้าเว็บช้าหรือผู้ใช้บางคนถูกบล็อก ทีมมักต้องไล่เปิด log จากหลายระบบแล้วเดาว่าปัญหาอยู่ตรงไหน Distributed Tracing แก้ปัญหานี้ด้วยการบันทึกทุกขั้นที่คำขอหนึ่งเดินผ่าน ไว้ในเส้นเวลาเดียวกัน Cloudflare เพิ่งเปิด Cloudflare Traces แบบ open beta ที่บันทึกทั้งเส้นทางตั้งแต่กฎความปลอดภัย แคช Workers ไปจนถึงเซิร์ฟเวอร์ต้นทาง บทความนี้ใช้เครื่องมือนี้เป็นตัวอย่างเพื่ออธิบายแนวคิดหลักที่ใช้ได้กับทุกระบบ

อ่านบทความ
แนวทาง AI กับ PDPA ของ สคส.: 5 เรื่องที่องค์กรต้องรู้ก่อนนำข้อมูลส่วนบุคคลไปพัฒนาหรือใช้งาน AI ข้อมูลและ AI

แนวทาง AI กับ PDPA ของ สคส.: 5 เรื่องที่องค์กรต้องรู้ก่อนนำข้อมูลส่วนบุคคลไปพัฒนาหรือใช้งาน AI

องค์กรที่ใช้แชตบอต AI กับข้อมูลลูกค้า หรือกำลังพัฒนาระบบ AI ของตัวเอง มีแนวทางอ้างอิงจากหน่วยงานกำกับแล้ว สำนักงานคณะกรรมการคุ้มครองข้อมูลส่วนบุคคล (สคส.) ร่วมกับ ETDA ออกแนวทางการคุ้มครองข้อมูลส่วนบุคคลสำหรับการพัฒนาและใช้งาน AI ครอบคลุมทั้ง AI วิเคราะห์ข้อมูล AI สร้างเนื้อหา และเอเจนต์ AI ตั้งแต่วางแผนจนเลิกใช้ บทความนี้สรุป 5 เรื่องหลักที่ทีมเทคนิคและผู้บริหารควรรู้

อ่านบทความ
PDPA สำหรับทีมพัฒนาซอฟต์แวร์: ทำระบบให้ถูกกฎหมายคุ้มครองข้อมูลส่วนบุคคล ความปลอดภัย

PDPA สำหรับทีมพัฒนาซอฟต์แวร์: ทำระบบให้ถูกกฎหมายคุ้มครองข้อมูลส่วนบุคคล

พ.ร.บ.คุ้มครองข้อมูลส่วนบุคคล พ.ศ. 2562 (PDPA) บังคับใช้เต็มรูปแบบตั้งแต่ปี 2565 และ สคส. กำลังบังคับใช้เข้มข้นขึ้นทุกปี บทความนี้แปลงข้อกฎหมายเป็นแนวปฏิบัติสำหรับนักพัฒนา ตั้งแต่ฐานทางกฎหมาย การขอความยินยอม ไปจนถึงการแจ้งเหตุข้อมูลรั่วภายใน 72 ชั่วโมง

อ่านบทความ

ติดต่อเพื่อขอรับคำปรึกษาจากทีมงาน

ตั้งแต่ประเมินระบบปัจจุบัน วางแผน จนถึงลงมือพัฒนา — คุยกับเราได้โดยไม่มีค่าใช้จ่าย

ปรึกษาทีมของเรา