生产,测试,开发人员环境与安全性

生产,测试,开发人员环境与安全性

Production, Test, Developer Environments vs Security

使开发人员能够构建包含私有数据的系统的当前做法是什么? 任何人都可以针对此类事情指向"最佳做法"指南吗?

这里有一个Catch-22,开发人员需要编写与具有被视为"私有"数据的系统相对应的应用程序。 IT管理员希望我们的开发人员无法访问数据(即提供架构或数据结构,但不能提供数据本身),而大多数开发人员(包括我自己)都希望访问生产数据,因为他们没有访问权限。 具有代表性的数据集可能导致错误的假设(例如,数据格式)和稍后的错误。

有人对这种事情有正式的"最佳实践"吗? 特别是某些" BigCo"(例如Microsoft,IBM)的官方协会可能会有所帮助,因为需要它说服管理层。


我对世界的看法可能与我在英国时有所不同,但是在过去的20多年中,我主要在公共部门从事处理敏感数据的系统工作。
规则是"完全"裁切而成的。该开发区不允许生产数据。

作为基本原则,我们不想对敏感数据的丢失负责。用户本身就非常擅长这一点。

在过去的12个月中,我的妻子已经从同一制度转移到了私营部门,他们允许开发人员访问生产数据,这使她感到震惊。法律影响(至少在英国)可能很严重。

开发人员不需要访问生产数据。只是懒惰。定义和创建测试数据以执行定义的测试用例(包括边缘用例),并且不依赖于生产数据的随机性。

如果您**必须**使用生产数据(即,您设法说服一个完全不了解的人说它可以接受),请确保数据在到达开发区之前**被匿名化。


通常,将提供代表专用数据但不代表专用数据本身的已清理数据的子集。


在我公司,我们开始使用Red-gate的数据生成器来生成测试数据。有一些设置,但是您可以使用这些工具生成非常有用的测试数据。是的,我希望使用实时生产数据,但这是不可行的(特别是如果您需要在HIPAA中考虑)。它对每列使用正则表达式,并允许您对相关表使用查找表。


在MediumCo,我们从Test and Dev中的生产数据中剥离专有数据。过去,没有完全代表的数据对我们造成了一定的伤害,但是客户之前曾询问过这一点,这通常不是问题,因为环境中填充了许多虚假的专有数据。


为了避免手动清除/匿名化数据的需要,您可以使用随机文本替换-用随机的字母数字替换每个文本字段中的每个字母数字字符。这个:

  • 从开发人员的角度来看,保持数据的长度,大小等相似
  • 不会引起字符集问题
  • 保留日期和数字字段不变,从而可以对日期范围和数量进行准确的测试
  • 将满足大多数隐私要求

如果您想更进一步,可以在电话号码和邮政编码上执行随机的数字替换,而在其他文本字段上使用字母数字替换。

拥有自动替换脚本可以使您定期从实时系统中获取最新的数据转储,因此您的测试在实践中就数据的大小和可变性而言都是最新的。

这确实意味着少量的操作将是不现实的(例如,在名称字段上建立索引,而在现实生活中,这些字段聚集在常见字母周围),但是这些操作应该受到限制。


我没有任何最佳做法文件。但是我认为,如果您要在与托管生产环境中的数据的环境一样受保护的环境中进行开发,那么就不会有太多反对它的论据了。

也就是说,如果您的生产数据库位于由IT员工托管,控制和保护的数据中心中,则如果您的开发数据库处于完全相同的场景中,并且不提供任何新的方式来访问信息,那么您将状况很好。作为一种善意的附加标志-最好是让任何担心安全的人都有机会进行某种渗透测试,以确保您说出了关于安全性的真相。

当然,另一方面是对不使用数据的成本进行分析:也就是说,这将导致错误的代码,这将花费xxxxxx.xx美元的开发时间,而几乎不需要花一点钱就可以您的开发团队的一部分访问了上述数据。


推荐阅读