我需要说服我的内部IT部门授予我的新开发人员团队对我们自己的PC的管理权限。他们似乎认为这会对网络造成一定的安全风险。谁能解释为什么会这样?有什么风险? IT部门通常为需要能力在其PC上安装软件的开发人员设置什么。


这个问题是“本周IT安全问题”。
阅读6月8日,有关更多详细信息的2012年博客条目,或提交您自己的“每周问题”。


评论

这个问题似乎缺少了一些东西:他们期望开发哪种软件? Web应用程序?图形驱动程序? (了解语言/平台可能会有所帮助。)

最大的风险是开发人员实际上将能够完成一些工作。

向他们解释说,对他们的网络最大的安全风险是生气的开发人员...或者只是让他们以艰难的方式来学习。

这样说:要么给开发人员管理员权限,要么开发人员将以自己的方式获得管理员权限。

您将如何开发安装程序,Windows服务,ActiveX组件,进程间通信层,或使用没有本地管理员访问权限的嵌入式Web服务器?

#1 楼

在我工作过的每个地方(作为合同开发人员),开发人员都可以在其台式机上获得本地管理员权限。

原因如下:

1)开发人员工具集通常非常定期地更新。图形库,代码助手,Visual Studio更新;他们最终几乎每周都要发布更新,需要安装。桌面支持通常会非常厌倦每周获得20张票以在所有开发人员机器上安装更新的软件,因此他们只是授予开发人员管理员自行执行此操作的权限。需要管理员权限才能运行。没有管理员访问权限意味着开发人员无法完成代码调试工作。管理人员不喜欢这样。

3)开发人员往往更加注重安全性,因此不太可能运行/安装危险的恶意软件。显然,它仍然会发生,但是通常可以相信所有开发人员都拥有更高级别的访问权限才能执行其工作。

评论


本地管理员权限也不会/也不应该影响其网络权限。您刚刚授予他们访问其网络端点的权限,无论如何他们都可以对其进行物理访问。

– pdubs
2012年5月15日16:13

应该注意的是,对机器硬件的访问与在安全性方面授予管理员权限相同。一个聪明的恶意代理可以轻松地将它们相互转化。

–罗伊·廷克(Roy Tinker)
2012年5月15日16:27



@DanNeely:如果您可以将调试器附加到您不拥有的进程中,则可以使该进程执行您想要的任何操作。因此调试权限= admin。

–杰伊·巴祖兹(Jay Bazuzi)
2012年5月16日下午5:55

我需要了解如何在不授予网络权限的情况下授予本地管理员权限,我们的IT管理员告诉我这是无法完成的。任何指向我可以在此阅读的指针都值得赞赏。

– carolineggordon
2012年5月16日上午10:28

@carolineggordon,如果他们担心网络嗅探,那么这里可能存在更广泛的问题。从本质上讲,这意味着敏感数据可能会在网络上,插入普通工作站的地方以及无法信任某些员工的地方进入网络。也许这是应该解决的问题:改为让用户使用受SSL / TLS保护的服务来获取敏感数据。否则,总是会有(可能很小)有人插入自己的捕获设备的风险。

–布鲁诺
2012年5月16日晚上11:31

#2 楼

这部分取决于开发团队期望开发的软件类型。某些类型的软件在没有管理权限的情况下比其他类型的软件更容易开发。

例如,您可以使用带有Maven工件的Eclipse之类的工具来进行大量基于Web的Java开发,所有这些软件都本地安装(并且通常在端口8080上进行了测试),而无需太多的管理员权限(您可能需要打开某些端口)。没有管理员权限,开发需要更接近硬件访问权限的工具可能会被证明是不可能的。
这就是说,即使对于Web开发,也可以从头开始重建测试机器(通常是VM)是一个好习惯。可能需要管理员权限。

如果这与信任有关(即,您的开发团队中的某些成员可能具有恶意意图),那么您还是会遇到麻烦。批准/拒绝某些权限的系统管理员不太可能能够检查他们编写的代码详细执行的操作。
这并不意味着您应该为开发团队提供不受限制的生产访问权限服务,当然也不要让他们在比他们需要的更多机器上拥有管理员权限。拥有适当的机制来减轻风险是很好的,但是您需要组织具有一定的基本信任水平。将开发团队置于单独的物理网络上是减轻信任问题和可能出现的错误的第一步。

拥有管理员访问权限的人所面临的典型风险是能够捕获网络上的数据包。根据所开发内容的性质,这可能是您必须接受的风险。诸如Wireshark之​​类的工具有时对开发很有用。即使在您的组织内部,IT或非IT人员也应尽可能使用启用了SSL / TLS的服务,这应有助于防止窃听和MITM攻击。

不给开发人员提供服务时,我可以想到一些弊端管理员访问权限(除非他们确实不需要):


它可能会在您组织中的开发人员和系统管理员之间建立一种“他们对我们”的文化。这已经存在于许多地方,但这通常不是一件好事。每个团队都可能认为另一个团队很痛苦。安全不是纯粹的技术问题,而是人与人之间的交互问题。我认为良好的人际交流应该对整个组织的总体目标有所帮助,而不仅仅是从安全的角度来看。 (我总是发现与我需要解决的系统管理员进行面对面的交流后,而不是回过头来就可以找到更好的解决方案。) ,但不一定以正确的方式。您可能会发现,开发人员在规避组织内部施加的限制时付出了大量的努力(并且常常是成功的)。他们应该将自己的创造力用于应做的事情。
IT系统很复杂,调试是一门黑手艺。如果您需要针对库XYZ版本a.b.c_13和a.b.c_24调试产品,则开发人员可能需要能够安装和卸载每个版本,从而可能需要管理员权限。追逐依赖版本号的错误已经很烦人了。如果您必须出票并且等待(也许几小时或几天)其他人来安装/卸载正确的版本,这将成为一场噩梦:这将增加“他们对我们”的文化问题,更重要的是,它将花费还有更多的组织。您可以从风险/成本评估的角度考虑这一点。


评论


不授予程序员管理员权限的最重要原因是,他们将犯人们多年来犯的同样错误,而不是以受限用户身份测试其代码,因为在当前版本的Windows中,受保护的文件夹。

–猎犬
2012年5月16日晚上11:19

@Ramhound,这不是安全问题,而是不良的开发实践。拥有管理员权限并不意味着您必须始终以完全特权运行所有内容,即使是开发人员也是如此。

–布鲁诺
2012年5月16日晚上11:43

@Ramhound-这就是为什么您拥有独立的质量检查团队并制定书面测试计划的原因。这不是为建立IT帝国而聘请开发人员的借口。

–吉姆·德州(Jim In Texas)
2012年5月17日下午3:26

#3 楼

风险是访问的一种日益增加的功能

有一个简单的风险计算规则,可以解释您IT团队​​同事的恐惧。您在任何操作系统上拥有的访问权限越多
,任何错误或攻击的影响就越大。例如,如果您的同事之一,例如鲍勃,通过标准的网络钓鱼攻击受到攻击,
之后,Bob帐户即可被网络犯罪分子使用,并在几分钟之内在Internet上出售。如果Bob帐户具有管理员权限,则该帐户
将被用于在Internet上大规模发送垃圾邮件,
然后以极快的速度(在几分钟之内)通过网络钓鱼攻击盗窃其他帐户)将为您的网络打开一扇后门(这可能是因为Bob帐户是管理员帐户),从而可以完全控制Bob的PC(通过sshVNCVPN等工具进行远程控制)。
此攻击从内部PC从特权帐户启动
可以破坏防火墙,停止任何防病毒,反垃圾邮件保护。


罪恶在里面。 br />

即使您最好的网络管理员,系统管理员或安全管理员
,也可能会使这台损坏的PC中断数月之久(请参阅Stuxnet)。减少

如果您的开发人员同事擅长管理他们工作的操作系统,并且可以物理访问计算机,则这种
风险方面的差异为空。


任何OScan上的工程师只要对计算机具有物理访问权限,就可以授予管理员访问权限。


在任何操作系统上阻止管理员访问权限都是对于不能在管理员特权和普通用户特权之间有所区别的用户来说,有效的降低风险的方法。
这是我要向开发团队的同事提出的关键问题
并根据他们的风险意识采取行动:


“如果被授予您将如何处理
您的操作系统具有管理员权限吗?“


如果它们足够好,可以知道风险,那么它们足够好,可以得到想要的访问权限。那么就没有风险了减少拒绝该管理员访问的权限。
当心:如果您拒绝他们可以轻松获得的访问权限,则整个公司都会面临附带风险:他们会以肮脏的方式这样做,他们会行为不法,他们将无法寻求任何帮助,他们将不得不掩盖任何不幸。

#4 楼

以前的答案和评论中未提及的一些事项可能会成为以最低特权工作的开发人员的争论:


根据您所从事的行业,可能会有由于法律或法规原因,限制了员工在工作站上的特权。允许开发人员的管理访问权限可能会使组织面临违反法规的风险。开发人员可能会无意间将库升级或添加到了其他环境中不存在的本地计算机上,并且组件可能依赖于那些库的特定版本。同样,组件将在其他环境下运行的用户帐户可能不具有开发人员使用提升的特权所假定的所需数据库或其他访问权限。我在过去多次看到这种情况。有时很明显,为什么部署会失败,有时却不是,所以您必须回滚所有内容,直到找到答案。
如果开发人员安装开源工具或库并将其用于开发,则可能会出现无意的许可证限制关于如何生产软件的最终分配,尤其是在“ copyleft”条款是许可的一部分的情况下。使用开放源代码工具或库没有错,这只是故意的。您不想在交付时就发现您现在需要将所有源代码发布回社区,因为您的开发人员使用了一些开源组件,这些组件在许可中具有严格的copyleft条款,而他们在使用之前并未真正阅读过已安装。

我所看到的是让开发人员在最低特权下工作,但允许他们在指定的时间段内请求提升的特权。然后,此“ fire call”请求记录并监视了提升的特权,并在请求的时间结束时自动将其重置。

评论


第一点很棘手。我见过一些组织试图将使用限制在批准的软件范围内,但是在开发过程中几乎不可能审核软件。 Point 2只是良好的开发人员/测试人员做法,与开发人员工作站本身的安全性无关。要点3也是正常的开发人员实践,与打开/关闭源无关:使用的任何软件或lib都应具有应遵守的许可证,开发人员始终必须检查其是否具有管理员权限。 (请注意,很少有OSS工具意味着它们所使用的必须是OSS。)

–布鲁诺
2012年5月16日11:39



2.应由持续集成服务器处理

–布伦丹·朗(Brendan Long)
2012年6月27日17:28

#5 楼

您向他们授予他们的工作站以及他们想要的任何其他内容的本地管理员权限。开发环境始终与主网络隔离。确保您为他们提供所需的设置是IT的工作,同时确保开发环境中的任何内容都不会损害主网络。提前计划并与管理层合作,购买完成此任务所需的设备/软件。

#6 楼

与为开发人员提供安装其计算机的能力相关的安全风险很多。这就是为什么我会反对(以系统管理员的身份发言)

1)可能违反最佳安全实践-8条安全规则之一是最低特权规则-仅允许员工访问他们所拥有的内容需要完成他们的任务。如果有人告诉我他们的开发人员需要管理员权限才能安装软件才能完成工作,那么我会回答“为什么我的一名员工不能为他们安装它?”。拥有一个集中的软件安装点可以确保IT部门准确地知道哪台计算机上安装了什么软件。

2)法律原因-也许您的一名开发人员的道德标准不高,因此决定安装盗版软件。该软件不仅可能充斥着恶意软件,而且如果您被计算机上的盗版软件所捕获,则可能会打开蠕虫进行诉讼。 IT部门被认为对这些计算机负责,因此,他们负责对它们进行审计并确保许可符合每个软件的TOS。尽管开发人员可以方便地安装自己的软件而不用打扰IT部门,但您却为IT部门创建了更多工作。

3)意外安装恶意软件-之前已经提到,但这可能是无辜的。提升用户特权以便他们可以安装恶意软件,从而通过打开通过电子邮件或下载驱动器获得的受感染PDF,使他们容易受到恶意软件的攻击。限制用户访问权限以使其无法安装软件将有助于减轻恶意软件的威胁。

4)恶意活动-与第2点类似,但是这意味着您的一名开发人员不会安装后门或故意在您的网络上造成另一种安全威胁。您会惊讶地发现,如果有IT专业人员被解雇或老板惹恼他们,他们会这样做以进行报复。

总而言之,我不得不建议这样做。人们可能会辩称,这样做可以节省时间,以防止他们总是对IT进行安装软件漏洞,但我会反驳说:“这样做所花的时间比修补由于允许用户安装自己的软件而造成的安全漏洞所花费的时间少” 。如果认为这是必要的,则应将它们真正放置在无法直接访问外界的网络上。

评论


几乎所有这些操作都可以在没有管理员权限的情况下完成。许多软件不需要管理员priv来安装。防止大多数此类攻击的唯一方法是拥有软件白名单,但对于开发人员而言显然是不可能的。

– CodesInChaos
2012年5月15日13:21

1、2和3都是正确的,但是将调试器附加到以其他用户身份运行的进程需要本地管理员。 Visual Studio 2005建议始终以管理员身份运行它。安装Windows服务需要管理员。这些都是开发人员必须要做的所有事情,而有些事情要比其他事情更多,这意味着本地管理员是我完成工作所需要的权限。对于第4点,我想说开发人员可以对工作站进行物理访问,因此,如果他们是恶意的,除非PC处于关闭状态,否则他们可以获得管理员权限。

– pipTheGeek
2012年5月15日下午16:41

如果可以的话,我会否决这个答案。我看不出如何与开发人员进行良好的沟通无法解决这些问题。如果您不信任某个开发人员来满足您提到的要求,那么最好不要一开始就雇用他/她。我认为,将管理员权限限制为对硬件具有完全访问权限的(不可信?)高级用户是幼稚的,至少可以这样说。

–yms
2012年5月15日17:21

除了PipTheGeek提出的观点外,几乎所有开发人员都有一套专用的辅助工具,以提高工作效率(热键,luancher,代码片段生成器,代码生成器,grep,Notepad ++等)。此外,他们使用sysinternals-tools(如进程浏览器)杀死挂起的进程。他们还需要访问事件日志和其他MMC快照,并使用诸如regsvr32.exe之类的工具来注册其COM东西...清单还在不断...我无法想象至少没有本地管理员才能做我的工作。宁可让我离开网域,只提供互联网访问。

–路易斯·萨默斯(Louis Somers)
2012年5月26日23:22

从安全角度看,这听起来是合理的,但实际上这是完全不现实的,对开发人员而言是行不通的。另外,作为开发人员,限制我只能执行我的工作,只是在乞求我绕过您的安全性。如果公司里只有一个人,你不想那么做...

–本·布罗卡(Ben Brocka)
2012年5月26日23:45



#7 楼

您有几个问题要回答。


这些开发人员每天需要使用哪些应用程序需要管理员特权,并且有什么方法可以设置这些应用程序,所以不是这种情况吗? >为什么这些开发人员需要管理员特权才能执行琐碎的日常任务,并且有什么方法可以避免这种情况?
这些开发人员计算机是否已连接到互联网?

问题不应该出现是什么风险,问题应该是(您只能回答)开发人员甚至需要拥有管理员帐户的原因是什么。您可以使用“高级用户”帐户建立帐户,并让他们能够准确执行所需的工作,还可以限制他们对网络造成损害的能力。

如果这些计算机连接到Internet ....然后,由于它们在这些计算机上运行任何东西并安装任何东西的能力,将给您带来很大的风险。这些开发人员是很好的开发人员,他们不是安全专家,这只是何时将网络暴露给恶意软件的错误。

以Google为例。一位Google员工单击MSN Messenger窗口中包含的链接,下载了利用Microsoft已修复的漏洞的恶意软件,并感染了整个网络。

我应该添加Google员工单击链接与该问题无关,这是要指出的是,人们会犯一个错误,因此请限制您的曝光机。

评论


如果不从MS安装现有修复程序,难道Google的网络会被IT感染吗?

–安迪
16-9-31 at 1:36

@安迪-这就是我的意思。一名员工仍然使他们受到威胁。

–猎犬
16-9-3'2:52

但是,如果IT部门及时应用修补程序,则不会发生任何事情。期望人类永远不会犯错误似乎是实现安全性的一种很愚蠢的方法。

–安迪
2016年9月6日下午0:17

我想指出的是,并不是每个Google员工都是开发人员,可能是女士订购了办公用品。

–托马斯·穆尔德(Thomas Mulder)
18年6月22日在7:45

问题特别是关于授予开发人员管理员权限。在这种情况下,Google员工可以是开发人员。这也只是一个例子。

–猎犬
18年6月22日在11:02

#8 楼

一种解决方法是安装未连接到域的虚拟机。这将是一个麻烦,但是总比被政策严重削弱更好。

评论


对于将来的读者:这不适用于需要使用设备模拟器的移动应用程序的开发人员。设备仿真器也是虚拟机,您不能在VM中运行VM。还要注意,如果您使用现代的IDE(Visual Studio,Intellij IDEA,Eclipse),则此类工具在VM中的较差性能将使您的生活痛苦不堪。

–yms
16年11月15日在19:06