开发人员是否应该在自己的 PC 上拥有管理员权限,或者给予他们高级用户访问权限就足够了吗?
一些评论:
我们是一个由5名开发人员组成的团队,负责开发网络应用程序
如果你反转这个问题,我认为它会变得更容易回答; 我们是否应该删除开发人员的管理员权限?有什么好处?
但实际上,我认为答案取决于你的背景,你的环境。小型创业公司将有一个不同的答案,以 ISO 认证的政府机构。
是也不是。
是的,它节省了很多时间打扰系统支持。
不,你的用户没有,所以不要指望它。
我们开发与管理员权限和测试没有。这工作了正确的。
这取决于开发人员的技能以及他/她是否是一名顾问。
我认为一个经验丰富、值得信赖的开发人员有权利对她/他的电脑做任何事情,只要这不会损害她/他的工作效率,这是合理的。
开发人员应该对他们正在使用的机器拥有完全的控制权。大多数调试工具需要管理员权限才能挂接到它们正在构建的应用程序的运行时。
此外,开发人员经常下载和尝试新的东西。添加额外的步骤,例如需要一个网络管理员过来并为他们安装一些东西,这只会让开发人员感到沮丧,并很快让网络操作人员生不如死。
也就是说,他们应该是他们盒子上的管理员,而不是网络。
哇,这个问题肯定会有一些有趣的答案。作为回应,我引用了经常使用的一句话——“视情况而定”:)
在小公司,这可能只是一个务实的问题。开发人员也可能是技术最熟练的,因此他们管理自己的机器是有意义的。
就我个人而言,我是“管理帐户”的粉丝,这个帐户可以在必要的时候使用——比如“运行”。."(后来我注意到这种方法在原则上与 UAC 非常相似)。
如果你正在开发桌面软件,对于开发人员来说,在他们最终用户将要经历的限制范围内工作并不是一个坏主意——也就是有限或有限的权利。如果您在有限的权限下构建软件,那么很有可能遇到与目标用户在同一组权限下遇到的问题相同的问题。
话虽如此,如果你有一个好的测试实验室和/或一个不错的 QA 团队,这可能是一个没有意义的问题-特别是如果你有一个不错的 ALM 实践。
所以最后-我发展没有 UAC,主要是因为我相信自己和我的技能。在团队环境下,我会投票表决。在较大的组织中,你可能没有这种自由。.企业管理员通常有最终决定权:)
是的,但是他们需要意识到当他们的用户在一个更有限的环境中运行软件时将面临的限制。开发人员应该能够方便地访问资源和权限有限的“典型”环境。在过去,我曾经将部署构建作为构建过程的一部分,将其部署到这些“典型”系统之一(通常是我自己工作站上的虚拟机) ,这样我就可以总是快速地了解软件在终端用户的机器上是如何工作的。
程序员还有责任了解为非管理员用户编写软件的硬性规则。他们应该准确地知道总是允许(或禁止)访问哪些系统资源。他们应该知道用于获取这些资源的 API。
“它在我的机器上工作”绝不是借口!
你可以用两种方式来回答这个问题。是或不是,或者看情况而定。——我可以说得更模糊一点吗... ..。
这取决于他们是否需要做好自己的工作。如果是,则授予他们对其计算机的管理权力。如果没有,那就不要。并非所有的软件开发都需要工程师拥有管理权限。
是或不是取决于你的观点。一些工程师把他们的计算机视为他们的领域,他们是他们领域的规则。其他人不想承担责任。
我曾经在一家没有管理员权限的公司工作过,每当我需要做一些需要管理员权限的事情时,我必须打电话给服务台,他们授予我临时管理员权限,直到我重新启动。有时候这很痛苦,但事实就是如此,所以我一直忍受着。我也在我有完全管理权限的地方工作过。这是伟大的时间,除了我安装了一些软件,冲洗操作系统,不得不把我的电脑到服务台,让他们重新映像的硬盘驱动器..。
我个人认为一个工程师应该有管理员的权利,他们的计算机,但有一个理解,如果他们搞砸了,然后一个新的基准图像可以重新加载,他们将失去自原始基准以来所做的任何事情。然而,我并不认为公司里的每个人都应该拥有他们电脑的管理权。会计、行政助理和其他部门实际上没有必要拥有这些权利,因此不应该授予这些权利。
本地管理员是的,出于上述所有原因。网络管理员没有,因为他们不可避免地会被卷入网络管理任务中,因为“他们可以”。开发人员应该发展。网络管理是一项完全不同的工作。
答案是肯定的。开发人员需要暂停系统配置来测试项目,安装软件(如果没有其他事情的话,测试他们正在开发的任何软件的安装过程) ,查看注册表,运行没有管理员权限就无法正常工作的软件(只是列出几个项目)。开发工作中还有许多其他需要管理特权才能完成的任务。
考虑到开发人员不一定能够根本访问生产系统,当地个人电脑的管理权不会严重损害生产系统的安全。限制需要本地个人电脑的工作人员访问当地个人电脑几乎没有合法的操作理由。
然而,提供管理访问的最重要原因是,设置一个妥协的或二流的开发环境会向您的开发人员发出一个消息:
我们很看不起你的工作 已经做好准备 影响你工作的能力 没有任何理由,事实上,我们 我们很乐意这么做来保护我们自己 屁股,迎合 小官僚主义 因为我们不想被打扰。 这是最好的情况,最坏的情况 我们真的是 控制狂的类型,认为它是 我们的任务是告诉你如何 做好你的工作,做好你的工作 需要这么做,用什么来凑合 你得到了,你应该感激 你已经找到工作了
一般来说,为开发人员提供一个二流的(更不用说存在根本缺陷的)工作环境是惹恼员工的自然后果——无法留住有能力的员工、员工流失率高、士气低下和交付质量差。特意这样做——尤其是如果有迎合官僚主义心血来潮的暗示——是不负责任的。
记住,你的员工流失不仅仅意味着更换员工的成本。员工流失的最严重代价是,大多数留下来的员工将是那些找不到更好工作的废柴。随着时间的推移,这会降低受影响部门的能力。如果你所在的行业足够接近,你也会发现自己获得了声誉。
需要注意的一点是,在 unix-oid 或大型机系统上进行开发时,管理特权远不像在 Windows 上那样是个问题。在这些平台上,用户可以在自己的域中做更多的事情,而不需要系统范围的权限。您可能仍然希望为开发人员提供 root 或 sudo 访问权限,但是如果没有这种权限,那么麻烦就会少得多。这种灵活性是 Unix 派生的操作系统在计算机科学院校中持续流行的一个重要但鲜为人知的原因。
开发人员通常需要做一些普通人不会做的事情,因此通常应该有管理员帐户。让他们跳过那些笨拙的圈圈,浪费了他们的时间,打击了他们的士气。在高安全性的情况下可能会有例外,但是如果您不能信任拥有管理员帐户的人,那么您肯定不能信任他们的代码。
它们还应该有一个与其用户具有相同权限的可用帐户(如果用户池具有不同的权限状态,则应该有多个帐户)。否则,他们可能只是开发一些很酷的东西,部署它,然后发现它不适合用户。
还有太多的方式搞砸电脑与管理帐户(是的,我已经这样做了)。IT 部门需要一个政策,如果他们不能快速修复开发人员的计算机,他们将重新图像。在一个我签约的地方,我必须签署一份保单才能获得我的管理员账户。
这是一个非常特定于 Windows 的答案。在 Linux 和其他 Unix-y 系统中,开发人员通常只能使用用户帐户,通常不需要另一个帐户进行测试(如果他们有一个可以使用 sudo 的帐户,他们确实知道何时使用 sudo,但他们可能需要一个具有相同组权限的帐户) ,并且可以非常容易地对操作系统造成难以置信的损害,所以同样的 IT 策略是必要的。
作为一个系统管理员,我完全支持开发人员在他们的工作站上拥有本地管理权限。如果可能的话,使用一个标准的“用户”级别的帐户做大多数事情,然后使用另一个“管理”帐户进行更改、安装应用程序等,这是一个不错的主意。通常,您甚至不用登出就可以通过 sudo 或 runas 来完成您想要的任务。它还有助于提醒我们,在发布到生产环境时,最终用户将不得不跨越哪些安全障碍。
另外,建议使用[ clean ]系统或 VM,这样您就可以正确地进行测试,而不会因为系统调整而陷入“它在我的系统上看起来/工作得很好”的情况。
当然! 不然我怎么安装下载管理器在晚上下载电影?
有时候开发人员确实需要在系统中安装一些东西或者修改一些东西来测试一些想法。如果每次需要更改某些内容时都必须打电话给管理员,那将是不可能的。
我也有我个人的观察,一些管理员倾向于拧紧所有可能的,为了使即使是小事依赖于他们的日常基础因此... 什么,保住他们的工作?惹恼了其他用户?没有答案。但这里没有常识。
上次我的电脑出现问题时,我积极参与了系统的修复工作,提出了一些与管理员一起工作的建议,或者我认为... ... 管理员变得非常生气,指责我试图教他或者重新定义规则。我想这只是他的自负,因为他在我们的房间里和其他同事相处时没有那么冷静。
首先,Power User 基本上是一个管理员-所以“ 限制”用户对 Power User 不提供任何增加系统安全性的服务-你也可以是管理员。
其次,开发人员当然需要管理员访问他们的开发人员机器(以及服务器和第二个机器等) ,但是在正常的开发或测试期间,没有人应该以管理员的身份交互式地登录。对此和大多数应用程序使用普通用户帐户。
你真的不想以管理员的身份运行[插入任何浏览器、插件、即时通讯工具、电子邮件客户端等等]。
您通常也不会以 root 身份登录到您的 Linux 机器,即使您可能在需要的时候拥有 root 访问权限。
为开发人员的机器提供一个单独的个人管理员帐户(最好是域帐户) ,这个帐户也是开发人员需要管理访问的其他开发/测试服务器和机器上的有效管理员。
利用“ run as”和在 Vista + UAC 中提示或请求提示,并只在需要时输入任务和进程的管理凭据。使用智能卡或类似的 PKI 可以大大减少经常输入凭证的压力。
然后审计访问权限。这种方式具有可追踪性,并且可以很容易地找出谁正在使用您现在必须访问的特定 dev/test 服务器上的终端服务会话..。
当然,肯定有不需要本地管理员特权的开发工作——就像大多数 web 开发一样,部署在单独的服务器或虚拟机上进行测试,而卡西尼或其他用于本地调试的东西实际上像普通用户一样运行良好。
在 Windows XP 中,任何人都不应该使用管理员帐户进行日常使用,在 Vista 中,如果你必须是管理员,至少要启用 UAC。特别是网页开发者和其他用 Internet Explorer 浏览网页的开发者。
你所能做的就是让开发者使用他们的常规用户帐号,但是给他们一个第二个帐号,这个帐号是他们电脑上的管理员,这样他们就可以根据需要使用(按需运行)。我知道他们说的是网络开发,但是对于 Windows 开发,你的软件应该使用普通用户帐户进行测试,而不是作为管理员。
我主要在 * nix 世界工作,那里的标准模型是让开发人员在一个正常的、没有特权的用户帐户中工作,并且能够(通过 sudo或 su)在必要时升级到管理员特权。
sudo
su
我不确定 Windows 的安排会是什么样的,但以我的经验,这是最理想的安排:
一方面,随需应变的管理权限使得开发人员在需要时可以完全控制自己的工作站。
另一方面,Windows 软件假设所有用户都有管理员权限的历史由来已久,以至于许多程序不会为非管理员用户运行。Windows 的许多安全问题直接源于这种隐含的要求,即为了能够可靠地使用计算机,所有用户都必须是管理员。这必须改变和最有效的方法,以确保您的软件将运行的非管理员用户是为您的开发人员运行它自己作为非管理员用户。
Https://msdn.microsoft.com/en-us/library/aa302367.aspx
根据我的经验,我们(程序员)和他们(安全性)之间总是需要妥协的。我承认(尽管我讨厌这么做) ,上面微软的文章还是有一些优点的。作为一个程序员,我已经经历了多年的痛苦,我需要安装一个不同的调试器,只是为了生气,我不能。它迫使我创造性地思考如何完成我的工作。经过多年与我们的安全团队的斗争(和几次讨论) ,我理解他们的工作是必须确保所有区域的安全,包括我的桌面。他们向我展示了每天出现的漏洞,即使是在最简单的 Quicktime 应用程序上。我可以看到他们的沮丧,每次我想安装一个快速实用工具或调整我的本地 IIS,我可以造成严重的安全问题。直到我看到另一个开发商被解雇,我才完全明白这一点。他试图调试,结果关闭了赛门铁克只是为了得到(然后给)一些病毒数以百计的人。一团糟。在与其中一个“长官”(安全人员)谈论发生的事情时,我可以看出他只是想说,“早就告诉过你了... ...”。
我了解到我们的校长(至少是我的校长)只是想保护我们的公司。好消息是我们找到了一个折衷方案我可以完成我的工作而且校长们对我们的安全网络很满意!
奎迪
答案是,开发人员应该有两台机器! !
一个具有管理权限和足够的电源、内存、屏幕大小和可移植性以及 ADMIN 特权的开发项目,其中公司防病毒软件已经加载,但是当需要自动重置策略时,开发人员可以对其进行配置。.
一个拥有公司负载、策略、非管理员用户权限等的公司。.开发人员可以将其用于单元测试发布模式应用程序,因为一些开发人员有使用管理员权限进行所有单元测试的坏习惯。
是的,半条命1(和所有相关的模块: 反击,失败日等)需要管理员权限(至少在第一次运行时,我认为)在 Windows NT,2000,XP 等中正常工作。
还有,什么样的开发者不在午餐时间玩《反恐精英》呢? (肯定是个烂游戏)
在忍受了不得不在机器上开发而没有管理员权限的痛苦之后,我的回答只能是肯定的,这是必要的。
在我的公司,开发人员、工程师和我的老板(公司的所有者)都享有本地管理特权。我的老板也有网络管理权限,以防万一我被任性的总线撞到(或辞职)。其他人都会被关起来。
作为系统管理员,这种设置时不时会给我带来一些麻烦,尤其是在安装未经批准的软件时。然而,作为一个开发人员背景的人,我理解高级用户需要对他们的环境有更多的控制,因此,我愿意忍受偶尔可能出现的怪癖或问题。我会对他们的工作站进行常规备份,以防万一。
顺便说一句,我和老板之间的问题比和其他任何人之间的问题都多。有点像那个老问题“大象坐在哪里?”?任何他想去的地方!” 但是在一个小公司里,他本质上是一个“备份”系统管理员,没有太多的选择。
[对不起,英语不是我的母语,我尽力了: ] 好吧,
个人经验(我是一个 c + +/SQL 开发人员) :
在我以前的工作中,我曾经是窗口机器的管理员。我还对数据库拥有 dbo (而不是 dba)权限,包括生产环境数据库。在两年半的时间里,有8个人拥有这些疯狂的权利,我们从来没有遇到过任何麻烦。实际上,我们通过手动更新数据库解决了很多问题。我们可以做很多事情真正快速的热修复和开发。
现在我换工作了。我设法(哭了很多)管理我的窗口机器。但是 dev 服务器是一个红帽服务器,我们使用 ssh 连接到它。尝试安装 Qt 是一种折磨,配额限制,空间限制,执行和写权利。我们最终放弃了,并要求管理员为我们做这件事。两个星期后,仍然没有安装任何东西。我阅读报纸和使用 Alt + Tab 键的速度越来越快了。
我要求管理员权限,因为只有我的软件开发人员使用这台机器。
回答: “如果有进程,你就不能做任何你想做的事情。一旦启动,它就必须运行良好。”。
试图向一位非技术经理解释: “在生产环境或 UAT 环境中,我没有任何管理权限。但我的开发机器是不同的。如果我制造椅子而不是软件,你会告诉我,我不能把任何我想要的工具放在我的工作室,因为我的工作室需要看起来像椅子将被使用的地方吗? 我给 uat 一个可执行包。我用来构建它们的库和工具对于最终用户或安装软件包的家伙来说是不可见的。”
我今天还在等。我找到了一个解决方案,打开一个开发环境,去你最喜欢的在线评委那里,挑战自己。当有人看着你的屏幕,他会看到你在编程。;)
是的,如果您想要戊方或一些熟练的恶意用户获得立足点,以损害您的领域。
即妥协低级帐户 > 查找管理-> Mimikatz-> 提升权限-> 域管理。
所以,普通用户不应该是管理员。
此外,微软表示,UAC 不是一个安全边界,所以不要这样使用它。现实世界中有很多 UAC 旁路可用。
如果他们需要管理员作为他们的工作角色的一部分,然后给出单独的域本地管理员用户帐户用于安装软件只(与管理员权限对他们自己的机器只) ,从来没有一般使用或互联网访问。这应该有一个更严格的密码策略(例如15个字符的最小长度)。应该使用 Runas 功能。
任何普通用户帐户是管理员的环境都会导致安全灾难。