作为一名开发人员和开发团队的 IT 管理员/支持人员,我遇到过许多不同类型的环境,从完全锁定到完全非锁定。根据我有限的支持经验,我认为使用锁定较少的机器进行支持所需的努力较少,我当然觉得这更容易,但这当然可能是偏见。我想知道从 IT 支持的角度来看,支持拥有非锁定机器的开发人员真的更难吗?
答案1
不锁定开发人员机器的最大问题是,他们开发的任何软件都需要完全管理员权限才能运行。开发人员的访问权限应与他们需要在其中运行的环境相同。如果他们需要“自我支持”或“自我安装”,那么请为他们提供另一个管理员帐户,例如 Bruce.admin,他们在执行管理工作时需要使用该帐户,但日常不会使用该帐户。
就像没有一个称职的 UNIX 管理员会使用 root 帐户来处理日常的非管理工作一样。
答案2
大多数开发人员都精通技术,知道自己在做什么。他们通常需要安装许多专业应用程序,必须获得许可才能这样做,并让 IT 人员过来添加这些应用程序,这对双方来说都非常令人沮丧,尤其是在大型公司中。
我发现最有效的方法是允许他们在自己的机器上安装软件,但如果他们遇到我们不支持的问题,那么他们就得靠自己了。大多数开发人员对此很满意,而且无论如何都希望能够照顾好自己的机器。
限制会计部门的某个人只能使用 IE 和打开 Word 是可以的,但如果你是一名开发人员,需要安装 4 种不同类型的浏览器,并且需要快速安装一个应用程序来解决问题,那就很烦人了。
我的经验是,那些拥有大量技术知识的公司,比如开发商店、IT 供应商等,如果信任自己的员工,让他们决定要安装什么,他们会更开心,也不会太在意 IT 方面的问题
答案3
看此 Stackoverflow 帖子就锁定开发人员机器的优点进行了一些激烈的辩论。(免责声明:我写了可接受的答案)。
从系统管理员的角度来看,对生产系统的访问是敏感的,您应该将此类访问限制给需要完成工作的人(这可能包括对应用程序负有三级支持责任的开发人员)。对开发 PC 或开发服务器的本地管理员权限不会严重损害生产系统的安全性。
制作一个映像,必要时可用于重建机器。手动安装 SQL Server dev 版本、Visual Studio、Cygwin 和 MikTex 以及一堆其他应用程序非常耗时。如果您必须多次重新映像机器,则安装了这些大型应用程序的映像将非常有价值。
从开发角度来看,我发现我可以修复机器的大多数问题,并且通常只需要在极少数情况下寻求网络支持人员的帮助。过于严格的环境往往会产生虚假的开发支持流量,以完成开发人员完全有能力自己完成的工作。
开发人员往往需要完成大量管理工作的另一个地方是托管开发环境的数据库服务器。大多数开发人员都能够轻松学习日常 DBA 任务,并且无论如何都应该掌握这方面的实用知识(原则上恕我直言)。开发服务器上过于严格的管理员访问策略可能会在许多方面造成阻碍。
如果可以安排的话,临时开发网络是一个好主意 - 如果必要的话,你可以用防火墙将它与生产服务器隔离开来。
当开发人员可以轻松复制生产环境的结构时,它就会促进部署测试文化的发展,在这种文化中,集成测试可以不费吹灰之力地完成。这往往会提高生产发布和部署的质量。
能够模拟生产环境还可以提高对生产部署和支持问题的认识。它鼓励开发人员思考如何在生产中支持应用程序,这可能会鼓励以此为基础构建架构。
如果此网络有域控制器,您可以建立信任关系,以便它信任您的主域控制器及其帐户。此信任关系不必是相互的,因此不会损害生产网络基础设施的安全性。这可以让您拥有不受信任的开发网络,但仍允许开发人员访问经过域身份验证的资源,例如 Exchange 帐户或文件服务器。
您希望开发人员拥有合理的实验空间,而不必费尽周折。在这项工作的道路上设置政治障碍往往会鼓励采取临时解决方案,这些解决方案在政治上是权宜之计,但会产生长期(且通常未被认识到)的技术债务。作为系统管理员或支持分析师,猜猜谁会收拾残局……
我要补充的是,在 unix 或 linux 环境中,这个问题不大;用户可以从他们的 中高度定制自己的环境.profile
。您可以随心所欲地在自己的/home/bloggsj/bin
目录下编译和安装内容。“本地管理员权限”主要是 Windows 的问题,尽管在 Unix 下仍有一些事情需要 root 访问权限。
答案4
答案是:没有简单的“是”或“否”答案。但安全性对于您的开发用户至少与对其他人一样重要。
一方面,开发人员确实往往更精通技术。另一方面,他们的工作往往压力很大,他们可能更看重开发里程碑,而不是额外注意维护自己的系统作为安全环境。这并不是对开发人员的批评;而是对他们日常职责的坦率考虑。
如果您要让开发人员拥有对其系统的完全、不受限制的访问权限,那么您应该真正考虑以下附加措施:
- 提供另一个系统,与普通用户系统一样锁定,以供正常的非开发人员使用。
- 他们将具有完全访问权限的开发机器放入特殊的 VLAN,并且只能访问开发资源。
- 问问自己,有什么办法可以防止受感染的系统危及代码库。在恶意黑客手中,装有后门的机器会检查恶意代码或清除代码库吗?采取适当的措施来减轻这种风险。
- 类似地,询问是否有任何方法可以保护开发人员可以访问的系统中保存的业务数据。
- 定期对开发系统进行软件清点和安全审计。
- 了解他们正在运行什么并使用此信息来构建您的开发系统重新部署映像。
- 迟早你会遇到一个粗心大意的开发人员,安装明显危险或与工作完全无关的东西。当这种情况发生时,通过迅速发出警告,你将让开发者社区知道,是的,有人在监视,他们确实有责任遵守合理的标准。
- 您是否定期进行恶意软件扫描?在某些情况下,开发人员会抱怨按访问 AV 系统(这些 AV 系统始终处于打开状态,始终在每次文件访问时进行扫描)的性能负担过重。最好采用夜间扫描策略,和/或为按访问扫描创建文件/文件夹排除项。不过,请确保以其他方式扫描排除的文件。
- 您的管理员可以关闭所有 AV 扫描吗?您将如何检测并补救这个问题?
如果您要锁定开发系统,那么您应该考虑以下几点:
- 您是否具备快速响应其支持请求的支持能力?考虑一下开发人员的平均工资率,并问问他们是否值得获得更快的响应时间 SLA。在您处理年薪 6 万美元的员工的支持请求时,让年薪 12 万美元的开发人员(他是数百万美元项目的关键)等待可能毫无意义。
- 您是否制定了明确无误的政策,规定哪些支持请求可以满足,哪些不能满足?如果他们开始觉得支持是任意的,您将要最终感受到痛苦。
无论如何,你都需要承认开发人员是一个特殊情况,他们确实需要某种额外的支持。如果你没有为此预算,问题可能正在恶化……或将在未来恶化。
顺便提一下,我见过系统管理员之间发生过非常类似的争论。在至少两份不同的工作中,我见过系统管理员在有人建议他们自己应该锁定系统或至少使用两个登录名(一个具有 root/admin 权限;一个没有)时激烈地争论。许多系统管理员认为他们不应该以任何方式被锁定,并极力反对这种措施。迟早,一些反对锁定的管理员会遇到安全事故,这个例子将对我们所有人产生教育作用。
我曾经是那些一直使用管理员权限的系统管理员之一。当我改为使用双账户并且只在需要时才提升权限时,我承认在最初的几个月里这非常令人沮丧。但幸运的是,当我的普通账户受到我对用户施加的相同限制时,我对我所管理的系统的安全性有了更多的了解。它让我成为一名更好的管理员!我怀疑开发人员也面临同样的情况。幸运的是,在 Windows 世界中,我们现在有了 UAC,这使得以受限用户身份运行变得更容易,并且只在需要时才提升权限。
我个人认为任何人都不应该凌驾于某种形式的安全实践之上。每个人(包括系统管理员、开发人员、高层管理人员)都应该受到足够的安全程序和监督,以保持警惕。否则,就等于说公司系统和数据不值得花精力去保护。
让我们换一种说法。如果 Mark Russinovich 能够被 rootkit 感染,任何人都可以!