【发布时间】:2015-09-03 23:34:28
【问题描述】:
来自 etsy.com offers some insight 的 Michael Rembetsy 将软件组件划分为 PCI 和非 PCI 环境。
我正在尝试确定软件架构方面的最佳解决方案。将您的 PCI 相关软件分割成单独的服务或只是单独的软件组件是最佳实践吗?
例如,如果我们考虑付款处理;将逻辑封装到 PCI 环境中包含的源代码模块中是最佳实践,并与非 PCI 环境并行将代码更改推送到生产环境,还是最好以 SOA 方式将支付处理逻辑封装到单个服务中?
换句话说,来自非 PCI 代码库的任何给定功能是否通过 HTTP 等通信协议与您的 PCI 代码库的任何给定功能(例如接受信用卡)通信,或者我应该简单地提供非 PCI 功能引用的 PCI 相关功能,如打包的 dll/jar 等?
在我看来,将与 PCI 相关的功能(例如支付处理)封装到单个服务中更为可取,因为我们可以控制服务可发现性的级别并定义明确的边界,而可能只是提供一个 dll/jar将安全源代码公开给非 PCI 环境中的开发人员进行反编译
【问题讨论】:
-
我们的政策是尽可能避免 PCI 范围;任何处理持卡人数据的东西都被实现为一个最小化的服务,它将与业务决策、日志记录等超出范围的组件进行通信。我们这样做是为了最大限度地减少 PCI 表面,因为任何推送到 PCI 生产环境的软件更改都必须经过一个代码审查/文档过程,这是一件乏味且耗时的事情。
标签: architecture soa modular pci-dss pci-compliance