콘텐츠로 이동

데이터 처리, PII, 텔레메트리

이 페이지는 코어 엔진의 데이터 처리 방식을 설명합니다. 어떤 데이터를 읽는지, 무엇을 프로세스 메모리에 유지하는지, 무엇을 기록하는지, 감사 번들에 적용하는 결정론적 PII 제거 변환과 옵트인 방식의 텔레메트리 경로를 다룹니다.

경계. 이 페이지는 라이브러리 동작을 설명합니다. 배포 수준의 데이터 거주성 — 문서가 어느 관할권에서 처리되는지, 임시 파일이 어디에 놓이는지, 출력이 얼마나 오래 보존되는지, 그리고 스팬을 수신하는 텔레메트리 백엔드가 무엇인지는(있는 경우) 라이브러리가 아니라 통합자의 책임입니다. 엔진은 fail-closed 기본값과 제거 변환을 제공하지만, 사용자를 대신해 데이터 거주성이나 적법 근거를 결정할 수는 없습니다.

Terminal window
composer require nextpdf/core:^3

PII 스크러버와 텔레메트리 인터셉터는 코어 패키지의 일부입니다. OpenTelemetry SDK가 설치되어 있고 호출자가 인터셉터를 연결한 경우가 아니면 텔레메트리 경로는 동작하지 않습니다.

엔진은 ISO/IEC 29100의 의미(iso_iec_29100#3.x56)에서 사용자가 전달하는 데이터의 처리자입니다. 즉, 통합자의 지시에 따라 문서 콘텐츠를 처리합니다. 엔진은 외부로 신호를 보내지 않으며, 요청한 출력을 넘어 콘텐츠를 보존하지 않고, NextPDF가 운영하는 어떠한 엔드포인트로도 문서 콘텐츠를 전송하지 않습니다.

세 가지 데이터 표면이 중요합니다.

  1. 문서 I/O. 입력은 사용자가 제공하는 경로 또는 스트림에서 읽고, 출력은 사용자가 제공하는 경로 또는 스트림에 기록됩니다. 중간 버퍼는 렌더링 중 프로세스 메모리에 존재하다가 렌더링이 완료되면 해제됩니다.
  2. 감사 번들. 감사가 활성화되면 엔진은 진단 번들을 내보낼 수 있습니다. 직렬화 전에 이 번들은 결정론적 PII 스크러버를 거칩니다.
  3. 텔레메트리. 선택적 OpenTelemetry 인터셉터는 스팬과 메트릭을 내보낼 수 있습니다. SDK가 설치되어 있고 인터셉터가 생성된 경우가 아니면 비활성화되어 있으며, 스팬 속성은 속성 새니타이저를 거칩니다.

개인정보 보호 태세는 GDPR 제32조의 원칙, 즉 가명화와 최소화가 예시적인 보호 조치라는 원칙을 따릅니다. 이러한 보호 조치의 적용은 컨트롤러의 책임입니다(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 인터셉터는 제로 트러스트 데이터 정책을 적용하는 속성 새니타이저를 통해 스팬 속성을 전달합니다. 내보내는 백엔드, 보존 기간, 위치는 전적으로 통합자의 선택입니다.
  • 적법 근거는 라이브러리의 결정이 아닙니다. 특정 문서의 처리가 적법한지, 그리고 어떤 근거에 따라 적법한지는 GDPR / 현지 법률에 따라 컨트롤러가 결정하며(eu_gdpr#x50), 라이브러리는 이를 알 수 없습니다.

PII 스크러버는 I/O가 없는 순수 정규식 변환의 모음입니다. 텔레메트리 인터셉터의 SDK 존재 여부 확인은 생성 시 한 번 수행되어 캐시됩니다. SDK가 설치되지 않은 경우 모든 텔레메트리 호출은 마이크로초 미만의 시간에 완료되므로, 개인정보를 보호하는 기본값(텔레메트리 끔)은 동시에 오버헤드가 없는 기본값이기도 합니다.

검토자가 확인할 데이터 처리 경계 규칙은 다음과 같습니다.

  1. 은밀한 이그레스 없음. 엔진은 NextPDF가 운영하는 어떠한 엔드포인트로도 문서 콘텐츠를 전송하지 않습니다. 아웃바운드 네트워크 접근은 명시적으로 활성화되고 스킴이 제한된 리소스 가져오기와 구성된 TSA/OCSP/CRL 엔드포인트에서만 발생하며, 각각 SSRF 가드의 보호를 받습니다.
  2. 결정론적이고 제한된 제거. 감사 번들 PII 변환은 결정론적이며 직렬화 전에 적용됩니다. 이는 GDPR 제32조(eu_gdpr#x50)의 취지에 따른 최소화 보조 수단이며, 익명화 인증이 아닙니다.
  3. 거주성은 통합자의 책임입니다. 데이터 처리 위치의 인벤토리 작성과 매핑은 NIST Privacy Framework에 따른 조직 차원의 활동입니다(nist_privacy_framework_1_1#x9.x1.p3). 라이브러리는 통제 수단을 제공하고, 매핑은 통합자가 수행합니다.
  4. 역할은 외부에서 결정됩니다. 배포가 컨트롤러인지 처리자인지, 그리고 그에 따른 의무는 ISO/IEC 29100상의 역할 결정에 해당하며 라이브러리가 대신 내릴 수 없습니다(iso_iec_29100#3.x56).

이 문서는 적합성 프로파일이 아닙니다. 이 페이지는 GDPR 제32조, ISO/IEC 29100, NIST Privacy Framework를 참조하여 라이브러리 동작과 컨트롤러 책임 사이의 경계를 명시합니다. 이는 GDPR 준수, ISO/IEC 29100 적합성, 또는 그 어떤 개인정보 보호 인증도 주장하지 않습니다. 이러한 결정은 라이브러리가 아니라 데이터 컨트롤러가 배포 수준에서 내립니다.