我需要说服我的内部 IT 部门授予我的新开发团队对我们自己的 PC 的管理权限。他们似乎认为这会给网络带来一些安全风险。谁能解释为什么会这样?有哪些风险?IT 部门通常为需要能够在其 PC 上安装软件的开发人员设置什么。
这个问题是本周的 IT 安全问题。
阅读 2012 年 6 月 8 日的博客文章了解更多详细信息或提交您自己的本周问题。
我需要说服我的内部 IT 部门授予我的新开发团队对我们自己的 PC 的管理权限。他们似乎认为这会给网络带来一些安全风险。谁能解释为什么会这样?有哪些风险?IT 部门通常为需要能够在其 PC 上安装软件的开发人员设置什么。
这个问题是本周的 IT 安全问题。
阅读 2012 年 6 月 8 日的博客文章了解更多详细信息或提交您自己的本周问题。
在我工作过的每个地方(作为合同开发人员),开发人员在他们的桌面上都被赋予了本地管理员权限。
原因是:
1) 开发人员工具集通常会定期更新。图形库、代码助手、Visual Studio 更新;他们最终几乎每周都会发布需要安装的更新。桌面支持通常会厌倦每周获得 20 张票去在所有开发机器上安装更新的软件,所以他们只给开发人员管理员权限,让他们自己做。
2) 调试/测试工具有时需要管理员权限才能运行。没有管理员访问权限意味着开发人员无法完成调试代码的工作。经理们不喜欢这样。
3) 开发人员往往更有安全意识,因此不太可能运行/安装危险的恶意软件。显然,它仍然会发生,但总的来说,通常可以信任开发人员拥有更高级别的访问权限来完成他们的工作。
这部分取决于开发团队预期开发的软件类型。某些类型的软件在没有管理权限的情况下比其他软件更容易开发。
例如,您可以使用 Eclipse 之类的 Maven 工件进行大量基于 Web 的 Java 开发,全部安装在本地(通常在端口 8080 上进行测试),而无需太多管理员权限(您可能需要打开某些端口) . 如果没有管理员权限,开发需要更密切地访问硬件的工具可能会被证明是不可能的。话虽如此,即使对于 Web 开发,最好能够从头开始重新构建测试机器(通常是 VM),这可能需要管理员权限。
如果这是关于信任的(即您的开发团队的某些成员可能有恶意),那么您无论如何都会遇到麻烦。批准/不批准某些权限的系统管理员不太可能检查他们编写的代码的详细功能。当然,这并不意味着您应该让您的开发团队不受限制地访问您的生产服务,也不意味着他们应该在比他们需要的更多机器上拥有管理员访问权限。有适当的机制来降低风险是件好事,但您需要一定程度的基本信任才能让您的组织正常运作。将开发团队放在单独的物理网络上是减轻信任问题和可能出现的错误的第一步。
拥有管理员访问权限的人的典型风险是能够捕获网络上的数据包。根据开发的性质,您可能必须接受这种风险。Wireshark 之类的工具有时对开发很有用。即使在您的组织内部,IT 人员或非 IT 人员也应尽可能使用启用 SSL/TLS 的服务,这应该有助于防止窃听和 MITM 攻击。
当不给开发者管理员访问权限时,我可以想到一些缺点(除非他们真的不需要它):
它可能会在您的组织中的开发人员和系统管理员之间创建一种“他们对我们”的文化。这在很多地方已经存在,但通常不是一件好事。每个团队都可能将另一个团队视为痛苦。安全性不是纯粹的技术问题,也是人机交互问题。我认为良好的人际沟通应该有助于您组织的总体目标,而不仅仅是从安全的角度来看。(在与我需要解决问题的系统管理员面对面交谈后,我总是发现能够找到更好的解决方案,而不是回复一张不露面的票。)
人性是这样的,人们在有限的情况下会发挥创造力,但不一定以正确的方式。您可能会发现开发人员最终付出了相当多的努力(并且通常成功)来规避组织内强加给他们的限制。他们应该把他们的创造力用在他们应该做的事情上。
IT 系统很复杂,调试是一门黑暗的艺术。如果您需要针对库 XYZ 版本 abc_13 和 abc_24 调试您的产品,开发人员可能需要能够安装和卸载每个版本,这反过来可能需要管理员访问权限。追逐依赖于版本号的错误已经很烦人了。如果您必须开票并等待(可能数小时或数天)其他人安装/卸载正确的版本将使其成为一场噩梦:它会增加“他们与我们”的文化问题,更重要的是,它会花费对组织更多。您可以从风险/成本评估的角度来考虑这一点。
有一个简单的风险计算规则可以解释 IT 团队同事的恐惧。您对任何操作系统的访问权限越多,任何错误或攻击的影响就越大。
例如,如果您的一位同事,比如说 Bob,受到标准网络钓鱼攻击的攻击,那么 Bob 帐户就可以在几分钟内被网络犯罪分子利用并在 Internet 上出售。如果 Bob 账户有管理员权限,那么这个账户将被用来在 Internet 上大规模发送垃圾邮件,然后通过网络钓鱼攻击大规模窃取其他账户,并且很快(几分钟内)会打开一个后门给你网络(这是可能的,因为 Bob 帐户是管理员帐户)允许完全远程控制 Bob 的 PC(通过工具,如ssh
, VNC
,VPN
...)。这种从内部 PC 发起的攻击,从特权帐户能够打破任何防火墙,停止任何反病毒、反垃圾邮件保护。
邪恶在里面。
即使是您最好的网络管理员、系统管理员或安全管理员也可能会让这台损坏的 PC 数月不被发现(参见Stuxnet
)。
如果您的开发人员同事擅长管理他们工作的操作系统,并且可以物理访问计算机,那么这种风险差异是无效的。
如果他对计算机具有物理访问权限,则任何操作系统上的任何工程师都
可以授予自己管理员访问权限。
对于无法区分管理员权限和普通用户权限的用户而言,阻止任何操作系统上的管理员访问是一种有效的降低风险的方法。这是我会问您的开发团队同事并根据他们的风险意识采取行动的关键问题:
“如果你被授予
操作系统的管理员权限,你会注意什么?”
如果他们足够好,可以意识到风险,那么他们就足以获得他们想要的访问权限。那么拒绝他们这个管理员访问权限并没有降低风险。当心:如果您拒绝他们很容易获得的访问权限,则整个公司都会面临附带风险:他们会以肮脏的方式做事,他们会表现得像违法者,他们将无法寻求任何帮助,他们'将不得不涵盖任何不幸。
您授予他们对他们的工作站和他们想要的任何其他东西的本地管理员权限。开发环境始终与主网络隔离。IT 的工作是确保您为他们提供所需的任何设置,同时确保开发环境中的任何内容都不会损害主网络。提前计划并与管理层合作购买完成此任务所需的设备/软件。