用途
PCI Compliance 技能用于实现 PCI DSS(Payment Card Industry Data Security Standard,支付卡行业数据安全标准)合规,目标是安全地处理支付卡数据和支付系统。当任务与 PCI 合规无关,或需要本范围之外的其它领域或工具时,不应使用本技能。
主要能力
技能围绕 PCI DSS 的 12 项核心要求组织,分为六大类:
- 构建并维护安全网络:安装并维护防火墙配置;不使用供应商默认密码。
- 保护持卡人数据:保护存储的持卡人数据;在公共网络上加密传输持卡人数据。
- 维护漏洞管理:保护系统免受恶意软件侵害;开发和维护安全的系统与应用。
- 实施强访问控制:按业务需要限制对持卡人数据的访问;识别并认证对系统组件的访问;限制对持卡人数据的物理访问。
- 监控并测试网络:跟踪并监控对网络资源和持卡人数据的所有访问;定期测试安全系统和流程。
- 维护信息安全政策:维护一项涉及信息安全的政策。
技能还涵盖合规等级划分:
- Level 1:每年超过 600 万笔交易(需要年度 ROC)
- Level 2:每年 100 万至 600 万笔交易(年度 SAQ)
- Level 3:每年 2 万至 100 万笔电子商务交易
- Level 4:每年少于 2 万笔电子商务交易或少于 100 万笔总交易
数据最小化
技能明确区分禁止存储与可存储(需加密)的数据:
禁止存储:完整磁道数据(磁条数据)、CVV(卡验证码/值)、PIN 或 PIN 块。
可存储(若加密):PAN(主账号/卡号)、持卡人姓名、有效期、服务代码。
技能提供 PaymentData 类示例,用于从日志中移除敏感数据(对 PAN 进行掩码、移除禁止字段),并校验不存储禁止字段。
令牌化
技能介绍使用支付处理商令牌的方式,例如通过 Stripe 在客户端创建令牌、在服务端使用令牌扣款、将支付方式以令牌形式存储以便后续使用,服务端只保存 customer_id 和 payment_method_id,绝不存储实际卡信息。
还介绍自定义令牌化(高级):使用 TokenVault 类,通过 Fernet 加密卡数据,生成安全随机令牌,建立令牌到加密数据的映射,并支持去令牌化和删除令牌。
加密
静态数据:使用 AES-256-GCM 的 EncryptedStorage 类,生成随机 nonce,返回 nonce + 密文,并支持解密。
传输数据:始终使用 TLS 1.2 或更高版本,示例包括设置 SESSION_COOKIE_SECURE、SESSION_COOKIE_HTTPONLY、SESSION_COOKIE_SAMESITE,以及使用 Flask-Talisman 强制 HTTPS。
访问控制
技能提供 require_pci_access 装饰器示例,用于限制对持卡人数据的访问:检查用户是否具有 pci_access 角色,记录访问尝试,未授权时返回 403。
审计日志
PCIAuditLogger 类用于记录对持卡人数据的访问和认证尝试,日志条目包含时间戳、用户 ID、资源、操作、结果、IP 地址等字段,并写入安全、仅追加的日志。
安全最佳实践
输入校验:提供 validate_card_number 函数,使用 Luhn 算法校验卡号格式;以及 sanitize_input 用于防止注入。
SAQ(自评问卷)
- SAQ A(要求最少):使用托管支付页面的电子商务,系统上无卡数据,约 20 个问题。
- SAQ A-EP:使用嵌入式支付表单的电子商务,通过 JavaScript 处理卡数据,约 180 个问题。
- SAQ D(要求最多):存储、处理或传输卡数据,需满足完整 PCI DSS 要求,约 300 个问题。
合规检查清单
技能提供 PCI_COMPLIANCE_CHECKLIST,覆盖网络安全性、数据保护、漏洞管理、访问控制、监控、政策六个方面,例如:防火墙配置与维护、无供应商默认密码、实施网络分段;不存储 CVV/磁道数据/PIN、PAN 存储时加密、PAN 显示时掩码、加密密钥妥善管理;安装并更新防病毒、安全开发实践、定期安全补丁、执行漏洞扫描;按角色限制访问、所有用户唯一 ID、多因素认证、物理安全措施;启用审计日志、日志审查流程、文件完整性监控、定期安全测试;记录安全政策、执行风险评估、安全意识培训、事件响应计划。
资源
- references/data-minimization.md:绝不存储禁止数据
- references/tokenization.md:令牌化策略
- references/encryption.md:加密要求
- references/access-control.md:基于角色的访问
- references/audit-logging.md:全面日志记录
- assets/pci-compliance-checklist.md:完整检查清单
- assets/encrypted-storage.py:加密工具
- scripts/audit-payment-system.sh:合规审计脚本
常见违规项
存储 CVV;未加密的 PAN;弱加密(应使用 AES-256 或等效算法);无访问控制;缺少审计日志;不安全的传输(应始终使用 TLS 1.2+);默认密码;无安全测试(需要定期渗透测试)。
缩小 PCI 范围
使用托管支付(如 Stripe Checkout、PayPal 等);令牌化(用令牌替换卡数据);网络分段(隔离持卡人数据环境);外包(使用符合 PCI 的支付处理商);不存储(绝不存储完整卡信息)。通过最小化接触卡数据的系统,可显著降低合规负担。
使用方式
技能说明:澄清目标、约束和所需输入;应用相关最佳实践并验证结果;提供可操作步骤和验证方法;如需详细示例,打开 resources/implementation-playbook.md。
适用场景
构建支付处理系统;处理信用卡信息;实现安全支付流程;开展 PCI 合规审计;缩小 PCI 合规范围;实施令牌化和加密;准备 PCI DSS 评估。
限制
本技能不适用于与 PCI 合规无关的任务,也不适用于本范围之外的其它领域或工具。具体收费、价格、平台支持等信息暂未提供。