การจัดการข้อมูล PII และ telemetry
ภาพรวมโดยสรุป
หัวข้อที่มีชื่อว่า “ภาพรวมโดยสรุป”หน้านี้อธิบายวิธีที่ core engine จัดการข้อมูล ได้แก่ สิ่งที่อ่าน สิ่งที่เก็บไว้ในหน่วยความจำของโปรเซส สิ่งที่เขียน การแปลงเพื่อลบ personally identifiable information (PII) แบบกำหนดผลได้ที่ใช้กับ audit bundle และเส้นทาง telemetry แบบ opt-in
ขอบเขต หน้านี้อธิบายพฤติกรรมของไลบรารี data residency ระดับการดีพลอย ครอบคลุมว่าเอกสารของคุณถูกประมวลผลในเขตอำนาจศาลใด ไฟล์ชั่วคราวถูกจัดเก็บไว้ที่ใด เอาต์พุตถูกเก็บรักษาไว้นานเท่าใด และ telemetry backend ใด (ถ้ามี) ที่รับ span ทางเลือกเหล่านั้นเป็นความรับผิดชอบของผู้ผสานรวม ไม่ใช่ของไลบรารี engine ให้ค่าเริ่มต้นแบบ fail-closed และการแปลงเพื่อลบข้อมูลแก่คุณ แต่ engine ไม่สามารถตัดสินใจเรื่อง data residency หรือ lawful basis แทนคุณได้
การติดตั้ง
หัวข้อที่มีชื่อว่า “การติดตั้ง”composer require nextpdf/core:^3PII scrubber และ telemetry interceptor เป็นส่วนหนึ่งของแพ็กเกจ core เส้นทาง telemetry จะยังไม่ทำงาน เว้นแต่จะมี OpenTelemetry SDK และผู้เรียกใช้เชื่อมต่อ interceptor เข้ามา
ภาพรวมเชิงแนวคิด
หัวข้อที่มีชื่อว่า “ภาพรวมเชิงแนวคิด”engine ทำหน้าที่เป็น processor สำหรับข้อมูลที่คุณส่งให้ ตามความหมายของ ISO/IEC 29100 (iso_iec_29100#3.x56) กล่าวคือทำงานกับเนื้อหาเอกสารภายใต้คำสั่งของผู้ผสานรวม engine ไม่ส่งข้อมูลกลับไปยังผู้พัฒนา ไม่เก็บเนื้อหาไว้นอกเหนือจากเอาต์พุตที่คุณร้องขอ และไม่ส่งเนื้อหาเอกสารไปยัง endpoint ใด ๆ ที่ดำเนินการโดย NextPDF
มีพื้นผิวข้อมูลสามส่วนที่สำคัญ ได้แก่
- input/output (I/O) ของเอกสาร engine อ่านอินพุตจากพาธหรือสตรีมที่คุณกำหนด และเขียนเอาต์พุตไปยังพาธหรือสตรีมที่คุณกำหนด บัฟเฟอร์ระหว่างกลางจะอยู่ในหน่วยความจำของโปรเซสตลอดช่วงการเรนเดอร์ และถูกปล่อยเมื่อการเรนเดอร์เสร็จสมบูรณ์
- Audit bundle เมื่อเปิดใช้งานการตรวจสอบ engine สามารถสร้าง bundle สำหรับการวินิจฉัยได้ ก่อนการ serialize bundle ดังกล่าวจะผ่าน PII scrubber แบบกำหนดผลได้
- Telemetry OpenTelemetry interceptor ที่เป็นตัวเลือกสามารถสร้าง span และ metric ได้ interceptor จะยังคงปิดอยู่ เว้นแต่จะติดตั้ง SDK และสร้าง interceptor ขึ้นมา แอตทริบิวต์ของ span จะผ่าน attribute sanitizer
แนวทางด้านความเป็นส่วนตัวสอดคล้องกับ GDPR Art. 32 ซึ่งระบุว่า pseudonymisation และการลดข้อมูลให้น้อยที่สุดเป็นตัวอย่างของมาตรการป้องกัน การนำมาตรการป้องกันเหล่านั้นไปใช้เป็นความรับผิดชอบของ controller (eu_gdpr#x50) ไลบรารีจัดเตรียมกลไกการลบข้อมูล ส่วน controller เป็นผู้ตัดสินใจเรื่อง lawful basis การเก็บรักษาข้อมูล และ residency
พื้นผิว API
หัวข้อที่มีชื่อว่า “พื้นผิว API”หน้านี้ไม่ได้บันทึก API ของ audit หรือ telemetry ซ้ำ (ดูได้ที่ /modules/core/audit/) คอมโพเนนต์ที่เกี่ยวข้องกับความน่าเชื่อถือคือ PII sanitizer เริ่มต้นที่ใช้กับ audit bundle และ attribute sanitizer ของ OpenTelemetry interceptor เนื้อหาด้านล่างอธิบายผลลัพธ์ของคอมโพเนนต์เหล่านี้ ไม่ใช่ signature ของแต่ละตัว
ตัวอย่างโค้ด — เริ่มต้นอย่างรวดเร็ว
หัวข้อที่มีชื่อว่า “ตัวอย่างโค้ด — เริ่มต้นอย่างรวดเร็ว”โดยค่าเริ่มต้น จะไม่มีข้อมูลใดออกจากโปรเซส เว้นแต่คุณจะร้องขอ ไม่มีโค้ดใดเปิดใช้งานการส่งข้อมูลออกทางเครือข่าย การไม่มีโค้ดคือค่าเริ่มต้น
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
// Input read from disk, output written to disk. No telemetry SDK loaded,// so the telemetry path completes in sub-microsecond no-ops. No content// is transmitted anywhere.$doc = Document::open('input.pdf');$doc->save('output.pdf');ตัวอย่างโค้ด — การใช้งานจริง
หัวข้อที่มีชื่อว่า “ตัวอย่างโค้ด — การใช้งานจริง”เมื่อมีการสร้าง audit bundle ขึ้น PII scrubber แบบกำหนดผลได้จะปิดบังประเภทข้อมูลที่พบบ่อยก่อนการ serialize การแปลงนี้เป็นแบบ pure (ไม่ใช้นาฬิกา ไม่มีความสุ่ม) ดังนั้น bundle จึงคงเสถียรในระดับไบต์สำหรับอินพุตหนึ่ง ๆ
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Audit\DefaultPiiSanitiser;
$scrubber = new DefaultPiiSanitiser();// E-mail → [EMAIL], IPv4 → [IPV4], IPv6 → [IPV6], X.500 DN attributes// beyond CN → keyword preserved, value [REDACTED]. Deterministic.$safe = $scrubber->sanitise($rawAuditField);กรณีขอบและข้อควรระวัง
หัวข้อที่มีชื่อว่า “กรณีขอบและข้อควรระวัง”- scrubber ทำงานแบบ best-effort ไม่ใช่การรับประกัน
DefaultPiiSanitiserปิดบังเฉพาะประเภทที่รู้จัก ได้แก่ อีเมลตาม RFC 5321 IPv4/IPv6 และแอตทริบิวต์ distinguished name (DN) ตาม RFC 4514 หลายรายการ ฟิลด์ข้อความอิสระที่มีชื่อหรือตัวระบุซึ่งอยู่นอกรูปแบบเหล่านั้นจะไม่ถูกปิดบัง ให้ถือว่า scrubber เป็นชั้นป้องกันแบบ defense-in-depth ไม่ใช่มาตรการกำกับดูแลที่ทำให้ผู้ดำเนินการไม่ต้องตรวจสอบ - ไฟล์ชั่วคราวเป็นเรื่องของฝั่งการดีพลอย engine ใช้การจัดการไฟล์ชั่วคราวที่ปลอดภัย
TMPDIRของคุณอยู่ที่ใด และTMPDIRอยู่บนพื้นที่จัดเก็บที่เข้ารหัสลับในเขตอำนาจศาลที่ถูกต้องหรือไม่ ล้วนเป็นการตัดสินใจระดับการดีพลอย ไลบรารีไม่สามารถบังคับใช้ data residency ได้ - Telemetry เป็นแบบ opt-in และผ่านการ sanitize ไม่ใช่ปราศจากความเสี่ยง เมื่อเชื่อมต่อแล้ว OpenTelemetry interceptor จะส่งแอตทริบิวต์ของ span ผ่าน attribute sanitizer ที่บังคับใช้นโยบายข้อมูลแบบ zero-trust backend ที่คุณส่งออกข้อมูลไป รวมถึงการเก็บรักษาและตำแหน่งที่ตั้งของ backend นั้น ล้วนเป็นทางเลือกของผู้ผสานรวมทั้งสิ้น
- Lawful basis ไม่ใช่การตัดสินใจของไลบรารี controller เป็นผู้กำหนดว่าการประมวลผลเอกสารหนึ่ง ๆ ชอบด้วยกฎหมายหรือไม่ และอยู่บนฐานใดภายใต้ GDPR / กฎหมายท้องถิ่น (
eu_gdpr#x50) ไลบรารีไม่สามารถมองเห็นข้อมูลส่วนนี้ได้
ประสิทธิภาพ
หัวข้อที่มีชื่อว่า “ประสิทธิภาพ”PII scrubber ใช้การแปลงด้วย regex แบบ pure โดยไม่มี I/O telemetry interceptor ตรวจสอบการมีอยู่ของ SDK เพียงครั้งเดียวตอนสร้างวัตถุ และแคชผลลัพธ์ไว้ เมื่อไม่มีการติดตั้ง SDK การเรียก telemetry ทุกครั้งจะเสร็จสมบูรณ์ในเวลาต่ำกว่าหนึ่งไมโครวินาที ดังนั้นค่าเริ่มต้นที่รักษาความเป็นส่วนตัว (telemetry ปิด) จึงเป็นค่าเริ่มต้นที่ไม่มี overhead เช่นกัน
หมายเหตุด้านความปลอดภัย
หัวข้อที่มีชื่อว่า “หมายเหตุด้านความปลอดภัย”สำหรับผู้ตรวจสอบ กฎเกี่ยวกับขอบเขตการจัดการข้อมูลมีดังนี้
- ไม่มีการส่งข้อมูลออกอย่างลับ ๆ engine ไม่ส่งเนื้อหาเอกสารไปยัง endpoint ใด ๆ ที่ดำเนินการโดย NextPDF การเข้าถึงเครือข่ายขาออกจะเกิดขึ้นเฉพาะกับการดึงทรัพยากรที่เปิดใช้งานอย่างชัดเจนและจำกัด scheme และกับ endpoint ของ time-stamp authority (TSA) Online Certificate Status Protocol (OCSP) และ certificate revocation list (CRL) ที่กำหนดค่าไว้ ซึ่งแต่ละรายการอยู่ภายใต้การป้องกัน server-side request forgery (SSRF)
- การลบข้อมูลแบบกำหนดผลได้และมีขอบเขตจำกัด การแปลง PII ของ audit bundle เป็นแบบกำหนดผลได้และทำงานก่อนการ serialize การแปลงนี้เป็นเครื่องมือช่วยลดข้อมูลให้น้อยที่สุดตามเจตนารมณ์ของ GDPR Art. 32 (
eu_gdpr#x50) ไม่ใช่การรับรองการทำให้ไม่ระบุตัวตน - Residency เป็นเรื่องของผู้ผสานรวม การจัดทำบัญชีและการทำแผนที่ว่าข้อมูลถูกประมวลผลที่ใดเป็นกิจกรรมระดับองค์กรตาม NIST Privacy Framework (
nist_privacy_framework_1_1#x9.x1.p3) ไลบรารีเปิดเผยกลไกควบคุม และผู้ผสานรวมเป็นผู้ทำแผนที่ - บทบาทเป็นเรื่องภายนอก การพิจารณาว่าการดีพลอยเป็น controller หรือ processor และมีภาระหน้าที่ใดตามมา เป็นการกำหนดบทบาทตาม ISO/IEC 29100 (
iso_iec_29100#3.x56) ซึ่งไลบรารีไม่สามารถทำได้
ความสอดคล้อง
หัวข้อที่มีชื่อว่า “ความสอดคล้อง”หน้านี้ไม่ใช่โปรไฟล์ความสอดคล้อง หน้านี้อ้างอิงถึง GDPR Art. 32 ISO/IEC 29100 และ NIST Privacy Framework เพื่อระบุขอบเขตระหว่างพฤติกรรมของไลบรารีกับความรับผิดชอบของ controller หน้านี้ไม่ได้ยืนยันความสอดคล้องกับ GDPR ความสอดคล้องกับ ISO/IEC 29100 หรือการรับรองด้านความเป็นส่วนตัวใด ๆ data controller เป็นผู้พิจารณาเรื่องเหล่านั้นในระดับการดีพลอย ไม่ใช่ไลบรารี