开发人员应在其PC上具有管理员权限


135

开发人员应该在其PC上具有管理员权限,还是应该授予他们高级用户访问权限?

一些评论:

  • 如果他们想尝试一些需要安装的新应用程序,则可以在虚拟机上进行尝试,然后让网络管理员为他们安装它。你认为那行得通吗?
  • 开发人员需要在PC上做任何需要管理员权限的事情吗?

我们是由5个开发人员组成的团队,并构建Web应用程序


116
如果我进入工作岗位,但发现我对该计算机没有管理员权限,第二天就不会再来了。使您的开发人员的生活更轻松,而不是更难。
annakata

29
这个问题将受到选择偏见的困扰-有时应该锁定开发人员的计算机,但是这种响应永远不会在面向开发人员的站点上进行投票。
romandas,2009年

5
没有人想像的那么普遍。在大多数情况下,根本的问题是敏感数据-例如,瑞士银行保密法倾向于阻止开发人员查看实际的客户数据(帐户核对留给读者练习)。在这种情况下,问题不在于锁定机器,而是为开发工作提供经过清理的数据集。大多数其他情况是监管要求(例如,处理机密数据)或自助CYA。
ConcernedOfTunbridgeWells,2009年

12
我不知道在ServerFault上会出现同样的问题...(@romandas)
Ben Mosher

4
@BenMosher:这是您的答案:serverfault.com/questions/232416/…–
kmote

Answers:


228

答案是“是”。开发人员将需要获取系统配置,以测试项目,安装软件(如果没有其他要求,以测试他们碰巧正在开发的产品的安装过程),戳注册表并运行没有管理员权限就无法正常工作的软件(只是列出一些项目)。开发工作中还包含许多其他任务,这些任务需要管理权限才能执行。

请记住,开发人员不一定具有对生产系统的root访问权限,因此本地PC上的管理员权限不会显着损害生产系统的安全性。几乎没有合法的运营理由将需要访问权限的人员限制在本地PC上的管理员访问权限。

但是,提供管理访问权的最重要原因是,设置受到破坏的或二流的开发环境会向您的开发人员发送一条消息:

``我们对您的工作非常重视,以至于我们准备无缘无故地大幅削弱您的工作能力。实际上,我们很乐意这样做以掩盖自己的屁股,顺应小官僚的异想天开,或者因为我们根本不被打扰。那是最好的情况。最坏的情况是,我们确实是控制怪胎类型,将其视作告诉您如何做工作以及您需要做什么或不需要做的事情。尽自己所能提供的,并感激自己找到一份工作。”

通常,为开发人员提供一流的工作环境(更不用说根本上有缺陷的工作环境)是惹恼您的员工的自然后果的秘诀-无法留住胜任的人员,员工流失率高,士气低下和交付质量差。竭尽全力做到这一点-尤其是如果有过分顺应官僚主义的想法-这是不负责任的。

请记住,您的员工流动不仅会产生更换员工的成本。员工流动最严重的代价是,大多数留在员工身边的都是那些无法找到更好工作的枯木。随着时间的流逝,这会降低受影响部门的能力。如果您的行业足够亲密,您也可以找到自己的声誉。

需要注意的一点是,与Windows相比,管理特权在unix-oid或大型机系统上的开发所要解决的问题要少得多。在这些平台上,用户可以在自己的域中做更多的事情,而无需系统范围的权限。您可能仍会希望开发人员具有root或sudo访问权限,但如果不这样做,那么访问权限的频率就会降低。这种灵活性是计算机科学学校中Unix操作系统持续流行的重要但鲜为人知的原因。


3
具有管理员权限和使用管理员权限运行所有内容是有区别的:)当然,许多开发人员将需要管理员权限。但是,在本地系统上以管理员权限交互地运行所有内容并不是最不重要的特权。它开放了针对开发人员可以访问的生产系统的攻击,而受感染的本地PC可以为任何攻击者提供相同的访问权限。这比您想象的要容易。安全是一个分层问题,每个进程的特权最少,并且用户培训问题。尊重每个设备的安全性是唯一的方法:vimeo.com/155683357
Oskar Duveborn,

我赞成将本地管理员权限授予开发人员,但是说“本地PC上的管理员权限不会显着损害生产系统的安全性”将取决于您的环境。大多数IT人员关心的是,您将安装包含可能在公司范围内传播的恶意软件/病毒的软件,或者如果有人破坏了您的本地计算机,并且您在本地或本地数据库中存储了敏感数据文件。在理想环境中,没有开发人员可以访问HIPAA / PCI数据文件,并且所有开发数据库都被清理干净,但是我们知道事实并非如此。
L_7337 '18年

87

开发人员应完全控制自己使用的计算机。大多数调试工具都需要管理员权限才能挂接它们正在构建的应用程序的运行时。

此外,开发人员经常下载并尝试新事物。添加额外的步骤(例如需要网络管理员来为他们安装东西)只会使开发人员感到沮丧,并将迅速使网络运营人员陷入困境。

就是说,他们应该是THEIR管理员,而不是网络管理员。


5
具有管理员权限的开发人员遇到的最大问题是,您理所当然地拥有对本地计算机资源的权限。如此糟糕的软件结果-写入C:\ Program Files,写入HKLM,等等。也许在您的工作站上,但是需要在不需要的地方进行测试。
SqlRyan

4
@rwmnau:这不适用于Web开发。同样,在普通权限下进行质量检查时,问题很快就会变得很明显。
2009年

2
在不具有管理员特权的情况下使VM可用并进行开发人员测试登录是一种很好的方法,可以方便地测试软件是否将以正常用户权限运行。
ConcernedOfTunbridgeWells,

以此类仅管理员权限发布的软件通过了非常糟糕(或没有)的质量检查流程。该软件应在实际环境中进行测试,因此质量保证应及早发现它,并解决开发人员否则会忽略的问题。对?

2
@rwmnau-任何值得他们投入盐分的开发人员都清楚地知道这一点,但是答案并不是要锁定他们的开发机器。旨在为他们提供一个测试环境,以便他们可以方便地部署项目以解决这些问题。
Spencer Ruport

48

是的,没有。

是的,它节省了麻烦的系统支持时间。

不,您的用户没有它,所以不要指望它。

我们以管理员权限进行开发,而无需进行测试。哪个正确。


11
我的妻子不得不为她的计算机上的非管理员帐户辩护,以便她可以确保用户可以做她能做的事情。您的政策完全正确(因此被否决)。
David Thornley,2009年

1
确实,开发人员应具有管理员权限,测试和质量检查应具有用户权限。
沃森博士,

我完全同意你的看法!管理员访问权限非常适合开发,但是大多数用户都不会拥有(如果您开发公司软件...通常,它可以很好地锁定东西)。
Pulsehead

18

本地管理员是的,出于上述所有原因。网络管理员不可以,因为“他们可以”将不可避免地将它们吸引到网络管理任务中。开发人员应该正在开发。网络管理是完全不同的工作。


15

开发人员通常需要做普通人不会做的事情,因此通常应该拥有管理员帐户。让他们跳过笨拙的篮球圈会浪费他们的时间并使他们士气低落。在高度安全的情况下可能会有例外,但是如果您不信任具有管理员帐户的人,则可以确定不信任他们的代码。

他们还应具有与其用户相同权限的可用帐户(如果用户池具有不同的权限状态,则应具有多个帐户)。否则,他们可能只是开发一些很棒的东西,进行部署,然后发现它对用户不起作用。

还有太多方法可以用管理员帐户来破坏计算机(是的,我已经做到了)。IT部门需要一项政策,如果他们不能快速修复它,他们将重新映像开发人员的计算机。在与我签约的一个地方,我必须签署该政策的副本才能获得我的管理员帐户。

这是一个非常特定于Windows的答案。在Linux和其他Unix-y系统中,开发人员通常只能使用用户帐户,通常不需要其他帐户进行测试(如果他们拥有可以使用sudo的帐户,他们就会知道何时使用sudo,但他们可能需要具有相同组权限的一个,并且很容易对OS造成不可思议的破坏,因此,必须采用相同的IT策略。


4
“在高度安全的情况下可能会有例外,但是如果您不信任具有管理员帐户的人,那么您肯定不会信任他们的代码。” -太好了,谢谢!
用户

您不能以任何一种方式信任代码:您应该为所有内容编写经过同行评审的代码。而且我认为这对于安装也很有意义:请某人“同行审查”他们将要安装的软件。
Tim

10

是的,《半条命1》(以及所有相关的mod:反恐精英,失败日等)需要管理员权限(至少我认为第一次运行是这样)才能在Windows NT,2000,XP等环境中正常工作。

而且,什么样的开发人员在午餐时间不玩《反恐精英》?(肯定是cr脚的)


10

忍受了必须在计算机上没有管理员权限的情况下进行开发的痛苦,我的回答只能是,这很重要。


8

绝对!我还要如何安装下载管理器以在晚上下载电影?

有时,开发人员确实需要在系统中进行安装或更改,以测试一些想法。如果您每次需要更改某些内容时都必须致电管理员,那将是不可能的。

我也有个人观察,有些管理员倾向于尽一切可能使每天很少的事情依赖他们,从而……确保他们的工作呢?惹恼其他用户?没有答案 但是这里没有常识。

上次我的PC出现问题时,我积极参与了系统的恢复工作,并提出了一些与管理员一起工作的建议,或者因此,我想...管理员变得非常生气,并指责我试图教书他或重新定义规则。我想这只是他的自我,因为在我们的其他同事中没有看到他在我们房间里那么酷。


我完全同意。在担任系统工程师6年后,必须致电服务台来修复问题。
马修·怀特(

8

答案是,开发人员应该有2台机器!!

  • 具有管理员权限,足够的功能,内存,屏幕大小,可移植性和ADMIN特权的开发人员之一,已加载公司防病毒软件,但开发人员可以在需要时使用自动重置策略对其进行配置。

  • 具有公司工作量,策略,非管理员用户特权等的一个公司。开发人员可以将其用于单元测试发布模式应用程序,因为某些开发人员习惯于使用管理员权限进行所有单元测试。


9
好主意...但是大多数公司甚至不会给您一台“好”机器,而不会给您两台。
马修·怀特(

1
您可以使用“标准”版本在VM中创建第二台计算机。如果开发网络被隔离到其自己的域中,则这特别有用。主域上的单独生产VM可使开发人员访问网络资源。
ConcernedOfTunbridgeWells 2014年

5

如果您反转问题,我认为回答起来会更容易。我们应该从开发人员中删除管理员权限吗?有什么收获?

但实际上,我认为答案取决于您的环境和环境。小型创业公司对获得ISO认证的政府机构会有不同的答案。


5

是的,但是他们需要意识到用户在更加受限的环境中运行软件时将面临的限制。开发人员应该可以使用有限的资源和权限轻松访问“典型”环境。过去,我将构建部署作为构建过程的一部分纳入了将部署构建到这些“典型”系统之一(通常是我自己的工作站上的VM)的过程,因此,我始终可以快速了解该软件在终端上的工作方式,用户的机器。

程序员还有责任了解为非管理员用户编写软件的严格规则。他们应该确切知道始终允许(或禁止)访问哪些系统资源。他们应该知道用于获取这些资源的API。

“它可以在我的机器上工作”绝不是借口!


5

作为系统管理员,我完全适合在其工作站上具有本地管理员权限的开发人员。在可能的情况下,使用标准的“用户”级别帐户执行大多数操作,然后使用另一个“管理员”帐户进行更改,安装应用程序等,这不是一个坏主意。通常,您甚至可以在不登录的情况下通过sudo或runas完成所需的操作出来。提醒我们,最终用户在发布到生产环境时必须经历的安全问题也很有帮助。

附带一提,建议您使用[干净]系统或VM,以便您可以正确地进行测试,并且由于系统调整而无法进入“在我的系统上看起来不错/可以正常工作”的场景。


3

没有超级用户

首先,Power User本质上是管理员-因此,将用户“ 限制 ”为Power User不会增加系统的安全性-您最好还是管理员。

以普通用户身份交互式登录

其次,开发人员当然需要对其开发人员机器(以及服务器和第二个盒子等)的管理访问权限,但是在正常的开发或测试过程中,当然没有人应该以管理员身份交互式登录。为此和大多数应用程序使用普通用户帐户。

您真的不想以管理员身份运行[插入任何浏览器,插件,IM,电子邮件客户端等]。

即使您在需要时可能具有root用户访问权限,通常也不会以root用户身份登录到Linux机器。

使用单独的个人管理员帐户

为开发人员提供一个单独的个人管理员帐户(最好是域帐户)到他/她的机器(该帐户也是该用户需要管理访问权限的其他开发/测试服务器和机器上的有效管理员)。

在Vista + UAC中使用“运行方式”来提示或请求提示,并仅在需要时输入任务和进程的管理凭据。具有智能卡或类似功能的PKI可以大大减少经常输入凭据的压力。

每个人都很高兴(或?)

然后审核访问。这样就具有可追溯性,并且是一种简单的方法来找出谁正在使用您现在必须访问的特定开发/测试服务器上的终端服务会话。

当然,肯定有一些开发工作永远不需要本地管理员权限-像大多数Web开发一样,其中的部署是针对单独的服务器或虚拟机进行测试的,而Cassini或用于本地调试的任何内容实际上都可以像普通用户一样正常运行。


2
您的意思是:不允许他们以管理员身份登录,但为他们提供密钥,以防万一他们需要做一些需要做的事情。我在MS网站上阅读了有关UAC的文章,它显示出开发人员一天要做的数百件事完全没有真正考虑。
2009年

2
设置UAC是为了防止普通人用脚射击自己。如果开发人员这样做,请为他感到羞耻。如果他不断这样做,那么他需要寻找另一条工作线。
2009年

如果您给他们密钥,您实际上是“允许”我们(以管理员身份)登录。仅仅对日常任务执行此操作绝不是一个好主意。人们为什么仅仅因为他们是极客,编码员或管理员就认为这是正常的还是必要的,这超出了我的范围。
Oskar Duveborn

如果您看到现代系统管理员一天所要做的事情,您将意识到对管理访问和输入替代凭据的需求比任何核心系统级编码器都更高。他们仍然不以管理员身份登录执行日常任务,并且做得很好。
Oskar Duveborn

即使您正在管理unix系统,通常也不会以root用户身份登录,因此,即使您是开发人员,为什么还要在Windows系统上进行登录?这是没有意义的。至少可以说,运行具有高系统特权的所有随机应用(如Skype或诸如此类的东西)是无知的-您只会提升需要它的应用。
Oskar Duveborn

3

我主要在* nix领域工作,开发人员使用的标准模型是在普通的非特权用户帐户中工作,并具有(通过sudosu)根据需要/在需要时升级为管理员特权的能力。

我不确定等效的Windows设置是什么,但是根据我的经验,这是理想的设置:

  • 一方面,按需提供管理员权限可以在需要时为开发人员提供充分的管理权。

  • 另一方面,Windows软件假设所有用户都具有管理员权限的历史由来已久,以至于许多程序不会为非管理员用户运行。Windows的许多安全问题直接源于这一隐含要求,即为了能够可靠地使用计算机,所有用户都必须是管理员。 这必须进行更改,并且确保您的软件将以非管理员用户身份运行的最有效方法是让开发人员以非管理员用户身份运行软件。


我认为在过去的5-10年中,我没有遇到无法以普通用户身份运行的业务应用程序。自从我成为BOFH以来,实际上,自2001年以来,该地点的所有用户都被迫以普通用户身份运行所有内容-没有管理员权限委派,并且效果很好,并阻止了当时的许多恶意软件。如果运行了这样的旧版应用程序(在沙盒中欺骗它),则在较新的Windows版本中也会应用自动填充,在我的日常开发工作中,几乎只有Visual Studio在需要附加时会升高到其他进程进行调试。
Oskar Duveborn

3

[抱歉,英语不是我的母语,我正在努力:)]

个人经验(我是c ++ / SQL开发人员):

在以前的工作中,我曾经是Windows计算机的管理员。我还对数据库(包括生产环境数据库)拥有dbo(而非dba)权限。在两年半的时间里,八个人拥有了这些疯狂的高权利...我们从来没有遇到任何麻烦。实际上,我们通过手动更新db解决了很多问题。对于修补程序和开发人员,我们可以真正快速地完成许多工作。

现在我换了工作。我设法(哭了很多)成为Windows计算机的管理员。但是dev服务器是我们使用ssh连接到的Red Hat服务器。尝试安装Qt是一种折磨,配额限制,空间限制,执行和写入权限。我们最终放弃了,请管理员为我们做。2周后仍未安装任何软件。我的报纸阅读和alt + tab命中速度很快。

我要求管理员权限,因为只有我的软件开发人员才使用此计算机。

->答案:“如果有进程,则不要执行任何所需的操作。它必须在生产中运行一次”。

->试图向非技术经理解释:“在生产或UAT环境中,我将没有任何管理员权限。但是我的开发机器是不同的。如果我要构建椅子而不是软件,请问我可以我不会在车间里放任何我想要的工具,因为我的车间需要看起来像椅子将要使用的地方吗?我给uat提供了一个可执行文件包。我用来构建它们的库和工具对于最终用户或花花公子安装软件包。”

我今天还在等。我找到了解决方案,打开了开发环境,去找您喜欢的在线裁判,挑战自己。当有人看着您的屏幕时,他会为您编程。;)


2

您可以通过两种方式回答。是和否,或者取决于。-我能说得更模糊吗?

这取决于他们是否需要完成工作。如果可以,则授予他们对计算机的管理权限。如果没有,那就不要。并非所有软件开发都要求工程师具有管理员权限。

是,否取决于您的观点。一些工程师将其计算机视为自己的域,这是其域的规则。其他人不想承担责任。

我曾在一家没有管理员权限的公司工作,每当我需要做一些需要管理员权限的事情时,我都必须致电服务台,他们授予我临时管理员权限,直到我重新启动。有时候这很痛苦,但是那是我一直生活的方式。我还曾在对计算机拥有完全管理员权限的地方工作。除了我安装一些连接操作系统的软件并不得不将我的计算机带到服务台并让它们重新映像硬盘驱动器之外,这非常棒。

我个人认为工程师应具有对其计算机的管理权限,但应理解,如果他们搞砸了它,则可以重新加载新的基准映像,并且他们将失去自原始基准以来所做的一切。我不认为公司中的每个人都应该拥有对其计算机的管理权限。会计,行政助理和其他部门实际上并不需要拥有这些权利,因此不应授予这些权利。


我曾经是一家公司的承包商,为了获得管理员权限,我必须签署一份确认书,告知IT员工将花费不超过十或十五分钟的时间来修理我的计算机,然后进行彻底的擦除和重新安装。 -图片。对我来说似乎很公平。
David Thornley 2009年

同意 拥有权利的同时也被赋予了重大的责任。
CraigTP

2

ht tp://msdn.microsoft.com/zh-CN/library/aa302367.aspx

以我的经验,我们(编码器)和他们(安全性)之间总是需要折衷的。我承认(尽管我讨厌),上面的Microsoft文章中有优点。由于我已经当了多年的程序员,所以我经历了痛苦,我只需要安装一个不同的调试器,而这就是我无法忍受的烦恼。它迫使我创造性地思考如何完成工作。经过与我们的安全团队作战的多年(和几次讨论),我了解他们必须保护所有区域(包括我的台式机)的工作。他们向我展示了每天出现的漏洞,即使在最简单的Quicktime应用程序上也是如此。每当我想安装快速实用程序或调整本地IIS时,我都会看到它们的烦恼,这可能会导致严重的安全问题。直到看到另一个开发人员被罐装,我才完全理解这一点。他试图进行调试,最终关闭了Symantec,只是为了向数百人感染(然后提供)一些病毒。一团糟。与“安全负责人”之一(安全人员)交谈时,我看到他只想说“告诉你……”。

我了解到,我们的专家(至少我的专家)只是想保护我们的公司。好消息是我们确实找到了一个折衷方案,并且我可以完成工作,并且我们的安全网络可以保证安全!

信条


1

是的,如果您希望测试者或一些熟练的恶意用户立足于威胁您的域名。

即妥协低级别帐户>查找位置admin-> Mimikatz->提升权限->域admin。

所以不,普通用户不应该是管理员。

微软也曾说过UAC不是安全边界,所以不要这样使用它。现实世界中可以使用各种绕过UAC的方法。

如果他们需要管理员作为其工作角色的一部分,则请给出单独的域本地管理员用户帐户,这些帐户仅用于安装软件(仅在其自己的计算机上具有管理员权限),而不用于一般用途或Internet访问。这应该具有更严格的密码策略(例如,最小长度为15个字符)。为此应使用Runas功能。

普通用户帐户为admin的任何环境都会导致安全灾难。


0

哇,这个问题肯定会带来一些有趣的答案。在答复中,我引用了经常使用的-'取决于':)

在小型公司中,这可能仅仅是出于务实的考虑。开发人员也可能是技术上最熟练的人,因此对他们自己的计算机进行管理很有意义。

就个人而言,我是“管理员帐户”的粉丝,可以在必要时使用它-即“运行方式..”(我注意到这种方法的原理与以后的UAC非常相似)。

如果您正在开发台式机软件,那么对于开发人员来说,在其最终用户将要经历的范围内工作(即有限或受限制的权利)并不是一个坏主意。如果您以有限的权利来构建软件,则很有可能遇到相同的权限集,目标用户将面临同样的问题。

话虽如此,如果您有一个好的测试实验室和/或一个好的QA团队,这可能是一个有争议的话题-尤其是如果您有半个像样的ALM练习。

所以最后-我在没有UAC的情况下发展,主要是因为我相信自己和我的技能。在团队环境中,我将它付诸表决。在大型组织中,您可能没有这种自由。.企业管理员通常拥有最终决定权:)


0

在我的公司中,开发人员,工程师和我的老板(公司所有者)拥有本地管理员权限。我的老板还具有网络管理员特权,以防万一我被那辆任性的公共汽车撞倒(或退出)。其他所有人都被锁定。

作为系统管理员,此设置有时会给我带来一些麻烦,尤其是在安装未经批准的软件时。但是,从开发人员的背景出发,我知道高级用户需要对其环境进行更多控制,因此,我愿意忍受偶尔出现的怪癖或问题。我确实对其工作站执行例行备份-以防万一。

顺便说一下,我遇到的问题比老板更麻烦。有点像古老的问题:“大象坐在哪里?他想要的任何地方!” 但是在一家本质上是“备份”系统管理员的小型公司中,没有太多选择。


-1

这取决于开发人员的技能以及他/她是否是顾问。

我认为,经验丰富且值得信赖的开发人员有权使用自己的PC做他/他想要的任何事情,只要这不会损害她/他的生产率。


6
为什么您会牵扯到顾问而不是正式员工的手?他们不是都在做同样的工作吗?即使您可能会为顾问支付更多的费用,您是否期望减少顾问的费用?这听起来真是愚蠢。此外,如果开发人员无法保持自己的计算机运行,则需要一项新工作
NotMe,2009年

-1

Windows XP上没有人可以使用管理员帐户进行日常使用;在Vista中,如果您必须是管理员,则至少要启用UAC。特别是Web开发人员和其他使用Internet Explorer浏览Web的开发人员。

您可以做的是让开发人员使用其常规用户帐户,但为他们提供第二个帐户,该帐户是其PC上的管理员,以便他们可以根据需要使用它(运行方式)。我知道他们说过Web开发,但是对于Windows开发,应该使用常规用户帐户而不是管理员来测试您的软件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.