์—…๋ฐ์ดํŠธ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
New releaseAug 18, 2026

pii-shield v2.2.0

์ฝ”๋“œ ์—†๋Š” K8s ์‚ฌ์ด๋“œ์นด๋กœ ๋กœ๊ทธ๋ฅผ ์ •ํ™”ํ•ฉ๋‹ˆ๋‹ค. ์—”ํŠธ๋กœํ”ผ ๋ถ„์„์„ ํ†ตํ•ด ๋น„๋ฐ€์„ ๊ฐ์ง€ํ•˜๊ณ , JSON ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋ฉฐ, PII๋ฅผ ๊ฒฐ์ •๋ก ์ ์œผ๋กœ ๊ฐ€๋ฆฝ๋‹ˆ๋‹ค. ๐Ÿ›ก๏ธ

๊ณต์œ 

PII-Shield ๐Ÿ›ก๏ธ

Kubernetes์šฉ ์ œ๋กœ์ฝ”๋“œ ๋กœ๊ทธ ์ •ํ™” ์‚ฌ์ด๋“œ์นด. ๋กœ๊ทธ๊ฐ€ ํŒŒ๋“œ๋ฅผ ๋– ๋‚˜๊ธฐ ์ „์— PII๋ฅผ ๋งˆ์Šคํ‚นํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์œ ์ถœ(GDPR/SOC2)์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

PII-Shield๋Š” CLI, ์‚ฌ์ด๋“œ์นด ๋˜๋Š” WASM์œผ๋กœ ํ”„๋กœ์„ธ์Šค ๋‚ด(in-process)์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŒ… API๊ฐ€ ์—†์œผ๋ฉฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋˜๋Š” ์„œ๋ฒ„๋„ ์—†์Šต๋‹ˆ๋‹ค.

Release License Docker Pulls Artifact Hub
OpenSSF Best Practices Go Report Card Test Coverage Sponsor

"PII๊ฐ€ AI ๋ชจ๋ธ์„ ์˜ค์—ผ์‹œํ‚ค์ง€ ๋งˆ์„ธ์š”." PII-Shield๋Š” ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•™์Šต ๋ฐ์ดํ„ฐ์„ธํŠธ์— ๋„๋‹ฌํ•˜์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•˜์—ฌ GDPR๋กœ ์ธํ•œ ๋ชจ๋ธ ์žฌํ•™์Šต ๋ถ€๋‹ด์„ ๋œ์–ด์ค๋‹ˆ๋‹ค.

[!WARNING] v2.0.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ตœ์ข… ์‚ฌ์šฉ์ž ๋ฐฐํฌ๋ฅผ Helm ๊ธฐ๋ฐ˜ ์„ค์น˜ ๋ฐ Distroless Native Sidecar๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. Kustomize๋Š” ๋” ์ด์ƒ ํ”„๋กœ๋•์…˜ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์ง€์›๋˜๋Š” ๋ฆด๋ฆฌ์Šค ์„ค์น˜ ๊ฒฝ๋กœ๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ, Operator ์ €์žฅ์†Œ๋Š” ๋กœ์ปฌ ๊ฐœ๋ฐœ ๋ฐ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ์ƒ์„ฑ์„ ์œ„ํ•ด Kustomize ์Šค์บํด๋”ฉ์„ ๊ณ„์† ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. PII-Shield ์‚ฌ์ด๋“œ์นด ๋‚ด๋ถ€์˜ /bin/sh ์ ‘๊ทผ์€ ๋” ์ด์ƒ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฐ€์ด๋“œ๋ฅผ ์ฝ์–ด๋ณด์„ธ์š”.

๋‘ ๊ฐ€์ง€ ๋ฐฐํฌ ๋ชจ๋ธ

PII-Shield๋Š” ์Šคํƒ์— ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‘ ๊ฐ€์ง€ ๋šœ๋ ทํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

  1. Kubernetes Operator (์ œ๋กœ์ฝ”๋“œ): ๋‹น์‚ฌ์˜ ๋Œ€ํ‘œ ๋ฐฐํฌ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ์™„์ „ ์ž๋™ํ™”๋œ K8s Operator๊ฐ€ ํŒŒ๋“œ์— ๊ณ ๋„๋กœ ์•ˆ์ „ํ•œ Distroless Sidecar๋ฅผ ์ฃผ์ž…ํ•˜์—ฌ ๋กœ๊ทธ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ€๋กœ์ฑ„๊ณ  ์ •ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  2. ํ”„๋กœ์„ธ์Šค ๋‚ด WASM (ํ•ต์‹ฌ ํ†ตํ•ฉ์šฉ): ๊ทนํ•œ์˜ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ํ•ต์‹ฌ ์—”์ง„์„ WASM์„ ํ†ตํ•ด ์ง์ ‘ ์ž„๋ฒ ๋“œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋„คํŠธ์›Œํฌ ํ™‰ ์—†์ด <1ms ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์ƒํƒœ ๋ฐ ๋กœ๋“œ๋งต

PII-Shield๋Š” ํ”„๋กœ๋•์…˜ ๊ฐ•ํ™” ๋‹จ๊ณ„์— ์žˆ๋Š” ํ™œ๋ฐœํžˆ ๊ฐœ๋ฐœ ์ค‘์ธ ์˜คํ”ˆ์†Œ์Šค ๋ณด์•ˆ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. v2.x ๋ฆด๋ฆฌ์Šค ๋ผ์ธ์€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ CLI, ์ปจํ…Œ์ด๋„ˆ, Helm/Operator ๋ฐ WASM SDK ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•ต์‹ฌ ๋งˆ์Šคํ‚น ๊ฒฝ๋กœ๋Š” ํ†ต์ œ๋œ ๋ฐฐํฌ์— ๋Œ€๋น„๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ผ๋ถ€ Kubernetes ๋ฐฐํฌ ๋ชจ๋“œ์™€ ๊ณต๊ธ‰๋ง ๋ณด์ฆ์€ ์•„์ง ์•ˆ์ •ํ™” ์ค‘์ž…๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์š”์†Œ์ƒํƒœ
์ฝ”์–ด ์Šค์บ๋„ˆ๋ฆด๋ฆฌ์Šค / ํ†ต์ œ๋œ ๋ฐฐํฌ
CLI ์‚ฌ์ด๋“œ์นด๋ฆด๋ฆฌ์Šค / ํ†ต์ œ๋œ ๋ฐฐํฌ
Kubernetes Operator์•ˆ์ •ํ™” ๋‹จ๊ณ„
WASM SDK๋ฒ ํƒ€ ๋ฆด๋ฆฌ์Šค
Proxy-Wasm ๊ฒŒ์ดํŠธ์›จ์ด ํ†ตํ•ฉ๊ณ„ํš๋œ R&D
Control Plane UI๊ณ„ํš๋œ R&D
eBPF ์ธํ„ฐ์…‰์…˜์‹คํ—˜์  R&D

ํ˜„์žฌ ํ”„๋กœ๋•์…˜ ๊ฐ•ํ™” ๋ฒ”์œ„๋Š” KNOWN_LIMITATIONS.md๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์™œ PII-Shield์ธ๊ฐ€?

๊ฐœ๋ฐœ์ž๋“ค์€ ์ข…์ข… ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋งˆ์Šคํ‚นํ•˜๋Š” ๊ฒƒ์„ ์žŠ๊ณค ํ•ฉ๋‹ˆ๋‹ค. Fluentd/Logstash์˜ ์ „ํ†ต์ ์ธ ์ •๊ทœ์‹ ํ•„ํ„ฐ๋Š” ๋А๋ฆฌ๊ณ  ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์šฐ๋ฉฐ ๋กœ๊ทธ ์ˆ˜์ง‘๊ธฐ์—์„œ ๊ฐ’๋น„์‹ผ CPU๋ฅผ ์†Œ๋ชจํ•ฉ๋‹ˆ๋‹ค.

PII-Shield๋Š” ์•ฑ ์ปจํ…Œ์ด๋„ˆ ๋ฐ”๋กœ ์˜†์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค:

  • ํ”„๋กœ๋•์…˜ ๊ฐ•ํ™” ์ฝ”์–ด ์—”์ง„: ํ•ซ ๊ฒฝ๋กœ์—์„œ ๋‚ฎ์€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ๊ฒฐ์ •์  ์ •๊ทœ์‹ ๋งค์นญ์„ ๊ฐ–์ถ˜ Kubernetes ์‚ฌ์ด๋“œ์นด์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ปจํ…์ŠคํŠธ ์ธ์ง€ ์—”ํŠธ๋กœํ”ผ ๋ถ„์„: ์ปจํ…์ŠคํŠธ ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ํ‚ค ์—†์ด๋„ ๋†’์€ ์—”ํŠธ๋กœํ”ผ ๋น„๋ฐ€๊ฐ’(์˜ˆ: Error: ... 44saCk9...)์„ ํƒ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ •์˜ ์ •๊ทœ์‹ ๊ทœ์น™: ์•Œ๋ ค์ง„ ํŒจํ„ด์— ๋Œ€ํ•œ ์—”ํŠธ๋กœํ”ผ ๊ฒ€์‚ฌ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ(UUID, ID)์˜ ๊ฒฐ์ •์  ๋งˆ์Šคํ‚น.
  • ํšŒ๊ท€ ๋ฐ ํผ์ฆˆ ์ปค๋ฒ„๋ฆฌ์ง€: ๋ฐ”์ด๋„ˆ๋ฆฌ ์“ฐ๋ ˆ๊ธฐ, JSON ์ค‘์ฒฉ, ๋‹ค๊ตญ์–ด ๋กœ๊ทธ ๋“ฑ ์ŠคํŠธ๋ ˆ์Šค ์‚ฌ๋ก€์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒฐ์ •์  ํ•ด์‹ฑ: ๋น„๋ฐ€๊ฐ’์„ ๊ณ ์œ  ํ•ด์‹œ(์˜ˆ: [HIDDEN:a1b2c])๋กœ ๋Œ€์ฒดํ•˜์—ฌ QA๊ฐ€ ์›์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์ง€ ์•Š๊ณ ๋„ ์˜ค๋ฅ˜๋ฅผ ์—ฐ๊ด€์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋“œ๋กญ์ธ(Drop-in): ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์–ธ์–ด(Node, Python, Java, Go)์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ์ง€์›: PII_SAFE_REGEX_LIST๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ˆ์ „ํ•œ ํŒจํ„ด(์˜ˆ: git ํ•ด์‹œ, ์‹œ์Šคํ…œ ID)์„ ๋ช…์‹œ์ ์œผ๋กœ ํ—ˆ์šฉํ•˜์—ฌ ์˜คํƒ(false positive)์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜์‹ญ ๊ฐœ์˜ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ PII-Shield๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๊ณ„์‹ ๊ฐ€์š”?

์ค‘์•™ ์ง‘์ค‘์‹ ๊ทœ์น™ ๊ด€๋ฆฌ, Slack ์•Œ๋ฆผ, ๋งˆ์Šคํ‚น ๋ถ„์„์„ ๊ฐ–์ถ˜ ํ˜ธ์ŠคํŒ… Control Plane์„ ๊ตฌ์ถ• ์ค‘์ž…๋‹ˆ๋‹ค. Join the Waitlist

ํ†ตํ•ฉ

PII-Shield์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด WASM ๋นŒ๋“œ๋Š” ์˜คํ”ˆ์†Œ์Šค AI ์ฝ”๋“œ ๊ฑฐ๋ฒ„๋„Œ์Šค GitHub Action์ธ GuardSpine Code ๋‚ด๋ถ€์— ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด ์•ก์…˜์€ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋ฒค๋”๋งํ•˜๊ณ  NOTICE์— ๊ทธ ์ถœ์ฒ˜๋ฅผ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.

์„ฑ๋Šฅ ๊ณ ๋ ค ์‚ฌํ•ญ

PII-Shield๋Š” ๊ณ ๋„๋กœ ์ตœ์ ํ™”๋˜์–ด ์žˆ์ง€๋งŒ, ๋ณต์žกํ•œ ๋กœ๊ทธ์˜ ์‹ฌ์ธต ๊ฒ€์‚ฌ์—๋Š” ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ์„ธ์‹ฌํ•œ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ํ…์ŠคํŠธ ๋กœ๊ทธ: ๋งค์šฐ ๋น ๋ฆ„(์ดˆ๋‹น 100k์ค„ ์ด์ƒ).
  • JSON ๋กœ๊ทธ: ์ œ๋กœ ํ• ๋‹น ํŒŒ์‹ฑ(encoding/json ์˜ค๋ฒ„ํ—ค๋“œ ์—†์Œ). ์Šค์บ๋„ˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ธ‰์ฆ ์—†์ด ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰(์•ฝ 7MB/s)์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด JSON ๊ตฌ์กฐ๋ฅผ ์ˆ˜๋™์œผ๋กœ ํŒŒ์‹ฑํ•ฉ๋‹ˆ๋‹ค.
  • ๊ถŒ์žฅ ์‚ฌํ•ญ: ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰์—์„œ๋„ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊นŠ๊ฒŒ ์ค‘์ฒฉ๋œ JSON์—์„œ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์žฌ๊ท€ ์•ˆ์ „์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜

Helm ์ฐจํŠธ (Kubernetes Operator)

Kubernetes์—์„œ PII-Shield๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ณต์‹์ ์ด๊ณ  ๊ถŒ์žฅ๋˜๋Š” ๋ฐฉ๋ฒ•์€ ์™„์ „ ์ž๋™ํ™”๋œ Operator๋ฅผ ํ†ตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค:

helm repo add pii-shield https://pii-shield.github.io/pii-shield/
helm repo update
helm install pii-shield-operator pii-shield/pii-shield-operator -n operator-system --create-namespace

์ด ๋ช…๋ น์€ ์ฝ”๋“œ๋‚˜ Dockerfile ๋ณ€๊ฒฝ ์—†์ด ํŒŒ๋“œ์— ๊ณ ๋„๋กœ ์•ˆ์ „ํ•œ distroless ์‚ฌ์ด๋“œ์นด๋ฅผ ์ž๋™์œผ๋กœ ์ฃผ์ž…ํ•˜๋Š” PII-Shield Operator๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

Docker

Docker Hub ๋˜๋Š” GHCR์—์„œ ์ตœ์‹  ๊ฒฝ๋Ÿ‰ ์ด๋ฏธ์ง€๋ฅผ ๋ฐ›์œผ์„ธ์š”:

docker pull thelisdeep/pii-shield:2.2.0
# OR from GitHub Container Registry (Enterprise):
docker pull ghcr.io/pii-shield/pii-shield:2.2.0

์†Œ์Šค์—์„œ ๋นŒ๋“œ

์†Œ์Šค ์ฝ”๋“œ์—์„œ ์ง์ ‘ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

go build -o pii-shield ./cmd/cleaner/main.go

๊ตฌ์„ฑ

์ „์ฒด ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ชฉ๋ก์€ CONFIGURATION.md๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ๋‹ค์Œ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:

  • PII_SALT: ์‚ฌ์šฉ์ž ์ •์˜ HMAC ์†”ํŠธ(ํ”„๋กœ๋•์…˜์— ํ•„์ˆ˜).
  • PII_ADAPTIVE_THRESHOLD: ๋™์  ์—”ํŠธ๋กœํ”ผ ๊ธฐ์ค€์„  ํ™œ์„ฑํ™”.
  • PII_DISABLE_BIGRAM_CHECK: ๋น„์˜์–ด ๋กœ๊ทธ์— ์ตœ์ ํ™”.
  • PII_CUSTOM_REGEX_LIST: ๊ฒฐ์ •์  ๋งˆ์Šคํ‚น์„ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ์ •๊ทœ์‹ ๊ทœ์น™.
  • PII_SAFE_REGEX_LIST: ๋ฌด์‹œํ•  ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ์ •๊ทœ์‹ ๊ทœ์น™(์ผ์น˜ ํ•ญ๋ชฉ์€ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜๋จ).

์—”ํŠธ๋กœํ”ผ ๋ฏผ๊ฐ๋„ ํ‘œ (๊ธฐ๋ณธ ์ž„๊ณ„๊ฐ’: 3.6)

์—”ํŠธ๋กœํ”ผ๋ฐ์ดํ„ฐ ์œ ํ˜•์˜ˆ์‹œ
0.0 - 3.0์ผ๋ฐ˜ ๋‹จ์–ด, ๋ฐ˜๋ณตpassword, admin, 111111
3.0 - 3.6์นด๋ฉœ์ผ€์ด์Šค, ๋ถ€๋ถ„ ํ•ด์‹œProgramCampaignInstanceJob, 8f3a11b2c
3.6 - 4.5๊ฒฝ๋กœ, UUID, ์•ฝํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ/opt/application/runtime, P@ssw0rd2026!
4.5 - 5.0์ค‘๊ฐ„ ํ† ํฐE8s9d_2kL1
5.0+๋†’์€ ์—”ํŠธ๋กœํ”ผ ํ‚ค(SHA-256, API ํ‚ค)

๋น ๋ฅธ ์‹œ์ž‘

  1. ๋กœ์ปฌ ํ…Œ์ŠคํŠธ (CLI) ์–ด๋–ค ๋กœ๊ทธ ์ถœ๋ ฅ์ด๋“  PII-Shield์— ํŒŒ์ดํ”„ํ•˜์—ฌ ์ฆ‰์‹œ ๋™์ž‘์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
# Emulate a log with a sensitive password
echo "Error: User password=MySecretPass123! failed login" | docker run -i --rm ghcr.io/pii-shield/pii-shield:2.2.0

# Output: Error: User password=[HIDDEN:8f3a11] failed login
  1. Kubernetes (์ž๋™ ์‚ฌ์ด๋“œ์นด ์ฃผ์ž…) PII-Shield Operator๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด, PiiPolicy๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํŒŒ๋“œ์— ๋ ˆ์ด๋ธ”์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •์ฑ… ์ƒ์„ฑ:

apiVersion: core.pii-shield.io/v1alpha1
kind: PiiPolicy
metadata:
  name: strict-policy
  namespace: default
spec:
  injectionMode: "file"

Deployment์— ๋ ˆ์ด๋ธ” ์ง€์ •:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: secure-app
spec:
  template:
    metadata:
      labels:
        pii-shield.io/inject: "true"
      annotations:
        pii-shield.io/policy: "strict-policy"
# ...

Operator๋Š” Native Sidecar ํŒจํ„ด(K8s 1.28+)์„ ์‚ฌ์šฉํ•˜์—ฌ pii-shield-agent๋ฅผ ์ž๋™์œผ๋กœ ์ฃผ์ž…ํ•˜๊ณ  ๋ชจ๋“  ๋กœ๊ทธ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋งˆ์Šคํ‚นํ•ฉ๋‹ˆ๋‹ค!


๐Ÿ“‹ ๋ฌด๋ฃŒ: Kubernetes ๋กœ๊ทธ PII ๊ฐ์‚ฌ ์ฒดํฌ๋ฆฌ์ŠคํŠธ 25ํ•ญ๋ชฉ โ€” ํŒŒ๋“œ์—์„œ PII๊ฐ€ ์œ ์ถœ๋˜๋Š” ์œ„์น˜, ํ•„ํ„ฐ๋ฅผ ์šฐํšŒํ•˜๋Š” ๋กœ๊ทธ ๊ฒฝ๋กœ, ๋งˆ์Šคํ‚น์ด ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•. ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋ฐ›๊ธฐ โ†’

๐Ÿ“ฆ ์ปดํ”Œ๋ผ์ด์–ธ์Šค ํŒฉ(GDPR/HIPAA/PCI) ์ถœ์‹œ ์˜ˆ์ • โ€” ์กฐ๊ธฐ ์•ก์„ธ์Šค ์‹ ์ฒญ โ†’

๐Ÿ’ฌ PII-Shield๋ฅผ ์‚ฌ์šฉ ์ค‘์ด์‹ ๊ฐ€์š”? ๋ฐฐํฌ ์‚ฌ๋ก€๋ฅผ ์•Œ๋ ค์ฃผ์„ธ์š” โ†’ โ€” 2๋ถ„์ด๋ฉด ๋˜๋ฉฐ, ๋‹ค์Œ์— ๊ตฌ์ถ•๋  ๊ธฐ๋Šฅ์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๊ฒ€์ฆ

์ด ํ”„๋กœ์ ํŠธ๋Š” ํ”„๋กœ๋•์…˜ ๊ฐ•ํ™” ์ „์— ์‹ ๋ขฐ๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ง€์†์ ์œผ๋กœ ํ™•์žฅ๋˜๋Š” ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋กœ ๊ฒ€์ฆ๋ฉ๋‹ˆ๋‹ค:

  1. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ: 85% ์ด์ƒ์˜ ์ปค๋ฒ„๋ฆฌ์ง€๋กœ ์—ฃ์ง€ ์ผ€์ด์Šค, ๋‹ค๊ตญ์–ด ์ง€์›, JSON ๋ฌด๊ฒฐ์„ฑ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
  2. ํผ์ง•: ๋„ค์ดํ‹ฐ๋ธŒ Go ํผ์ง•์„ ํ†ตํ•ด ์ž˜๋ชป๋œ ์ž…๋ ฅ๊ณผ ๋ฌด์ž‘์œ„ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ž…๋ ฅ์— ๋Œ€ํ•œ ํฌ๋ž˜์‹œ ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  3. ์Šค๋ชจํฌ ํ…Œ์ŠคํŠธ: ./scripts/test-smoke.sh๊ฐ€ ํ˜ผํ•ฉ ์›Œํฌ๋กœ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํƒ์ง€ ์ •ํ™•๋„๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.
  4. ์—”๋“œํˆฌ์—”๋“œ(E2E) ํ…Œ์ŠคํŠธ: operator/tests/run_e2e.sh ์Šค์œ„ํŠธ๋Š” Minikube์™€ Helm์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ์Šคํƒ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ , cert-manager ์—†์ด Operator๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•˜๊ณ , ๋Œ€์ƒ Job์„ ๋ฐฐํฌํ•œ ๋‹ค์Œ, ์‚ฌ์ด๋“œ์นด ์ถœ๋ ฅ์„ ๊ฐ€๋กœ์ฑ„ ์‹ค์ œ ๋กœ๊ทธ ๋งˆ์Šคํ‚น์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

์„ฑ๋Šฅ ๋ฒค์น˜๋งˆํฌ

ํ˜„์žฌ ๋ธŒ๋žœ์น˜์™€ ๊ธฐ์ค€ ref ๊ฐ„์˜ ์—”๋“œํˆฌ์—”๋“œ CLI ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋น„๊ตํ•˜๋ ค๋ฉด:

./benchmark/run_benchmarks.sh

๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฒค์น˜๋งˆํฌ๋Š” HEAD๋ฅผ origin/main๊ณผ ๋น„๊ตํ•˜๊ณ , origin/main์„ ์ƒˆ๋กœ ๊ณ ์นœ ๋‹ค์Œ, ํ˜ผํ•ฉ ๋กœ๊ทธ ์ฝ”ํผ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด์ „/์‹ ๊ทœ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๋ฒˆ๊ฐˆ์•„ ๊ฐ€๋ฉฐ ์ค‘์•™๊ฐ’, p95, ์ตœ์†Œ/์ตœ๋Œ€ ๋ฐ MiB/s๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค:

BASE_REF=origin/main RUNS=9 LINES=500000 ./benchmark/run_benchmarks.sh

์ด ๋ฒค์น˜๋งˆํฌ๋Š” ์ „์ฒด stdin-to-stdout CLI ๊ฒฝ๋กœ๋ฅผ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค. ์Šค์บ๋„ˆ ์ „์šฉ ๋งˆ์ดํฌ๋กœ๋ฒค์น˜๋งˆํฌ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด:

go test -bench=. -benchmem ./pkg/scanner

Operator ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ

Operator๋Š” ๋น ๋ฅธ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ Kubernetes API ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์™€ ๋ถ„๋ฆฌํ•˜์—ฌ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ Operator ํ…Œ์ŠคํŠธ๋Š” ๋กœ์ปฌ API ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค:

cd operator
go test ./...

envtest ๊ธฐ๋ฐ˜ ์ปจํŠธ๋กค๋Ÿฌ ํ†ตํ•ฉ ์Šค์œ„ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด:

./scripts/test-operator-integration.sh

์ด ํ…Œ์ŠคํŠธ๋Š” envtest๋ฅผ ํ†ตํ•ด ๋กœ์ปฌ Kubernetes API ์„œ๋ฒ„์™€ etcd๋ฅผ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ 127.0.0.1์— ๋ฐ”์ธ๋”ฉํ•  ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ œํ•œ๋œ ์ƒŒ๋“œ๋ฐ•์Šค์—์„œ๋Š” localhost ๋ฐ”์ธ๋”ฉ์„ ํ—ˆ์šฉํ•˜๋Š” ๋กœ์ปฌ ์…ธ, Docker ํ™˜๊ฒฝ ๋˜๋Š” CI ๋Ÿฌ๋„ˆ์—์„œ ์‹คํ–‰ํ•˜์„ธ์š”.

์ง€์›

PII-Shield๋Š” ๊ฐœ์ธ์ •๋ณด๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๋กœ๊ทธ๋ฅผ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์ž…๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ท€ํ•˜ ๋˜๋Š” ๊ท€ํ•˜์˜ ์กฐ์ง์— ์œ ์šฉํ•˜๋‹ค๋ฉด GitHub Sponsors๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆด๋ฆฌ์Šค ๊ฒ€์ฆ

๋ฆด๋ฆฌ์Šค ์ฒดํฌ์„ฌ ๋ฐ ์ด๋ฏธ์ง€ ๋‹ค์ด์ œ์ŠคํŠธ ๊ฒ€์ฆ ์ง€์นจ์€ docs/release-verification.md์— ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ช… ๋ฐ ์ถœ์ฒ˜(provenance) ๊ธฐ๋ฐ˜ ๋ฆด๋ฆฌ์Šค๋Š” ๊ณต๊ธ‰๋ง ๊ฐ•ํ™” ๋กœ๋“œ๋งต์˜ ์ผ๋ถ€๋กœ ์ถ”์ ๋ฉ๋‹ˆ๋‹ค.

๋ผ์ด์„ ์Šค

Apache 2.0 ๋ผ์ด์„ ์Šค๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์นดํ…Œ๊ณ ๋ฆฌ