Pipeline ระดับ enterprise 9 stage และกฎ 6 ฉบับที่จะเจอในงานจริง อธิบายด้วยข้อมูล ตัวเลข และตัวอย่างการ implement
ข้อผิดพลาดที่พบหลัง release แพงกว่าตอนออกแบบราว 100 เท่า และองค์กรที่ deploy บ่อยกลับมี change failure rate ต่ำกว่า 3 เท่า Pipeline 9 stage คือกลไกที่ทำให้เกิดผลนี้: lint, build, test, security, package, staging, verify, production, post-deploy
กฎทั้ง 6 ฉบับ (HIPAA, GDPR, PDPA, PCI DSS, SOC 2, ISO 27001) ถามคำถามเดียวกัน: ใครทำอะไร เมื่อไหร่ ผ่านกลไกไหน แบบแผน Requirement, Control, Evidence ใช้ได้กับทุกฉบับ และ control 8 อย่างครอบคลุมทั้ง 6 กฎ
องค์กรพบ breach ด้วยตัวเองเพียง 42% กรณีศึกษาไฟล์ประกันที่ "สำเร็จ" 4 คืนโดยไม่ถึงปลายทางแสดงว่า การตรวจว่า job รัน ไม่เท่ากับการตรวจว่าผลลัพธ์เกิดขึ้น
ทำไมต้องมีหลาย stage แต่ละ stage ตอบคำถามอะไร และอย่างน้อยต้องมีอะไรอยู่ในนั้น
| Metric | Elite | Low | Stage ที่ขับเคลื่อน |
|---|---|---|---|
| Deployment frequency | หลายครั้งต่อวัน | 1 ครั้งต่อ 1 ถึง 6 เดือน | build once, deploy อัตโนมัติ |
| Lead time for changes | น้อยกว่า 1 วัน | 1 ถึง 6 เดือน | ตรวจใน MR, needs แทน stage รอ |
| Change failure rate | 5% | 64% | test, security, staging verify |
| Failed deployment recovery | น้อยกว่า 1 ชั่วโมง | 1 สัปดาห์ ถึง 1 เดือน | rollback job, post-deploy check |
stages: [lint, build, test, security, package,
deploy-staging, verify, deploy-prod, post-deploy]
include:
# template กลางของ platform team, pin ที่ major version
- project: platform/ci-templates
ref: v2
file: /base.yml
# template security ของ GitLab
- template: Jobs/SAST.gitlab-ci.yml
- template: Jobs/Secret-Detection.gitlab-ci.yml
- template: Jobs/Dependency-Scanning.gitlab-ci.yml
- template: Jobs/Container-Scanning.gitlab-ci.yml
- template: DAST.gitlab-ci.yml
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
| Stage | อย่างน้อยต้องมี | ถ้าไม่มี | หลักฐานที่ได้ |
|---|---|---|---|
| 1 lint | Linter, formatter และ type check ตาม stack ใช้ config เดียวกับ editor --max-warnings 0 block merge | Review ครึ่งหนึ่งเป็นเรื่อง style; unused code และ type ผิดหลุดถึง production | job log ผูก commit SHA, MR status |
| 2 build | Lock file และ npm ci; artifact ออกทางเดียวพร้อม expiry; version = commit SHA; cache แยกตาม lock file | "บนเครื่องผมรันได้"; rollback ไม่ได้เพราะ build ใหม่ได้ของไม่เหมือนเดิม | artifact ชื่อผูก SHA, ไฟล์ VERSION ในตัว artifact |
| 3 test | Unit test ทุก MR; รายงาน JUnit และ coverage; threshold ที่ตกลงกัน; test flaky ต้องแก้ไม่ใช่ retry; test เส้นทางล้มเหลว | ทุก change ต้องทดสอบมือ; bug เดิมกลับมาซ้ำ; ตอบ auditor ไม่ได้ว่า change ถูกทดสอบอย่างไร | JUnit report, coverage diff ใน MR |
build:
stage: build
image: node:20
cache: { key: { files: [package-lock.json] }, paths: [node_modules/] }
script:
- npm ci --prefer-offline
- npm run build
- echo "$CI_COMMIT_SHA" > dist/VERSION
artifacts: { name: "app-$CI_COMMIT_SHORT_SHA", paths: [dist/], expire_in: 1 week }
unit-test:
stage: test
needs: [build]
script: npm test -- --ci --coverage --reporters=jest-junit
artifacts:
when: always
reports:
junit: junit.xml
coverage_report: { coverage_format: cobertura, path: coverage/cobertura-coverage.xml }
allow_failure: true มาตั้งแต่ปีก่อน ไม่มีใครรู้ว่ามันแดงมานานแค่ไหน Control ที่ไม่ block ไม่ใช่ control| ชนิด | หาอะไร | นโยบาย |
|---|---|---|
| SAST | Pattern อันตรายใน code เช่น SQL injection, XSS, hardcoded password | Critical และ high ห้าม merge ยกเว้น exception ที่มีเจ้าของ เหตุผล และวันหมดอายุ |
| Secret detection | Token, key, password ใน diff และ git history | |
| Dependency scanning | Library เทียบฐาน CVE และออก SBOM (CycloneDX) | |
| License check | License ที่บริษัทห้าม เช่น GPL ในผลิตภัณฑ์ปิด |
include:
- template: Jobs/SAST.gitlab-ci.yml
- template: Jobs/Secret-Detection.gitlab-ci.yml
- template: Jobs/Dependency-Scanning.gitlab-ci.yml
secret_detection:
variables: { SECRET_DETECTION_HISTORIC_SCAN: "true" }
dependency_scanning:
artifacts: { reports: { cyclonedx: "gl-sbom-*.cdx.json" } }
# block merge: Security & Compliance > Policies > Merge request approval
latestpackage:
stage: package
image: gcr.io/kaniko-project/executor:debug
needs: [unit-test, sast, dependency_scanning]
script:
- /kaniko/executor --context "$CI_PROJECT_DIR"
--destination "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA"
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
container_scanning:
needs: [package]
variables:
CS_IMAGE: "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA"
CS_SEVERITY_THRESHOLD: HIGH
sign:
stage: package
image: bitnami/cosign:latest
needs: [package]
id_tokens:
SIGSTORE_ID_TOKEN: { aud: sigstore }
script:
- cosign sign --yes "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA"
หลักฐาน: registry บอกได้ว่า digest ไหนถูก push โดย pipeline ไหนจาก commit ไหน; ลายเซ็นตรวจได้ที่ cluster ด้วย admission controller (Kyverno, Sigstore policy controller)
deploy-staging:
stage: deploy-staging
needs: [container_scanning, sign]
environment: { name: staging, url: https://staging.example.com }
script:
- kubectl -n staging set image deploy/app
app="$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA"
- kubectl -n staging rollout status deploy/app --timeout=180s
e2e:
stage: verify
image: mcr.microsoft.com/playwright:v1.47.0-jammy
needs: [deploy-staging]
script: npx playwright test --reporter=junit
artifacts: { when: always, reports: { junit: results.xml } }
dast:
stage: verify
needs: [deploy-staging]
variables:
DAST_WEBSITE: https://staging.example.com
DAST_FULL_SCAN_ENABLED: "true"
ทางเลือกที่ดีกว่าสำหรับองค์กร: pipeline แค่ commit image tag ลง repo ของ manifest แล้วให้ ArgoCD sync (GitOps) cluster จึงไม่ต้องรับ credential จาก runner
when: manual พร้อม allow_failure: false ให้ pipeline หยุดรอจริงdeploy-prod:
stage: deploy-prod
needs: [e2e, dast]
environment:
name: production
url: https://app.example.com
on_stop: rollback-prod
when: manual
allow_failure: false
resource_group: production # deploy prod ทีละ 1 pipeline
script:
- kubectl -n prod set image deploy/app
app="$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA"
- kubectl -n prod rollout status deploy/app --timeout=300s
rollback-prod:
stage: deploy-prod
environment: { name: production, action: stop }
when: manual
script: kubectl -n prod rollout undo deploy/app
# Settings > CI/CD > Protected environments
# production: deploy = group release-managers
# required approvals = 1 จาก group tech-leads
หลักฐาน: หน้า Environment ของ production คือ audit log ทุก deployment มี commit, คนกด, คนอนุมัติ, เวลา ปลอมไม่ได้ ไม่ต้องถ่าย screenshot
ข้อมูลจาก stage นี้คือฐานของ DORA metrics ทั้ง 4: deploy frequency, lead time, change failure rate, recovery time
smoke-prod:
stage: post-deploy
image: curlimages/curl:8.10.1
needs: [deploy-prod]
script:
- curl -fsS --retry 5 --retry-delay 5 https://app.example.com/healthz
- curl -fsS https://app.example.com/api/version | grep "$CI_COMMIT_SHORT_SHA"
verify-error-rate:
stage: post-deploy
needs: [smoke-prod]
script:
# ถาม Datadog: error rate 10 นาทีหลัง deploy เกิน 1% ไหม
- ./scripts/check-error-rate.sh --window 10m --max 1
annotate:
stage: post-deploy
needs: [deploy-prod]
script:
- ./scripts/datadog-event.sh "deploy $CI_COMMIT_SHORT_SHA by $GITLAB_USER_LOGIN"
- ./scripts/slack.sh "#deploys" "live: $CI_PIPELINE_URL"
| คำถามที่ auditor ถาม | Stage ที่ตอบ | หลักฐานที่ระบบสร้างเอง |
|---|---|---|
| ใครแก้ code และใครรีวิว | merge request | MR approvals, protected branch, CODEOWNERS |
| Code ผ่านมาตรฐานและ test อะไรบ้าง | 1 lint, 3 test | job log, JUnit report, coverage ผูก commit SHA |
| ตรวจช่องโหว่อย่างไร | 4 security, 5 package | SAST, secret, dependency, container report, SBOM |
| สิ่งที่ขึ้น prod เป็นสิ่งเดียวกับที่ test ไหม | 2 build, 5 package | image digest เดียวกันทุก environment, ลายเซ็น cosign |
| ใครอนุมัติ deploy production และเมื่อไหร่ | 8 production | protected environment approval, deployment history |
| Deploy สำเร็จจริงไหม ถ้าพังทำอย่างไร | 9 post-deploy | smoke test, error rate check, rollback job |
HIPAA, GDPR, PDPA, PCI DSS, SOC 2, ISO 27001 แต่ละฉบับ: แนวคิด เหตุผลที่มี ขั้นต่ำที่ต้องทำ บทลงโทษ และ control ใน pipeline ที่ตอบได้
| ถ้าระบบจัดการ | กฎ | ประเภท | ขอบเขต | ใครบังคับใช้ | โทษสูงสุด |
|---|---|---|---|---|---|
| ข้อมูลสุขภาพของคนในสหรัฐ | HIPAA | กฎหมาย | สหรัฐอเมริกา | HHS Office for Civil Rights | ค่าปรับต่อปีต่อประเภทเกิน 2 ล้านดอลลาร์; จำคุกถึง 10 ปี |
| ข้อมูลส่วนบุคคลของคนใน EU | GDPR | กฎหมาย | EU บังคับทั่วโลก | Data protection authority ของแต่ละประเทศ | 20 ล้านยูโร หรือ 4% ของรายได้ทั่วโลก |
| ข้อมูลส่วนบุคคลของคนในไทย | PDPA | กฎหมาย | ประเทศไทย | คณะกรรมการคุ้มครองข้อมูลส่วนบุคคล | ปรับ 5 ล้านบาท; จำคุก 1 ปี; ค่าเสียหาย 2 เท่า |
| หมายเลขบัตรชำระเงิน | PCI DSS | สัญญา | ทั่วโลก | เครือข่ายบัตร ผ่านธนาคารผู้รับบัตร | 5,000 ถึง 100,000 ดอลลาร์ต่อเดือน; ตัดสิทธิ์รับบัตร |
| ข้อมูลลูกค้าในฐานะ B2B SaaS (ลูกค้าสหรัฐ) | SOC 2 | การรับรอง | ต้นกำเนิดสหรัฐ ใช้ทั่วโลก | ผู้สอบบัญชี CPA อิสระ | ไม่มีค่าปรับ; เสียดีลที่ขั้นจัดซื้อ |
| ข้อมูลลูกค้าในฐานะ vendor ให้องค์กรใหญ่หรือรัฐ | ISO 27001 | การรับรอง | ทั่วโลก | หน่วยรับรองที่ได้รับการรับรองระบบงาน | ไม่มีค่าปรับ; ถูกเพิกถอนใบรับรอง; ตัดสิทธิ์ tender |
สิ่งที่กฎหมายหรือมาตรฐานเรียกร้อง เขียนโดยนักกฎหมาย regulator หรือ auditor
"เฉพาะคนที่ได้รับอนุญาตเท่านั้นที่เปลี่ยน production ได้"
กลไกที่เราสร้างเพื่อให้ requirement เป็นจริงทุกครั้ง ไม่ใช่เฉพาะตอนที่ใครนึกได้
PR approval + protected branch + deploy role ใน CI
บันทึกที่ auditor อ่านได้ในอีก 1 ปีข้างหน้าโดยไม่ต้องถามเรา
Git history, approval record, pipeline run, CloudTrail
ปี 1996 ประกันสุขภาพเริ่มส่ง claim อิเล็กทรอนิกส์ ข้อมูลผู้ป่วยไหลระหว่างหลายบริษัท การวินิจฉัยที่หลุดทำให้คนเสียงานหรือเสียประกัน ครอบคลุม PHI ทุกชนิด และบังคับกับ business associate (SaaS, cloud) ด้วย
| Requirement | Control | Evidence |
|---|---|---|
| เข้าถึง PHI เฉพาะผู้ได้รับอนุญาต | SSO + MFA, IAM ตาม role, default read-only, ขอสิทธิ์เพิ่มแบบมีเวลาจำกัดและถอนอัตโนมัติ | ticket ขอสิทธิ์, IAM policy ใน Git, session log |
| Audit control | Log บันทึก user ID, record ID, action ไม่บันทึกตัว PHI ส่งไป account ที่ล็อก เก็บ 6 ปี | log schema, retention policy, CloudTrail |
| การเข้ารหัส | KMS บน RDS, S3, EBS; TLS ที่ load balancer; Terraform module ปฏิเสธ resource ที่ไม่เข้ารหัส | terraform plan, AWS Config, KMS policy |
| PHI ห้ามอยู่ใน telemetry | Structured logging แบบ allowlist field; scrubber ใน log pipeline; non-prod ใช้ข้อมูล de-identified (stage 6) | scanner alert, สุ่มตรวจ log, masking job |
เพดานโทษ: 20 ล้านยูโร หรือ 4% ของรายได้ทั่วโลกต่อปี แล้วแต่อะไรสูงกว่า และคำสั่งหยุดประมวลผลซึ่งเท่ากับปิดผลิตภัณฑ์
| Requirement | Control | Evidence |
|---|---|---|
| จำกัดระยะเวลาเก็บ | Retention เป็น scheduled job ต่อประเภทข้อมูล รวม backup | job history, config ใน Git |
| สิทธิ์ขอลบ | API ลบเดียวกระจายทุกที่เก็บ รวม search, cache, analytics, third party | log คำขอลบพร้อมเวลาเสร็จ |
| Data residency | ข้อมูล EU ตรึง region EU; Terraform block region อื่น | terraform plan, AWS Config |
| Minimization ใน non-prod | Clone จาก prod ถูก pseudonymize ก่อนให้ engineer ใช้ | masking job log, scanner report |
ร่างตามแบบ GDPR เพื่อให้บริษัทไทยยังทำธุรกิจกับ EU ได้ ก่อนปี 2565 ข้อมูลส่วนบุคคลในไทยถูกขายและรั่วโดยไม่มีผลทางกฎหมาย บังคับกับทุกองค์กรในไทยและบริษัทต่างชาติที่ให้บริการคนในไทย
| ปกครอง | ปรับสูงสุด 5 ล้านบาทต่อการละเมิด |
| อาญา | จำคุกสูงสุด 1 ปี และ/หรือปรับ 1 ล้านบาท กรรมการถูกดำเนินคดีได้ |
| แพ่ง | ค่าเสียหายเชิงลงโทษสูงสุด 2 เท่าของความเสียหายจริง |
| Requirement | Control | Evidence |
|---|---|---|
| ติดตามความยินยอม | Consent เป็น record ที่มี version คู่กับ user; service ตรวจก่อนประมวลผล | ตาราง consent + policy version |
| แจ้ง breach ใน 72 ชม. | Alert เมื่อ export ผิดปกติหรือ auth fail พุ่ง; runbook ระบุผู้แจ้ง สคส. | alert history, runbook, incident timeline |
| ความปลอดภัยที่เหมาะสม | Baseline เดียวกับ GDPR: MFA, least privilege, encryption, central log, patch (stage 4, 5) | CI scan report, IAM ใน Git |
| โอนข้ามประเทศ | ทะเบียน SaaS ที่รับข้อมูลคนไทย; ตรวจสัญญาก่อน integration ใหม่ | vendor register, DPA ต่อ vendor |
ปี 2004 เครือข่ายบัตรแต่ละรายมีกฎของตัวเอง ร้านค้าถูกเจาะตลอดและต้นทุนการฉ้อโกงตกที่ธนาคาร จึงรวมเป็นมาตรฐานเดียว บังคับผ่านสัญญากับธนาคารผู้รับบัตร ไม่ใช่กฎหมาย แต่สัญญารับบัตรทุกฉบับบังคับ
| กลุ่ม | ข้อกำหนด | ผู้รับภาระหลัก |
|---|---|---|
| เครือข่าย | 1 firewall/segmentation, 2 ไม่ใช้ default password | ผู้ให้บริการชำระเงิน + เรา (segmentation) |
| ข้อมูลบัตร | 3 เข้ารหัสที่เก็บ ห้ามเก็บ CVV, 4 TLS ตอนส่ง | ผู้ให้บริการชำระเงิน |
| ระบบ | 5 anti-malware, 6 secure development และ patch | เรา (stage 4, 5) |
| การเข้าถึง | 7 least privilege, 8 MFA, 9 กายภาพ | เรา + cloud provider |
| ตรวจสอบ | 10 log 12 เดือน, 11 ASV scan รายไตรมาส + pen test รายปี | เรา |
| นโยบาย | 12 นโยบายและการอบรม | เรา |
บริษัทย้ายข้อมูลไปอยู่กับ SaaS vendor ลูกค้าทุกรายส่งแบบสอบถาม 300 ข้อให้ vendor ทุกราย SOC 2 แทนที่สิ่งนั้นด้วยรายงานที่ผ่านการสอบทานฉบับเดียว แชร์ภายใต้ NDA
| Type I | Control ถูกออกแบบไว้ ณ จุดเวลาหนึ่ง ใช้เป็นก้าวแรก |
| Type II | Control ทำงานจริงตลอด 6 ถึง 12 เดือน ลูกค้าต้องการแบบนี้ |
Security (บังคับทุกราย) และเลือกเพิ่ม Availability, Processing Integrity, Confidentiality, Privacy
| Requirement | Control | Evidence |
|---|---|---|
| Change management | ทุก change ผ่าน MR ที่ต้องรีวิว, CI ตรวจ, deploy โดย identity ของ pipeline ไม่มี deploy มือ (stage 8) | branch protection, MR + approval, deploy log |
| Logical access | SSO ทุกระบบ; joiner/leaver ผ่าน identity provider; ทบทวนรายไตรมาสด้วย script ที่ list ทุกคนที่มีสิทธิ์ prod | IdP audit log, export การทบทวนที่ลงนาม |
| Availability | Backup ทดสอบ restore อัตโนมัติเข้า environment ชั่วคราวทุกเดือน; uptime monitor จากภายนอก | restore job log, status page history |
| Incident response | Postmortem template; action item เป็น ticket ที่ link incident และปิดก่อนปิด PIR | incident ticket, PIR, action ที่ปิดแล้ว |
| Vendor management | ทะเบียน vendor พร้อม SOC 2 หรือ ISO ของ vendor นั้น ทบทวนรายปี | vendor register, review ticket |
ผู้ซื้อทั่วโลก โดยเฉพาะภาครัฐและองค์กรใหญ่นอกสหรัฐ ต้องการใบรับรองเดียวที่ใช้ได้ข้ามประเทศ รับรองระบบบริหารจัดการ (ISMS) แนวคิดคือ security เป็นกระบวนการที่ทำซ้ำ ไม่ใช่ snapshot
กลุ่ม Technological 34 ข้อคือส่วนที่ DevOps เป็นเจ้าของโดยตรง
| Requirement | Control | Evidence |
|---|---|---|
| ทะเบียน asset | ทุกอย่างใน Terraform ทะเบียนสร้างจาก state ตรวจ drift ทุกคืน | state export, drift report |
| Vulnerability management | Scan ใน CI และตามตาราง (stage 4, 5); SLA แก้ตาม severity; exception มีเจ้าของและวันหมดอายุ | findings dashboard, exception register |
| Supplier security | SaaS หรือ library ใหม่ผ่าน review ก่อน integration แรก merge | vendor register, review ticket |
| ปรับปรุงต่อเนื่อง | Incident action, audit finding, risk item อยู่ใน tracker เดียวกัน มีเจ้าของและกำหนดเสร็จ | รายการที่ปิดต่อไตรมาส, minutes |
| เรื่อง | ความต่าง |
|---|---|
| นาฬิกาแจ้งเหตุ | HIPAA 60 วัน; GDPR และ PDPA 72 ชั่วโมง |
| สัญญากับ vendor | HIPAA เรียก BAA; GDPR และ PDPA เรียก DPA |
| Retention log | HIPAA 6 ปี; PCI DSS 12 เดือน |
| Retention และการลบข้อมูล | SOC 2 บังคับเฉพาะเมื่อเลือก Privacy |
Breach ที่ผู้โจมตีเปิดเผยเองมีต้นทุนสูงกว่าที่ทีมภายในพบเฉลี่ยราว 1 ล้านดอลลาร์
| Outcome monitoring | Alert เมื่อ "ไฟล์ที่คาดว่าจะส่ง 02:00 และ ack ที่คาดว่าจะได้ 03:00" ไม่มาทั้งคู่ ไม่ต้องแก้ code ใน job |
| Credential lifecycle | ทะเบียน credential และ certificate ภายนอกทั้งหมด เตือนที่ 30 และ 7 วัน มีเจ้าของ |
| Ownership | ทุก integration มีเจ้าของและ runbook; ตรวจ scheduled transfer อื่นทุกตัวว่ามีช่องโหว่แบบเดียวกันไหม |
Control ที่ไม่ทิ้งหลักฐาน ในสายตา auditor เท่ากับไม่มี
ถามก่อนว่าระบบถือข้อมูลอะไรของใคร แล้วกฎจะตามมาเอง
ต้นทุนข้อผิดพลาดหลัง release สูงกว่า 100 เท่า
Requirement อาจต่อรองไม่ได้ แต่ implementation ต่อรองได้เสมอ
| ระบบ | โจทย์ |
|---|---|
| A | แอปจองคิวคลินิกในกรุงเทพ ผู้ป่วย upload ผลแล็บ บริษัทแม่ในสหรัฐเป็นคนตรวจผล |
| B | ร้านค้าออนไลน์ขายให้ลูกค้าไทยและ EU รับบัตรผ่านผู้ให้บริการชำระเงิน เก็บประวัติคำสั่งซื้อ |
| C | B2B HR SaaS ขายให้องค์กรใหญ่ เก็บข้อมูลพนักงาน ลูกค้าขอรายงาน security ก่อนเซ็นสัญญา |
| กฎที่เกี่ยว | Requirement | Control (ระบุ stage) | Evidence |
|---|---|---|---|
| … | … | … | … |
| … | … | … | … |
| … | … | … | … |
| สไลด์ | ข้อมูล | แหล่งที่มา | หมายเหตุ |
|---|---|---|---|
| 4 | ต้นทุนแก้ข้อผิดพลาด 1 / 6.5 / 15 / 100 | IBM Systems Sciences Institute อ้างอิงใน Dawson et al. และตำรา software engineering ทั่วไป | ค่าประมาณ ต้นฉบับไม่เผยแพร่สาธารณะ ใช้เพื่อแสดงลำดับขนาด |
| 5 | DORA elite vs low | Google Cloud, Accelerate State of DevOps Report 2023 | ค่าของกลุ่ม elite และ low ในปีนั้น |
| 8 | 96% / 84% / 74% | Synopsys, Open Source Security and Risk Analysis 2024 | 1,067 codebase ที่ audit ปี 2023 |
| 9, 11, 21 | SolarWinds, Knight Capital, Target | รายงานสาธารณะ; SEC order 2013; คดีความและรายงานข่าว | ตัวเลข Target รวมค่ายอมความหลายรายการและค่าใช้จ่ายที่บริษัทรายงาน |
| 15, 25 | ต้นทุน breach ตามอุตสาหกรรม, 258 วัน, ผู้พบ breach, 2.2 ล้านดอลลาร์ | IBM Security และ Ponemon Institute, Cost of a Data Breach Report 2024 | 604 องค์กร 16 ประเทศ |
| 16, 18 | โทษ HIPAA, Anthem | 45 CFR 160.404; HHS OCR resolution agreements | เพดานค่าปรับปรับตามเงินเฟ้อทุกปี |
| 19 | ค่าปรับ GDPR | CMS.Law GDPR Enforcement Tracker; DPC Ireland; CNPD Luxembourg | บางกรณีอยู่ระหว่างอุทธรณ์ ตัวเลขปัดเป็นล้านยูโร |
| 20 | โทษ PDPA, ค่าปรับครั้งแรก | พ.ร.บ.คุ้มครองข้อมูลส่วนบุคคล พ.ศ. 2562; สำนักงาน สคส. | ตรวจสอบรายละเอียดคดีกับประกาศของ สคส. ก่อนอ้างอิง |
| 21 | PCI DSS 12 ข้อกำหนด, SAQ A | PCI SSC, PCI DSS v4.0.1 และ SAQ A | ค่าปรับต่อเดือนเป็นช่วงที่รายงานโดย acquirer ไม่ใช่ตัวเลขทางการของ PCI SSC |
| 23 | Annex A 93 control | ISO/IEC 27001:2022 | Organizational 37, People 8, Physical 14, Technological 34 |