Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Version control PCI-DSS下的源代码存储库管理存在哪些限制(如有)?_Version Control_Mercurial_Pci Dss - Fatal编程技术网

Version control PCI-DSS下的源代码存储库管理存在哪些限制(如有)?

Version control PCI-DSS下的源代码存储库管理存在哪些限制(如有)?,version-control,mercurial,pci-dss,Version Control,Mercurial,Pci Dss,PCI-DSS下的源代码存储库管理存在哪些限制(如有) 我工作的公司希望为我们网络下的客户开发信用卡处理服务。目前,我们正在使用SVN进行版本控制。它是安全的,因此只有需要签出/提交访问权限的开发人员才拥有它。与此同时,我正计划从SVN搬到HG。但是,由于缺乏对远程克隆的访问控制,安全团队对使用分布式SCM工具表示保留。具体而言,他们声称这将违反PCI-DSS合规性。是吗?首先,我要说的是,我的答案是基于对需求6的快速阅读 如果使用Mercurial的方式与使用Subversion的方式相当,我

PCI-DSS下的源代码存储库管理存在哪些限制(如有)


我工作的公司希望为我们网络下的客户开发信用卡处理服务。目前,我们正在使用SVN进行版本控制。它是安全的,因此只有需要签出/提交访问权限的开发人员才拥有它。与此同时,我正计划从SVN搬到HG。但是,由于缺乏对远程克隆的访问控制,安全团队对使用分布式SCM工具表示保留。具体而言,他们声称这将违反PCI-DSS合规性。是吗?

首先,我要说的是,我的答案是基于对需求6的快速阅读

如果使用Mercurial的方式与使用Subversion的方式相当,我不明白为什么使用Mercurial会成为一个问题。以下是我这样认为的一些原因:

  • 假定您不在存储库中存储客户数据(仅对该数据进行操作的代码)
  • PCI-DSS通常使用“标准行业惯例”之类的词语。Mercurial现在是一个非常常见的风投公司,这很有帮助
  • 似乎是推送变更集的能力需要被锁定。特别是,推送到存储库的“规范”克隆的能力。仅仅因为Mercurial拥有这些“远程克隆”,并且开发人员可以将随机(甚至恶意)更改推送到这些克隆中,并不意味着这些更改将(或应该)最终出现在您的生产系统中
  • 使用Subversion,听起来您有权限将签入限制在您的开发人员的子集(或者甚至可能只有一个“看门人”)
  • 使用Mercurial,您可以将其设置为在中央(规范的“生产”存储库)上使用SSH。为此,为每个开发人员提供自己的SSH凭据(这是PCI-DSS所必需的--没有共享密码!)。在这种情况下,您可以在承载中央repo的文件系统上设置权限,并且只向特定用户授予Mercurial目录中的写访问权限
  • 使用Mercurial,您可以(或也可以)通过HTTP发布您的中央回购协议。在这种情况下,您可以使用Apache(或其他web服务器)进行身份验证和授权
  • 您还可以完全禁止向中央回购进行写入操作,并规定所有源代码更改必须通过一两个特定人员发送,这些人员将在提取(或应用)更改之前审查更改

因此,我认为在使用Mercurial这样的DVCS时,PCI-DSS兼容还有很多空间。上述所有内容都同样适用于Git。

正如其他人所说,如果您需要更多建议,这是一个可以向您的QSA提出的问题。也就是说,PCI是要有适当的控制措施,而不是强制一种技术胜过另一种技术

开发时,您需要考虑:

  • 测试/开发和生产系统之间的职责分离
  • 能够检测到变化,它们起源于何处,何时以及由谁引起
  • 推动上线时有变更控制程序

如果安全团队对访问控制部分的看法正确,那么这一切都不会阻止您使用您选择的存储库管理器,这取决于他们想要的控制类型

限制阅读 SVN和任何DVC都限制了对开发人员可以读取内容的任何控制。即使您有中央SVN服务器,通常也不限制读取您有权限读取的路径的旧版本。因此,您可以逐个版本将旧历史版本转储到本地存储中(
hg subversion
git svn
和许多其他工具就是这样工作的)。svn中没有什么神奇的东西可以阻止人们下载每一个版本并分发这些副本

最后,如果您不能在用户端限制对工作副本的访问,那么您根本没有读取限制。句号

限制写入 这是一个不同的游戏,因为Mercurial允许您将任何名称设置为您想要的提交者。因此,您需要在服务器上添加一些机制,以便没有开发人员可以通过使用同一开发人员的名称提交来引入错误的标志修订,并将此修订推送到服务器。而AFAIK Subversion则通过itsel设置用户名在服务器上,hg服务器必须以某种方式提供一个钩子来检查所有传入变更集的用户名


在Subversion中也有一种更改提交人名称的方法,但您必须启用服务器上的pre-revprop hook来允许此操作。

可能是解决此问题的更好地方。虽然我有兴趣看到关于此问题的任何其他回答,但在一天结束时,这里的任何人的想法都无关紧要。此问题n应提交给您的PCI审计员。谢谢John。此回购中不会存储任何客户数据。他们关心的是我的建议,即在远程办公室中托管二级回购,作为开发人员的公共合并点。团队负责人将从那里推回规范回购。(守门人场景)具体而言,他们担心对二级回购进行不受控制的读写访问。但我认为,只要二级回购具有与规范回购相同的安全级别,所有内容都应该在合规范围内。我想这是审计师的问题。同意,PCI是要有适当的控制,而不是强制要求技术。话虽如此,PCI当然意味着相当多,而最佳实践可以从那里找到的更一般的规则中衍生出来。在这一点上,我工作的安全团队的一位高级成员声称,由于HG的分布式特性,特定技术将违反PCI。我对此表示怀疑。我写这篇文章时希望其他人已经通过PCI审查并使用DVCS或更好的HG获得批准。要么如此,要么至少如此