ข้ามไปยังเนื้อหา

การจัดการข้อมูล 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 แทนคุณได้

Terminal window
composer require nextpdf/core:^3

PII scrubber และ telemetry interceptor เป็นส่วนหนึ่งของแพ็กเกจ core เส้นทาง telemetry จะยังไม่ทำงาน เว้นแต่จะมี OpenTelemetry SDK และผู้เรียกใช้เชื่อมต่อ interceptor เข้ามา

engine ทำหน้าที่เป็น processor สำหรับข้อมูลที่คุณส่งให้ ตามความหมายของ ISO/IEC 29100 (iso_iec_29100#3.x56) กล่าวคือทำงานกับเนื้อหาเอกสารภายใต้คำสั่งของผู้ผสานรวม engine ไม่ส่งข้อมูลกลับไปยังผู้พัฒนา ไม่เก็บเนื้อหาไว้นอกเหนือจากเอาต์พุตที่คุณร้องขอ และไม่ส่งเนื้อหาเอกสารไปยัง endpoint ใด ๆ ที่ดำเนินการโดย NextPDF

มีพื้นผิวข้อมูลสามส่วนที่สำคัญ ได้แก่

  1. input/output (I/O) ของเอกสาร engine อ่านอินพุตจากพาธหรือสตรีมที่คุณกำหนด และเขียนเอาต์พุตไปยังพาธหรือสตรีมที่คุณกำหนด บัฟเฟอร์ระหว่างกลางจะอยู่ในหน่วยความจำของโปรเซสตลอดช่วงการเรนเดอร์ และถูกปล่อยเมื่อการเรนเดอร์เสร็จสมบูรณ์
  2. Audit bundle เมื่อเปิดใช้งานการตรวจสอบ engine สามารถสร้าง bundle สำหรับการวินิจฉัยได้ ก่อนการ serialize bundle ดังกล่าวจะผ่าน PII scrubber แบบกำหนดผลได้
  3. Telemetry OpenTelemetry interceptor ที่เป็นตัวเลือกสามารถสร้าง span และ metric ได้ interceptor จะยังคงปิดอยู่ เว้นแต่จะติดตั้ง SDK และสร้าง interceptor ขึ้นมา แอตทริบิวต์ของ span จะผ่าน attribute sanitizer

แนวทางด้านความเป็นส่วนตัวสอดคล้องกับ GDPR Art. 32 ซึ่งระบุว่า pseudonymisation และการลดข้อมูลให้น้อยที่สุดเป็นตัวอย่างของมาตรการป้องกัน การนำมาตรการป้องกันเหล่านั้นไปใช้เป็นความรับผิดชอบของ controller (eu_gdpr#x50) ไลบรารีจัดเตรียมกลไกการลบข้อมูล ส่วน controller เป็นผู้ตัดสินใจเรื่อง lawful basis การเก็บรักษาข้อมูล และ residency

หน้านี้ไม่ได้บันทึก 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 เช่นกัน

สำหรับผู้ตรวจสอบ กฎเกี่ยวกับขอบเขตการจัดการข้อมูลมีดังนี้

  1. ไม่มีการส่งข้อมูลออกอย่างลับ ๆ engine ไม่ส่งเนื้อหาเอกสารไปยัง endpoint ใด ๆ ที่ดำเนินการโดย NextPDF การเข้าถึงเครือข่ายขาออกจะเกิดขึ้นเฉพาะกับการดึงทรัพยากรที่เปิดใช้งานอย่างชัดเจนและจำกัด scheme และกับ endpoint ของ time-stamp authority (TSA) Online Certificate Status Protocol (OCSP) และ certificate revocation list (CRL) ที่กำหนดค่าไว้ ซึ่งแต่ละรายการอยู่ภายใต้การป้องกัน server-side request forgery (SSRF)
  2. การลบข้อมูลแบบกำหนดผลได้และมีขอบเขตจำกัด การแปลง PII ของ audit bundle เป็นแบบกำหนดผลได้และทำงานก่อนการ serialize การแปลงนี้เป็นเครื่องมือช่วยลดข้อมูลให้น้อยที่สุดตามเจตนารมณ์ของ GDPR Art. 32 (eu_gdpr#x50) ไม่ใช่การรับรองการทำให้ไม่ระบุตัวตน
  3. Residency เป็นเรื่องของผู้ผสานรวม การจัดทำบัญชีและการทำแผนที่ว่าข้อมูลถูกประมวลผลที่ใดเป็นกิจกรรมระดับองค์กรตาม NIST Privacy Framework (nist_privacy_framework_1_1#x9.x1.p3) ไลบรารีเปิดเผยกลไกควบคุม และผู้ผสานรวมเป็นผู้ทำแผนที่
  4. บทบาทเป็นเรื่องภายนอก การพิจารณาว่าการดีพลอยเป็น 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 เป็นผู้พิจารณาเรื่องเหล่านั้นในระดับการดีพลอย ไม่ใช่ไลบรารี