正在locking一个开发人员的机器比它的价值更多的努力?

作为一名开发人员和一名开发团队的ITpipe理员/支持人员,我已经遇到了许多不同types的环境,从完全locking到完全不存在。 在我有限的支持经验下,我认为用较less的locking机器来支持的努力就不那么容易了,我当然觉得这很容易,但当然这可能是偏差。 我想从IT支持的angular度来了解这个观点是否真的难以支持那些没有locking机器的开发者?

    不locking开发者机器的最大问题是他们开发的任何软件都需要完全的pipe理员权限才能运行。 开发人员访问应该与他们需要运行的环境相同。如果他们需要“自我支持”或“可自行安装”,那么给他们另一个pipe理员帐户,例如他们在pipe理员时需要使用的Bruce.admin东西,但不是每天都用。

    就像没有一个体面的UNIXpipe理员值得他们的盐将永远使用一个root帐户的日常非pipe理工作。

    大多数开发人员在技术上都很娴熟,并且知道他们在做什么。 他们经常需要安装许多专业应用程序,必须获得许可才能做到这一点,并让IT下台并添加它可能是非常令人沮丧的,特别是在大型公司,双方都是如此。

    我发现最好的做法是允许他们在机器上安装软件时做他们想做的事情,但是如果他们遇到了我们不支持的问题,那么他们是自己做的。 大多数开发人员对此感到满意,并且宁愿能够照pipe自己的机器。

    在会计上locking某人只使用IE和开放词是好的,但如果你的开发人员需要安装4种不同types的浏览器,并需要快速安装一个应用程序来解决问题,它可以是烦人的。

    我的经验是,那些拥有大量技术知识的公司,如开发商店,IT供应商等,信任他们的员工,让他们决定他们想要安装什么的公司会更快乐,也更不用IT

    看到这个Stackoverflow张贴了一些关于locking开发者机器的优点的热烈辩论。 (免责声明:我写了接受的答案)。

    从系统pipe理员的angular度来看,对生产系统的访问是敏感的,您应该将这种访问限制在需要它工作的人员(这可能包括对应用程序有三级支持责任的开发人员)。 对开发PC或开发服务器的本地pipe理权限不会严重影响生产系统的安全性。

    如有必要,制作可用于重build机器的图像。 手动安装SQL Server开发版,Visual Studio,Cygwin和MikTex以及其他一些应用程序是非常耗时的。 安装这些大型应用程序的图像将是相当宝贵的,如果你不得不重新映像机器。

    从发展的angular度来看,我发现我可以解决机器的大部分问题,通常只需要networking支持人员在极less数情况下的帮助。 过度限制的环境往往会产生虚假的开发支持stream量,从而开发人员完全有能力自己完成工作。

    另一个开发者倾向于需要大量pipe理工作的地方是托pipe开发环境的数据库服务器。 大多数开发人员能够轻松地学习常规的DBA任务,并且应该对此有所了解(恕我直言,原则上)。 开发服务器上的过度限制的pipe理员访问策略可以通过多种方式获得。

    如果可以安排,临时开发networking是一个不错的主意 – 如果有必要,可以从生产服务器防火墙。

    • 当开发人员可以轻松地复制生产环境的结构时,它可以促进部署testing的文化,在这种环境下可以合成一个集成testing,而无需跳过这个环节。 这将倾向于提高生产发布和部署的质量。

    • 能够模仿生产环境也提高了生产部署和支持问题的意识。 它鼓励开发人员思考如何在生产中支持应用程序,这可能会鼓励build立在此基础上的架构。

    • 如果此networking具有域控制器,则可以build立信任关系,以便信任您的主域控制器及其帐户。 这种信任关系不必是互惠的,所以不会影响您的生产networking基础设施的安全性。 这可以让你有一个不受信任的开发networking,但仍然允许开发人员访问域名authentication的资源,如Exchange帐户或文件服务器。

    • 你希望开发人员有一个合理的实验范围,而不必跳过。 将政治障碍放在这项工作的道路上,倾向于鼓励在政治上有利但是会产生长期(而且往往未被认识到)的技术债务的石膏解决scheme。 作为一个系统pipe理员或支持分析师,猜猜谁能拿起那些东西?

    我会补充一点,在Unix或Linux环境下这个问题要less得多。 用户可以在自己的.profile大量定制自己的环境。 你可以在你自己的/home/bloggsj/bin目录下编译和安装,让你心情愉快。 “本地pipe理员权限”主要是一个Windows问题,虽然在Unix下还有一些需要root权限的东西。

    我见过的最明智的select(双方都是,现在仍然是),只是解锁的东西,也是不支持的 。 给他们自由,如果他们搞砸了,他们所能得到的只有一个标准的形象。 在这种情况下,我觉得这是一个很好的计划,把他们放在某种“不可信”的networking上。

    至于locking开发者桌面的(非)感觉:我敢肯定,所有的locking只会影响生产力,而且,任何相当熟练的开发人员都会轻易find漏洞。

    答案是:没有简单的是或否的答案。 但是对于开发者而言,安全性至less与其他人一样重要。

    一方面,是的,开发者倾向于在技术上更加精明。 另一方面,他们往往是一个压力大的工作,他们的开发里程碑可能优先于维护自己的系统作为一个安全的环境所需的额外照顾。这不是批评开发商; 这是对他们日常工作的坦率考虑。

    如果您打算让开发人员完全无拘无束地访问他们的系统,那么您应该考虑采取以下附加措施:

    • 提供另一个系统,locking正常的用户系统一样正常的非开发使用。
      • 将他们的完全访问开发机器放到一个特殊的VLAN中,只能访问开发资源。
    • 问什么可以防止受感染的系统危害代码库。 一个后门的机器是否可以检查恶意代码,或者清除代码库,在恶意黑客的手中? 采取适当的措施来减轻这种风险。
    • 同样,如果有什么保护开发人员可以访问的系统中保存的业务数据,请问是什么。
    • 定期对开发系统进行软件清单和安全审计。
      • 了解他们正在运行的内容,并使用这些信息来构build您的开发系统重新部署映像。
      • 迟早你会得到一个粗心大意的开发者,并安装显然危险或完全不与工作相关的东西。 当发生这种情况时,通过快速发送警告,您可以让开发者知道是的,有人在看,他们有责任保持合理的标准。
    • 你正在做定期的恶意软件扫描? 在某些情况下,开发者会正确地抱怨按访问AV系统征收的性能税(那些永远在线的AV系统,总是在每个文件访问上扫描)。 最好是转向夜间扫描策略,和/或创build文件/文件夹排除到您的访问时扫描。 请确保以其他方式扫描排除的文件。
      • 你的pipe理启用的开发者可以closures所有的AV扫描? 你将如何检测和补救?

    如果你要locking开发系统,那么你应该考虑以下几点:

    • 你有支持能力来迅速回答他们的支持请求吗? 考虑你的开发者的平均薪酬水平,并询问他们是否应该得到更快的响应时间SLA。 在您处理6万美元/年员工的支持需求时,让您的$ 120k开发人员(谁是数百万美元项目的关键)等待,这可能是没有意义的。
    • 你有什么支持要求,你会不会为你的开发服务的清晰明确的政策? 如果他们开始感觉到支持是任意的,你最终会感到痛苦。

    无论哪种方式,你都必须承认开发者是一个特例,他们确实需要某种额外的支持。 如果你没有为此做出预算,那么现在可能会出现问题,或者将来会出现问题。

    作为一个方面说明,我已经看到与系统pipe理员非常类似的论点。 至less在两个不同的工作中,我曾经看到,系统pipe理员在build议他们自己locking系统或者至less使用两个login名(一个用root / admin privs,一个没有用)时会非常激烈的争论。 许多系统pipe理员认为,不应该以任何方式被locking,并强烈反对这种措施。 迟早会有一些locking不良的pipe理员会有安全事件,这个例子会对我们所有人产生教育效果。

    我曾经是那些一直使用pipe理权限运行的系统pipe理员之一。 当我改变了双重账户,只是在需要升值时,我承认在最初的几个月里,这是相当令人沮丧的。 但是,云中的一线希望是,当我正常的账户处于与用户相同的限制时,我学到了更多关于我pipe理的系统的安全性。 这使我更好的pipe理员! 我怀疑开发者也是如此。 幸运的是,在Windows世界中,我们现在拥有UAC,这使得作为有限用户运行起来更容易,只有在需要时才能提升。

    就我个人而言,我不认为任何人都应该超越某种forms的安全行为。 每个人(包括系统pipe理员,开发人员,上层pipe理人员)都应该接受足够的安全程序和监督以保持他们的脚趾。 否则就是说公司的系统和数据是不值得保护的。

    我们换一种方式吧。 如果马克Russinovich可以由一个rootkit ,任何人都可以!

    如果你有一些开发人员,给他们开发服务器的方法是可能的,但是如果你有一整套开发人员,那么我非常反对给他们任何pipe理权限。

    问题是你最终会得到一整套开发人员,他们每个人都在做他们所做的事情,通常大多数人甚至没有安全意识,只想让他们的应用程序工作。 然后你会被要求 – “我们已经完成了开发阶段,请复制我们的开发环境到testing,预产品和产品”。

    他们也养成安装随机垃圾(坏包装软件)的习惯,然后委托你把它安装在其他层的十几个服务器上。

    我使这个政策很简单:

    • 开发人员在开发环境中不能获得root权限。
    • 开发人员可以获得对开发前VMware服务器的root权限,但不支持。
    • 开发人员必须提供属于其应用程序将要运行的操作系统发行版的RPM软件包,或者提供符合FHS和LSB的RPM软件包。
    • 任何情况下,他们的应用程序都不能以root身份运行
    • 该应用程序用户将无法访问susudo ,这将被locking为无shell访问权限。 (这是会计/审计)。
    • 他们需要使用特权访问的任何命令都必须被明确请求和批准 – 这时它将被添加到sudoers文件中。
      • 这些命令/脚本都不会被它们写入。
      • 这些命令没有脚本(直接或间接)引用它们。

    最重要的是,让他们考虑在将项目移动到testing服务器和以上的服务器上的时候会不会被允许的。

    locking开发者的机器需要付出更多的努力。 这严重损害了生产力,因为没有pipe理权限,你几乎不能做任何事情。 当然,系统最终会变得混乱,但是您的IT部门当然不会为开发中使用的所有第三方工具提供支持。

    所以,正如文森特·德·贝尔(Vincent De Baere)所build议的那样,最好的行动方式就是从图像中恢复系统,当然,之后的环境必须恢复,但这不应该是IT的问题。 如果发生N次,你可以把这个人列入一个“黑名单”,是的,他的行政权利会暂时放弃。

    无论哪种方式,应该设置一个环境,确保受感染的(或其他方式)机器根本不会影响任何其他机器,也就是说,不发送垃圾邮件或其他东西(好吧,现在我只是说很明显的事情,对不起)。

    那么,它可能部分取决于你在哪个环境下运行(例如Linux和Windows)。 然而,假设一个Windows环境,它通常比它的价值更麻烦,因为一些开发软件需要你有更高的权限才能工作。 例如, Visual Studio被认为需要pipe理员权限 ,因此,我不认为让某人跳过所需的部分工作是有好处的。

    但是,如果公司要求将事情locking,那么最好的办法就是让所有的开发人员在他们的系统上安装虚拟机,以便让他们发疯。虽然有些人可能不太喜欢这样的东西,但它可能会给你带来最好的世界(例如限制性普通桌面和完全可定制的环境)。

    更新 – 在Windows的东西有一点值得注意,显然需要pipe理员权限的Visual Studio有点过时,现在有明确的方式来设置所需的权限 (PDF文件)。 不过,我认为这并不会改变我的select,因为大多数我认识的开发人员,包括我自己在内,都倾向于使用Visual Studio以外的其他工具,并且知道他们在权限方面的所有需求可能很难预测。

    我同意在受限制的桌面上使用虚拟机的概念 –

    除非另有必要,否则我觉得最好的设置是一个受限制的Linux桌面,在上面有一个免费的vm。 Linux减轻了我的开销,一个虚拟机不仅可以是任何他们想要的操作系统,而且还可以恢复到快照或备份,当没有一整套不同的设置需要时,这个世界通常看起来更亮支持。

    我(作为一个开发者)更喜欢完全控制我的机器,意思; 在需要时作为pipe理员运行。

    您可以在开发人员允许完全访问计算机之前为其提供特殊培训。 为他们设置一些规则,也许你可以每一次都做一次审计,看看他们是否遵循最佳实践。

    大多数情况下,他们需要从ITpipe理员/ IT支持人员的angular度来了解IT基础架构的更多信息,以及与安全相关的东西,以及为什么不用更高的权限来开发。 (以及如何确保你不…)

    “当我们告诉你我们知道我们需要了解的所有电脑时,不要盲目相信我们”;-)

    您仍然需要通过networking,域名和帐号,非开发工具的软件安装等来支持他们。

    我的经验是,用户群体平均分配在只需要locking机器的人和需要pipe理员访问的其他人(开发人员,科学家)之间。 他们高端的人使用了很多不同的软件,一些是内部的,一些不是,但是很多软件需要pipe理员来运行,他们的工作要求他们使用很多软件包,所以最好让人们去做它本身。

    我们结束了以下过程:

    • 我们的标准图像具有基本的工具:Windows,Office,防病毒,Acrobat,一些实用程序。
    • 我们提供了大量的networking磁盘空间:足以让所有东西都可以存储在networking上。 关于唯一的例外是必须保持本地的进程内video文件。
    • 工作人员(与主pipe人员磋商)有两种select:IT维护他们的PC,进行所有安装和configuration,或者他们可以有pipe理员权限来自己做。 无论哪种情况,所有数据都在networking上备份。
    • 如果IT维护系统并且死掉了,我们会把它恢复到原来的状态,包括添加他们需要的额外软件。
    • 如果他们有pipe理员访问权限,系统死机,我们可以看看并尝试修复,但是我们的承诺是让他们回到标准的形象,他们必须从那里拿走它。 如果他们有任何本地数据,我们会尽力让这个closures,但我们的SLA只是尽快让他们工作,标准的个人电脑。
    • 任何具有pipe理员访问权限的人都需要知道如何确保Windows更新正在工作,以保持防病毒和反恶意软件的更新。

    我们本来希望把所有具有pipe理权限的人都放在一个“不可信”的vlan上,但是我们从来没有这样做过。