我在一个我们构建处理和存储敏感数据的应用程序的地方工作。 我们有3个环境。 Dev,UAT / QA(用户接受测试)和生产
我工作的开发人员无法访问UAT或Production,并且对Dev的访问权限有限。我们在dev中可以做的就是连接到dev DB服务器。我们无法访问开发服务器本身。所以我们不允许在dev上玩像web服务器(iis)这样的东西。如果我们想要改变,我们必须通过向网络管理员提交工作请求的正式流程(可能需要数天才能完成)。 如果开发人员要求在UAT或PRod数据库中检查某些内容,情况也是如此。 在尝试支持我们的应用程序时,这种严格的访问限制确实令人沮丧。
我可以理解为什么我们有这些政策,因为它降低了事情搞砸的风险。但这使得解决问题非常耗费时间和痛苦。可能需要5分钟修复的东西(如果开发人员有权访问)可能需要数天才能解决。
这种严格的访问权限是否正常?
答案 0 :(得分:3)
很难说是否正常。例如,我曾在投资银行工作,他们的程序比你描述的程序更严厉。我也为一个没有程序的IB工作过。然而,值得注意的是,前者仍处于商业领域,而后者最近刚刚成名!
答案 1 :(得分:3)
如果开发人员无法访问,那么它不是“开发服务器”。现在有4个环境并不是闻所未闻:生产,预生产,测试和开发。 (通过增加开发者的访问权限排序)。如果我忽略名称,似乎你有相同的结构,除了你错过了开发服务器。
答案 2 :(得分:2)
对我来说听起来有点紧张。 Normallly我希望完全控制Dev服务器,我很高兴看到测试服务器只读访问,并且说实话,我对查看生产服务器并不感兴趣(从开发的角度来看)。 / p>
当然,这里有以下几点;
在我们的程序中,我们不允许开发人员部署进行测试 - 在我们交付给部署到prod的第三方之前,这取决于测试人员。
这样可以验证我们的发布程序。
因此;只要everythiong被记录在发行版中,你就不需要访问Dev以外的任何东西,但是对开发环境有一定程度的控制会很好。
答案 3 :(得分:1)
工作中存在两个相互竞争的要求:
贵公司已经(有意识或无意识地)决定降低泄露敏感数据的风险比有能力解决问题和快速开发新代码更好。我的公司倾向于同一个方向,但实际上并没有足够的线索将它带到你所描述的极端。
这是业务决定。
这是因为(可能无意识地)贵公司对下行风险(泄漏数据)的评价高于上行风险(使软件运作)。这是一种常见的偏见 - 它被称为厌恶风险(我确信有一个更好的术语 - 任何人?),对于我们这些试图完成工作的人来说,这是非常烦人的那些没有很好理解这些障碍影响的人把一堆障碍放在那里。
答案 4 :(得分:1)
这是关于变革管理;确保跟踪系统的所有更改并将其转换为发行说明,并且系统的某个部分的更改不会导致另一部分出现问题。
如果由我决定,我会给每个开发人员一台足够强大的PC来运行尽可能多的虚拟机来模拟生产环境,并完全控制这些机器。然后确保记录对官方开发环境的每个更改,以便生成完整的发行说明。
答案 5 :(得分:0)
即使在一家小公司,工程师也不需要在代码之外访问开发环境。核心环境应该保持相当静态。您希望快速更改Web服务器上的哪些类型的内容?
答案 6 :(得分:0)
查看Stackify。我们刚刚发布了一项新服务,使开发人员能够更好地了解其应用程序和生产服务器。我们可以给他们简单的只读访问日志文件,配置文件,Windows事件查看器等内容。我们可以解决您描述的问题。我们基本上发明了DevOps支持:http://www.stackify.com