用途
PCI Compliance 技能用于帮助在支付处理与持卡人数据处理场景中实现 PCI DSS(Payment Card Industry Data Security Standard,支付卡行业数据安全标准)合规要求。其目标是通过规范的数据处理方式、令牌化与加密手段,降低持卡人数据暴露风险,并帮助缩减 PCI 合规范围。该技能适用于构建支付处理系统、处理信用卡信息、实现安全支付流程、开展 PCI 合规审计、缩减 PCI 合规范围、实现令牌化与加密、准备 PCI DSS 评估等场景。
主要能力
PCI DSS 十二项核心要求
技能按六大类别组织 PCI DSS 的 12 项核心要求:
- 构建与维护安全网络:安装并维护防火墙配置;不使用厂商默认密码。
- 保护持卡人数据:保护存储的持卡人数据;加密公共网络上传输的持卡人数据。
- 维护漏洞管理:保护系统免受恶意软件侵害;开发并维护安全的系统与应用。
- 实施强访问控制:按业务需要知悉原则限制对持卡人数据的访问;识别并验证对系统组件的访问;限制对持卡人数据的物理访问。
- 监控与测试网络:跟踪并监控对网络资源和持卡人数据的所有访问;定期测试安全系统与流程。
- 维护信息安全政策:维护一项针对信息安全的政策。
合规级别
技能列出四个合规级别:
- Level 1:每年超过 600 万笔交易(需要年度 ROC)。
- Level 2:每年 100 万至 600 万笔交易(年度 SAQ)。
- Level 3:每年 2 万至 100 万笔电子商务交易。
- Level 4:每年少于 2 万笔电子商务交易或总计少于 100 万笔交易。
数据最小化
技能明确区分禁止存储与可加密存储的数据:
禁止存储(PROHIBITED_DATA):磁道数据(Magnetic stripe data)、卡验证码/值(CVV)、PIN 或 PIN 块。
可加密存储(ALLOWED_DATA):主账号(PAN,即卡号)、持卡人姓名、卡有效期、服务代码。
技能提供 PaymentData 类示例,包含日志脱敏(sanitize_log,对 PAN 做掩码并移除禁止字段)与禁止存储校验(validate_no_prohibited_storage,若存在禁止字段则抛出 SecurityError)。
令牌化
技能展示两类令牌化方式:
- 使用支付处理方令牌(以 Stripe 为例):强调创建支付方式令牌只能在客户端通过 Stripe.js 完成,绝不将卡详情发送到服务器;服务端仅凭令牌扣款;存储支付方式时仅保存 customer_id 和 payment_method_id,绝不存储实际卡详情。
- 自定义令牌化(高级):TokenVault 类示例,使用 secrets.token_urlsafe 生成安全随机令牌,使用 Fernet 加密卡数据并建立令牌到密文的映射,提供 tokenize、detokenize、delete_token 方法。
加密
- 静态数据:EncryptedStorage 类示例,使用 AES-256-GCM(cryptography 库的 AESGCM),以 256 位密钥(32 字节)、随机 nonce(12 字节)加密与解密。
- 传输中数据:始终使用 TLS 1.2 或更高版本,示例包括将 SESSION_COOKIE_SECURE 设为 True、SESSION_COOKIE_HTTPONLY 设为 True、SESSION_COOKIE_SAMESITE 设为 Strict,以及通过 flask_talisman 的 Talisman(app, force_https=True) 强制 HTTPS。
使用方式
技能以 Python 代码示例为主要呈现形式,涵盖数据处理、令牌化与加密三类模式。更详细的模板与完整示例位于 references/details.md,需阅读该文件获取完整模式库。技能本身不提供安装命令,资料中暂未提供具体安装方式。
适用场景
- 构建支付处理系统或实现安全支付流程。
- 处理信用卡信息并需要降低数据暴露风险。
- 开展 PCI 合规审计或准备 PCI DSS 评估。
- 通过令牌化与加密缩减 PCI 合规范围。
限制
资料未说明该技能的具体运行环境、依赖版本、支持的支付处理方范围、许可方式或价格信息,这些内容暂未提供。合规级别中的 ROC 与 SAQ 仅列出名称,资料未展开其含义与申请流程。