【问题标题】:PCI DSS and release deployment automationPCI DSS 和发布部署自动化
【发布时间】:2015-04-06 00:07:27
【问题描述】:
PCI DSS 规则之一是:
“PCI DSS 适用于持卡人数据环境中包含或连接的所有系统组件”
您将如何处理 SCM/发布自动化服务器?必须从 dev 网段中的某个服务器打开一个端口,使其通向 prod 网络 setgment 中的某个服务器。
开发人员生成代码,然后构建管理器生成发布工件。发布工件必须投入生产。发布工件如何从开发到生产——它们如何从“不在范围内”的开发箱到“在范围内”的生产箱?
【问题讨论】:
标签:
release-management
pci-compliance
pci-dss
【解决方案1】:
这个问题可能没有一个很好的答案;据我所知,你不可能有一个真正自动化的持续部署解决方案,它不会导致“范围内”爬回开发系统。因此,您必须在部署中涉及手动步骤,但您可以使该步骤尽可能小。
在我最近开发的零售系统中(大约 80 个位置的大约 100 个收银机),我们挑选了一个恰好有一些多余网络带宽的收银机,并将其指定为“孤岛”系统。我们可以将更新作为单个文件(zip 或其他文件)并将其放到该系统上,它会安装在那里,然后传播到所有位置的所有其他寄存器。因此,我们将手动工作的范围缩小到单个寄存器上的单个文件。
最安全和最简单的方法是 SneakerNet - 每次有软件更新时,将拇指驱动器上的文件带到该系统 - 但可以使用远程桌面方法将文件复制到该系统并保持在范围内,只要该过程不是自动化的并且您使用的是完全不相关的网络。
【解决方案2】:
我对此进行了大量研究,最终我们将 SCM 服务器拆分为 dvscm 和 pdscm。
dvscm:
- 所有开发人员都将代码提交到此服务器
- 构建生成过程在此处存储发布工件
- 开发自动化测试从此处获取部署工件
pdscm:
- 此服务器从 dvscm 同步部署工件。现有部署工件未更新,这是一种仅添加类型的同步。
- QA 和 PROD 环境从那里获取部署工件,使用基于 PSK 的连接通过 SSH 和自定义限制性外壳
这样,DEV 和 QA/PROD 之间就有了一定程度的分离。 pdscm 已锁定 - 开发人员无权访问它,所有防火墙规则默认为 DENY。
pdscm 的唯一传出连接是到 dvscm 的端口 22,用于同步。
到 pdscm 的唯一传入连接在端口 22 上,使用自定义受限 shell 连接到只有读取部署工件的权限的用户。