跳到內容

資料處理、PII 與遙測

本頁說明核心引擎如何處理資料:它會讀取什麼、在行程記憶體中保留什麼、寫出什麼、套用至稽核包的決定性 PII 去識別轉換,以及可選用的遙測路徑。

邊界。 本頁描述的是函式庫行為。部署層級的資料落地(residency)——你的文件在哪個司法管轄區內處理、 暫存檔落在何處、輸出保留多久,以及哪個遙測 backend(後端,若有)接收 span——都屬於整合者的責任,而非函式庫的責任。引擎提供 fail-closed(預設拒絕)的安全預設值與一套去識別轉換;它無法替你做出資料落地或法律依據的決定。

Terminal window
composer require nextpdf/core:^3

PII 去識別器與遙測攔截器都是核心套件的一部分;除非 OpenTelemetry SDK 存在,且呼叫端已接上該攔截器,否則遙測路徑會維持停用。

引擎在 ISO/IEC 29100 的意義下(iso_iec_29100#3.x56),是你交付資料的處理者(processor):它依整合者的指示操作文件內容。它不會回傳資料給原廠(phone home)、不會在你要求的輸出之外保留內容,也不會將文件內容傳送到任何由 NextPDF 營運的 endpoint(端點)。

有三個資料面向值得關注:

  1. 文件 I/O。 輸入會從你提供的路徑或 stream(串流)讀取;輸出會寫入你提供的路徑或 stream。中介緩衝區在算繪期間存在於行程記憶體中,並會在算繪完成時釋放。
  2. 稽核包。 啟用稽核後,引擎可以發出一份診斷包。序列化之前,該包會先通過一個決定性的 PII 去識別器。
  3. 遙測。 可選用的 OpenTelemetry 攔截器能發出 span 與指標。除非已安裝 SDK 且已建構該攔截器,否則它會維持關閉;span 屬性會通過一個屬性清理器。

此隱私態勢遵循 GDPR 第 32 條的原則:去識別化(pseudonymisation)與最小化都是該條舉例的防護措施。套用這些防護措施是控制者(controller)的責任(eu_gdpr#x50)。函式庫提供去識別機制。控制者決定法律依據、保留期限與資料落地。

本頁不重新記錄稽核或遙測 API(請見 /modules/core/audit/ 一節)。與信任相關的元件,是套用於稽核包的預設 PII 清理器,以及 OpenTelemetry 攔截器的屬性清理器;以下描述的是它們的效果,而非函式簽章。

預設行為是:除非你主動要求,否則不會有任何資料離開該行程。沒有任何程式碼會啟用網路輸出;沒有這類程式碼,正是預設狀態:

<?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');

產生稽核包時,決定性的 PII 去識別器會在序列化之前遮蔽常見類別。此轉換是純函式(無時鐘、無隨機性),因此對於給定輸入,同一個包在位元組層級保持穩定:

<?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);
  • 去識別器是盡力而為,並非保證。 DefaultPiiSanitiser 只會遮蔽它認得的類別(RFC 5321 電子郵件、IPv4/IPv6,以及數個 RFC 4514 DN 屬性)。如果自由文字欄位中含有姓名,或含有這些樣式無法比對的識別碼,就不會被遮蔽。請把它視為一道縱深防禦層,而不是免除操作者審查義務的合規控制。
  • 暫存檔是部署端的職責。 引擎採用安全的暫存檔處理方式。你的 TMPDIR 位於何處,以及 TMPDIR 是否位於正確司法管轄區內的加密儲存上,都是部署層級的決定。函式庫無法強制執行資料落地。
  • 遙測是可選用且經過清理的,但並非毫無風險。 接上後,OpenTelemetry 攔截器會讓 span 屬性通過一個強制執行零信任資料政策的屬性清理器。你匯出到哪個 backend(後端),以及該 backend 的保留期限與所在位置,完全由整合者決定。
  • 法律依據並非函式庫的決定。 處理某份特定文件是否合法、以及基於何種依據,須由控制者依 GDPR 與當地法律判定(eu_gdpr#x50);函式庫對此毫無可見性。

PII 去識別器是一組無 I/O 的純 regex 轉換。遙測攔截器對 SDK 是否存在的檢查,只在建構時執行一次並快取結果。未安裝任何 SDK 時,每次遙測呼叫都會在次微秒時間內完成,因此保護隱私的預設值(遙測關閉)同時也是零額外開銷的預設值。

以下為審查者重述資料處理的邊界規則:

  1. 沒有隱蔽的資料外送。 引擎不會將任何文件內容傳送到任何由 NextPDF 營運的端點。對外網路存取只會發生在明確啟用、限定 scheme 的資源擷取,以及已設定的 TSA/OCSP/CRL 端點上;每一項都受 SSRF 防護把關。
  2. 決定性、有界的去識別。 稽核包的 PII 轉換是決定性的,並在序列化之前套用;它是符合 GDPR 第 32 條(eu_gdpr#x50)精神的最小化輔助,而非匿名化認證。
  3. 資料落地是整合者的責任。 依 NIST 隱私 Framework(框架)(nist_privacy_framework_1_1#x9.x1.p3),盤點與對映資料處理地點是一項組織層級活動;函式庫提供控制項,對映則由整合者執行。
  4. 角色由外部決定。 部署究竟是控制者還是處理者,以及隨之而來的義務,屬於 ISO/IEC 29100 的角色判定(iso_iec_29100#3.x56),函式庫無法替你做出。

這不是一份符合性設定檔。本頁引用 GDPR 第 32 條、ISO/IEC 29100 與 NIST 隱私框架,用以界定函式庫行為與控制者責任之間的邊界;它並未主張符合 GDPR、符合 ISO/IEC 29100,或取得任何隱私認證。那些判定應在部署層級由資料控制者做出,而非由函式庫做出。