我在一家拥有1000多名员工的公司工作。我们目前拥有程序开发人员,他们从事基于Web的项目(大约50人)。

最近由于安全问题,我们的IT和安全部门实施了一项限制,不再允许计算机上的本地管理员访问。整个公司都为工作站和服务器运行Windows OS。我完全同意删除管理员的决定,说实话,我认为那是很久以前的事了(因为该公司处理患者数据并要求遵守HIPAA)。不幸的是,我相信他们把决定做得太过分了。我假设将为合法需要管理员访问权限才能完成工作的用户(例如,我的编程团队)创建一个子组或AD组,例如保留管理员访问权限的Tech组。但是,情况并非如此,唯一的组为网络和帮助台人员创建了一个特定的Admin组。

主要的问题是,作为Web开发人员,我们运行需要本地管理员访问权限的程序,但不幸的是,如果没有以管理员身份运行这些程序,我们将无法完成工作。示例程序包括用于ASP.NET Web开发的Visual Studio,用于本地开发的MAMP,作曲家等。我相信这些程序需要管理员访问权限的主要原因是因为它们需要运行和修改本地IIS,命令行等。

基本上没有关于何时删除本地管理员访问权限的通知。在大约2天的开发团队能够工作之后,我和其他团队负责人基本上对IT员工大喊大叫以提出解决方案,他们最终承认并找到了一个第三方程序,可以作为通行证,即使我们没有本地管理员访问权限,管理员也可以创建某些程序以管理员身份运行。

不幸的是,我们用于本地管理员访问的该程序存在令人难以置信的错误和不可靠,并且并非来自信誉良好的来源,而且那里似乎没有太多替代方案。 (我不想公开我们使用的程序。)

我的问题是,通常不允许程序员/开发人员在公司中访问本地管理员吗?并且,如果这样做是通常的做法,那么开发人员如何以本地管理员身份运行所需的程序?

有关我们网络环境的更多信息(并不是真的与我刚才想添加的问题有关):


我们使用AppBlocker阻止不在批准列表中的程序
我们使用电子邮件安全阻止程序,该程序执行诸如扫描附件并将附件转换为PDF等操作。
我们在所有工作站上至少有2个主要的防病毒程序。
网络及其服务器非常隔离,用户只能访问他们合法需要访问的某些服务器,文件夹和数据库。


评论

鼓励IT与开发之间摩擦的公司政策是一项冒险的政策。如果有一群人可能严重破坏IT部门的安全工作,那将是开发人员。良好的公司政策旨在使IT和开发部门结合其集体知识来增强整体安全性。强迫IT为发展设置障碍会适得其反。如果有足够的动力,人们将开始寻找创造性的解决方法。开发人员的创造性解决方法将不利于整体安全性。

在系统上拥有两个单独的防病毒程序几乎可以肯定弊大于利。检测量的增加几乎可以忽略不计,同时使AV软件本身的漏洞暴露率翻倍,并且显着降低了受影响的系统的速度。

问题不一样,但又很相关,我是另一面的(在IT方面,IT人员也常常不同意这种疯狂的政策):security.stackexchange.com/questions/135359/…

我认为您不是真的要问这是否“典型”。但这是合理的,成本/收益是多少?以我的经验,大型组织通常会尝试这种做法。成本很高,并且极大地影响了开发人员的工作效率,但是“安全人员”通常不在乎,因为它被SEP领域所包围(Somebody Else's Problem)。如果要摆脱这种情况,您不太可能会发现这不是典型的事情,而是昂贵的。公司讨厌昂贵。

@Jacco更不用说在不信任开发人员自己的计算机与同时信任他们开发在公司服务器上运行并处理敏感最终用户信息的自定义代码之间的认知失调了。如果他们无法在没有保护的情况下将病毒从计算机中清除,我不希望他们开发自己的应用程序,以免因操作不当而受到罚款。

#1 楼

这是来自一家对安全性感兴趣的软件公司的数据点。我知道这在类似的组织中很常见。

有很多网络。它们在物理上是分开的并且是气密的,并运行不同的颜色编码的网络电缆。

每位员工都有一台“管理”机器,该机器可以连接到Internet(通过代理)以进行电子邮件等。所有用户都被严格锁定,并且具有严格的设备和访问控制。 />
除此之外,每个开发人员都有一台“工程”机器。这具有完全的管理员访问权限,并且用户可以执行任何喜欢的操作。但是,它仅连接到工程网络(没有通往Internet的路由)。

在大多数软件开发环境中,这可能是极端的,但是在组织中,对高安全性和开发人员自由度有冲突的要求,这是一个常见的解决方案。

要回答您的问题,是的,允许开发人员进行管理员访问是很常见的,但这并不总是意味着管理员可以访问可能导致信息安全问题的计算机。

评论


+1,我们公司中的一些开发团队使用相同的做法。尽管我们之间没有差距,但开发网络仍然存在。我们使用VLAN处理它。

– Philipp
18年7月16日在10:58



嗯,没有互联网连接的开发机器似乎是一个相当严格的限制。

–重复数据删除器
18年7月16日在23:41

@Nelson:您如何审查通过USB记忆棒复制的内容是安全的?虽然您显然需要允许从管理复制到工程;您允许复制到管理机吗?因为如果两者都允许,则在棒上交换的数据与在物理网络电缆上(直接在两台机器之间)交换的数据一样安全,因此这只是一个较慢的过程。

–更
18年7月17日在13:16



这不是一个轻率的决定。这将对发展产生重大影响。只是指出一些后果,而不是说不可能做。从诸如nuget / npm软件包之类的技术问题(您将无法实时访问公共提要,将需要手动复制所有内容),还有更多琐碎的问题(开发人员无法再从StackOverflow复制/粘贴)。实际上,即使我们同意审查代码是必要的(也就是imo),我们都必须这样做(手动输入整个内容将不利于高效工作)。

–更
18年7月17日在14:37



不得不为员工购买第二台PC /笔记本电脑似乎是使人的生产力降低的一种相当昂贵的方法

– Jungkook
18年7月18日在13:51

#2 楼

根据我的经验,开发人员通常在自己的计算机上具有管理员访问权限。他们通常也没有自己计算机上的管理员访问权限。但是,在后一种情况下,通常会进行一些调适,这样他们就可以在没有太多摩擦的情况下完成工作。

一种非常常见的解决方法是访问工作站上的Hypervisor(无论是Windows附带的某些版本的VMWare还是Hyper-V),以及在该虚拟机中创建和销毁VM所需的特定权限。所需的虚拟机管理程序(Hyper-V / VMWare),包括在虚拟机具有对来宾OS的管理权限的情况下创建VM。通常,这些虚拟机中的一些即使不是一直运行也可以长期使用,在这里很少需要为从头准备整个虚拟机做一个快速测试,以便快速测试需要管理员的东西

Hypervisor可能配置为或不允许配置为允许对其VM进行Internet访问;我已经看过这两种方式,尽管我个人非常赞成应该允许互联网访问……至少对于我最有经验的发展类型而言。但是,如果允许Internet访问,则可以并且至少应将其配置为强制VM进入与公司网络其余部分分开的专用VLAN。我不确定是否可以直接通过Hyper-V或VMWare强制实施,但是您可以在许多网络交换机的端口上使用802.1x,以防止未经授权的机器(包括开发者的VM)访问某些VLAN。然后,您可以向开发人员提供一些有关如何在VM中设置vlan标签并让他们知道在其交换机端口上将允许哪些vlan标签的教程。我还认为,通过培训只是作为一项政策法令,而不是通过技术措施来实施此认证,也许偶尔进行友好的审核以鼓励合规并确保开发人员知道它的重要性。

而且,当然,这与为开发人员提供足够强大的机器以一次运行多个VM的时间相吻合。

评论


这听起来像是一个很好的解决方案-一个很好的解决方案-但我没有足够的Windows admin-foo来知道它是否真的能以这种方式工作(在没有一般本地admin privs的情况下旋转虚拟机的特定特权或权限)-因此,IMO通过链接到一些文档/白皮书/菜谱项目/或证实这一点的链接,可以大大改善此答案。

– davidbak
18年7月16日在20:59

@davidbak更好吗?

–乔尔·科恩(Joel Coehoorn)
18年7月17日在2:02

是的,很棒的链接!本·阿姆斯特朗是要去的人!加上有关VLAN内容的详细信息。

– davidbak
18年7月17日在2:33



@davidbak我曾经在没有管理权限的情况下安装了虚拟机监控程序(VirtualBox)的计算机上工作

– anna328p
18年7月18日在9:14

虚拟机还为开发人员提供了其他好处。一台物理计算机可以承载多个VM,这些VM运行不同的OS版本或被测软件的版本。由于它们是一次性的,因此通过恢复到选定的检查点可以更轻松地重复测试。

–雷德瓦尔德
18年8月9日在19:43

#3 楼

我为一家相当大的投资管理公司(约6000名员工)工作,开发人员是我们批准的本地管理员访问权限之一。我们告诉他们不要安装任何软件,因为这是由本地桌面/软件合规性处理的。

我们还有一个Developers AD Group,它允许成员更改其计算机上的执行策略而无需本地管理员。

评论


这不能回答问题。它没有给出任何解释,如果或者为什么这将是“典型的”。

–汤姆·K。
18年7月16日在14:43



@TomK。它回答了一个实际的问题,即“为什么我的组织使我的生活变得非常非常艰难,似乎没有什么充分的理由,我该怎么办?”。行动党显然正在努力使这种做法(坦率地说是离奇和偏执)适应他的世界观。人们试图指出他们的组织如何平衡偏执狂的安全人员和开发人员的实际需求。

– Steve Sether
18年7月16日在18:08

@Steve-不幸的是,这与从某些极端安全人员那里得到的观点一样具有极端的误导性。保护组织免受内部威胁并不偏执。实际上,对于许多人来说,这是对其生存的最大威胁。

–Rory Alsop♦
18年7月17日在9:45

#4 楼

以我的经验,允许和禁止本地管理员访问是很常见的,就像后者的肮脏解决方法一样普遍。 -因此,您应该问自己:

本地管理员权限对您的网络造成的威胁越严重?

答案应该是:无-访问Internet中的资源您的网络应该受到每个用户的限制,这与该用户在其计算机上具有本地root,admin或masterOfTheUniverse访问权限这一事实完全无关。如果用户有权炸毁您的网络,则本地病毒甚至不需要管理员访问权限,它可以使用用户帐户炸毁您的网络。 -而且,如果用户帐户无法访问您网络上的某些内容,则本地管理员权限将不会对此进行任何更改。

您应该信任您的开发人员以负责任的态度使用合理的安全配置来处理自己的计算机。您公司中的本地管理员权限仅应对以下方面构成危险:本地计算机。因此,您放弃本地管理员接受的唯一风险是,开发人员会破坏自己的计算机(他已经可以喝一杯咖啡了)。

附录:您应该让开发人员有机会在需要时使用本地管理员权限。这并不意味着他们应该一直使用不安全的管理员帐户登录,但是您应该相信他们可以在需要时明智地使用它-无需每次都获得许可。

为什么开发人员应该具有本地管理员权限

您的开发人员就是您委托您设计企业核心业务的人员。当今大多数公司都非常依赖其软件,因此开发人员是塑造公司非常重要部分的重要资源。

首先,由于开发人员可以在本地计算机上配置,安装和测试所需的一切,因此可以提高生产率。他可能需要某些软件,帮助工具或不同寻常的配置来尝试其软件的某些方面(例如,在较旧版本的OS或较旧的驱动程序/ SDK上运行其软件)。

其次向开发人员展示您如何看待他们(这是我认为更大的好处)。您向他们证明了自己对自己的计算机的信任-您将开发人员视为负责任的IT精明人员,他们无需保姆就可以管理自己的计算机。 (在许多没有开发人员本地管理员的公司中,他们将不得不为他们所需的每个安装/配置要求技术支持或安全性。而且在许多情况下,这些技术支持人员对软件的了解要比您的高级首席开发人员少。 ,但是他们仍然必须乞求他们只需要完成工作的事情,这可能会非常令人沮丧。)

评论


@Downvoter关心评论如何改善我的答案,或者为什么您认为这是完全错误的?

– Falco
18年7月23日在10:30

@JamesSnell Visual Studio需要本地管理员权限,这是(imo)很大的原因,因为没有Visual Studio进行开发就不会发生。您不同意其余的评论,只是需要本地管理员权限。

–贝儿
18年7月24日在6:15

@JamesSnell我是深度防御的主要倡导者,但我只是没有看到本地受限帐户可以保护任何有价值的东西,除了本地硬件。可以通过用户权限xkcd.com/1200访问任何商业价值

– Falco
18年7月24日在6:35

对我来说,深度防御包括加密的硬盘驱动器,本地帐户上的强密码,安全的硬件模块...但是单用户笔记本电脑上的本地用户权限限制只是安全区

– Falco
18年7月24日在6:39

也许我应该编辑我的答案以明确说明这一点-我认为开发人员应正常使用安全帐户,但如有必要,可以选择启用本地管理员,而无需填写表格并寻求许可。我相信他们会明智而谨慎地使用此特权

– Falco
18年8月6日在20:20

#5 楼

在我的职业生涯中,公司规模较小(少于100人),我们始终拥有本地管理员权限。我们要么拥有由IT维护但拥有权利的真实台式机,要么被允许拥有由我们自己完全管理的各种虚拟机。

如果我们没有本地管理员,访问时,我们会尝试各种错误的“解决方案”,就像您的情况一样,这会导致安全性降低。这是其中一种情况,限制实际上导致了其意图的相反。

评论


这不能回答问题。它没有给出任何解释,如果或者为什么这将是“典型的”。

–汤姆·K。
18年7月16日在14:45

@TomK。这部分地回答了问题。如果10人中有10个人说“我一直都拥有管理员权限”,那么这就是答案。没有一个人能规范地回答这样的全球性问题。每个答案在一定程度上都是轶事,就像乔所说的那样是“数据点”。 (乔还声称“我知道这在其他组织中很常见”,但未添加“我知道”。)

–彼得-恢复莫妮卡
18年7月17日在16:13

@ PeterA.Schneider:正确,通常没有一个人可以凭自己的经验就这样的一个全球性问题回答经典。但是幸运的是,有一些被称为“最佳实践”的东西被写下并接受审查。其他可能性是研究或文章。仅说“对我来说就是这样”是不够的。

–汤姆·K。
18年7月18日在7:16



@TomK。没有办法知道某种调查的典型不足,因此回答这一部分问题就不会发生。

–安迪
18年7月20日在0:11

@TomK。这些调查或研究即使存在,也将是垃圾。如您所说,它仅仅是可能的“典型”的集合,仅仅是因为某些典型的事物并不意味着它是正确的方法。

–安迪
18年7月20日在22:12

#6 楼

在大型组织的一个相当小的部门中(部门中大约100个部门,整个组织中大约3500个部门),我们选择了一个中间解决方案:


sysadmins有2个帐户,一个(非管理员)甚至用于本地计算机)(用于非管理任务(邮件,文档版本等),还有一个具有AD管理员特权的对象,该特权仅用于AD管理
所有其他用户只有一个非管理员帐户
开发人员(和一些超级用户)被提供了具有本地计算机管理员权限的本地帐户。当需要本地管理时,应该很少使用它。

拒绝管理员对开发人员的权限将导致生产力下降,这对任何组织来说都是直接的代价。选择在本地计算机上为主帐户或辅助帐户授予管理员特权的选择应取决于管理员操作的频率:


如果每天多次,我会建议使用主要帐户。
如果每周少于一次,我会使用辅助帐户。

如果您介于两者之间,请选择自己的...

评论


是的,我们也是这样做的。尽管我们的AD管理员帐户在每台计算机(属于域/广告的一部分)上也具有本地管理员权限。

–罗马人
18年7月16日在13:57

今天,我们与IT团队举行了一次会议,我打算将这个答案标记为已回答,这仅仅是因为这是他们为我们提供的解决方案。

–TroySteven
18年7月17日在1:53



注意事项:AD帐户有多少互联网访问权限。在我的工作场所,我的广告几乎没有互联网(Visual Studio更新除外)。我必须使用我的普通帐户访问Internet /下载/等。

–奈杰尔Touch
18年7月19日在14:51

#7 楼

根据我在大型组织工作的经验,开发人员除了拥有特定于开发的资源以外,对其他任何事物都拥有完全权利是绝对不常见的。
您的组织似乎处于大小边界,所以...
听起来您的组织应该开发一些更成熟的开发实践了。
公平的说,这种变化并不是操作团队应该惊讶于开发团队的事情,就像它是在您的案子。
安全性和开发人员的生产力不必为您的公司互相反对。您可以通过在无法访问核心业务网络上的资源的网络上执行开发活动来完全避免这种冲突。
您还是不会针对生产资产进行开发,对吗?
如果您是,那么就不应该-这样会给您的资产带来重大风险,尤其是资产的可用性。
更好的做法是拥有一个完整的开发环境设置,该功能可以复制功能和数据集的关键部分(不包括公开有关公司中真实个人的私人信息)。这种复制的环境使分离相当简单。您的开发人员需要在此开发环境中完全控制机器。他们不需要完全控制开发环境之外的资产。
有多种方法可以实现单独的开发环境:

完全分开的硬件(工作站,服务器,网络设备,等),是否已连接到互联网
虚拟环境(包括虚拟网络);托管在您的硬件上或通过云服务提供商托管,并且可以连接或不连接互联网
上述两种方法的组合

您还可以为在开发环境内外进行的任何共享实现某种桥接(如果尚未使用某种服务)。
开发环境应像大多数网络一样受到保护。不要在不考虑访问控制或基本安全措施的情况下,将所有代码和开发资产投入在线。
我还看到一些地方将这一步骤进一步发展并在一个环境中编写所有代码,然后进行构建/将其全部部署到另一个完全独立的环境中进行集成测试。

评论


我不想写自己的答案,而是希望以此为基础。在我的工作中,我们区分:1)开发服务器; 2)其他非生产(QA,TST等)服务器;以及3)生产。开发人员可以拥有管理员权限来进行开发工作,但是他们希望将其代码和其他资产打包在一起,并提供给我们以在其他非产品环境中进行部署,以及有关需要进行任何操作系统调整的所有文档。做完了。我什至不希望他们在那些第2组系统上引入与Prod的差异,这违背了第2组的目的。

– Monty Harder
18年7月16日在17:54



这是正确的答案。开发人员应该(必须)对其开发工作站具有管理员访问权限,但不应从这些工作站访问生产系统,具有敏感数据的数据库等。

–克里斯·贝克(Chris Becke)
18年7月17日在5:54

在GDPR时代,让开发人员脱离生产系统几乎是一项法律义务。法律的好处是它们可以胜过公司内部的政策。

– MSalters
18年7月17日在13:00

您不需要大胆的文字来阅读您的答案或表达您的观点。



–吕克
18年7月17日在15:32



#8 楼

首先,您需要了解“什么是常见的”或“典型的”无关紧要,因为:
这种情况通常是可怕地处理的。

如果某人(无论是承包商还是雇员)都需要本地管理员访问权限,则这是安全团队/人员(无论是谁)的义务。负责该特定区域-寻找解决方案。有多种解决方案:创建隔离的VLAN,虚拟机和其他虚拟机在此命名。

只是听到“我们在我们的计算机上也拥有管理员权限”,询问其他组织的设置没有任何意义。您将找不到与您的基础设施完全相同的基础设施。唯一重要的是,安全团队/人员计划一个安全的解决方案,然后由该特定组织中的IT部门实施该解决方案。

如果已实施的解决方案无法正常运行,因此仍然使您无法工作,请再次与安全团队/人员联系。如果这样做不起作用,请将其提交给您的老板或承包商。

您现在正在做的是烧钱,而没有其他任何事情。如果该游戏的其他参与者现在还没有弄清楚,那就不好了。但是,如果这样做,那就很好。

评论


在所有现实中,由于您评论了Marcel的回答:看来您的回答没有回答问题,实际上却明确拒绝这样做。如果要鼓励OP提出其他更相关的问题,请考虑在评论中进行。

–彼得-恢复莫妮卡
18年7月17日在16:19

不回答问题,给出不同的观点或试图用另一种眼光向OP展示问题之间是有区别的。

–汤姆·K。
18年7月18日在6:59

#9 楼

这从根本上取决于上下文,尤其取决于您的威胁模型。

在某些组织中,通常使开发人员能够完全控制其开发工作站,以使他们能够在自己的操作系统上安装自己的操作系统。

在某些组织中,所有开发工作都必须在封闭的环境中进行,以防止将电子设备带进或带出。

大多数组织都介于这两者之间两个极端。开发环境的锁定程度越高,开发人员的生产力就越低,失去最佳人才的可能性就越大。您的组织需要评估受损的开发人员工作站的可能性和影响,以及他们愿意降低开发人员的生产力以减轻这种风险的程度。

#10 楼

我已经看到了两种可行的方法。


使开发人员可以对其计算机进行管理员访问。这是最简单,最常见的方法。通常,这是最佳选择。
在组织中创建一个团队,其整个工作就是确保开发人员可以在没有管理员访问权限的情况下工作。该团队通常为3-4人。您会发现,随着使用容器和/或虚拟机,开发人员的硬件需求将急剧增加,因此为所有开发人员购买新硬件的预算会有所增加。当您推出产品时,请先从一组早期采用者开始,然后逐渐将所有开发人员转移到没有管理员权限的计算机上。此过程至少需要六个月。

如果您执行公司现在的工作,那么开发人员将忍受一个月左右的时间,然后开始寻找新工作。

评论


@Luc许多开发工具严重依赖本地管理员特权。例如,MS Visual Studio不需要所有本地管理员权限即可正常运行,但需要某些管理员权限。 DEBUG_SE用于调试,用于-很好地管理服务的服务管理,为数据库创建权限,并且我可能会花很长时间。现在检测为什么开发人员无法运行数据库脚本,调试应用程序或安装服务可能非常耗时,这既是所述开发人员的时间,也可能是专职人员的时间。

– mg30rg
18年7月19日在9:19



@R您可能想阅读'devops',您会发现现代开发人员有非常合理的动机想要管理员访问权限。对我个人而言,无法控制我的机器是巨大的危险信号。如果事先告知,我将拒绝您的工作机会,否则,我将拒绝前两个星期。

–杜威
18年7月20日在8:26



@R ..我定期启动一个程序,然后将调试器附加到该程序,以便可以读取其内部状态,暂停其执行并使其执行任意代码。这需要管理员权限。如果您禁止我这样做,我的生产力将会下降。

– UEFI
18年7月20日在11:13

@Luc最好授予开发人员管理员访问权限,因为它更便宜。这意味着您不必全职雇用3-4名员工即可保持开发人员的机器正常工作并投诉您的安全策略。

– UEFI
18年7月20日在11:16

@R ..因此,运行Java脚本的Web浏览器应该能够访问系统上其他程序(例如密码管理器)的内部状态?我认为没有安全问题....

– UEFI
18年7月20日在15:08

#11 楼

您实际遇到的问题是称职的IT部门正在尝试实施一个卑鄙的规则。您确实只有一个选择,可以为开发人员提供有效的管理员访问权限。

我不断看到相同的建议,一遍又一遍,这归结为开发人员拥有管理员但没有Internet的另一台计算机。如果您想拥有瑞士奶酪的安全性,那就去吧。典型的开发人员计算机上安装的软件列表通常比屏幕长。其中许多服务器只有一个选项可以检查更新-互联网。您不能通过WSU修补它们,因为WSU不知道它们的存在。

这是争论所不了解的地方:违反开发人员的个人帐户不是出发点;这是大奖。没有理由从那里去做管理员。违反者有能力修改代码库以插入后门。在开发人员的盒子上获得管理员并没有那么有趣。

当您想拒绝管理员时,您要防御什么?有人在访问代码库吗?不,有人用它作为出发点吗?如果您的生产局域网不受开发人员的保护,那么您在做错什么。开发人员安装他们不应该安装的东西?否。开发人员拥有一个编译器,并运行该编译器输出的代码。这也可能是运行未经批准的软件的定义。

我听说过很多关于该政策的故事,即开发人员不具备管理权限,但是IT部门却反其道而行之推翻了安全策略。我听说过更多的IT信息甚至找不到。我听说有些开发人员的经理告诉开发人员绕过安全检查。

或早或晚,组织会学会只授予开发人员管理员。大多数可能最终没有真正了解它的人。

将开发人员本地管理员放在一个连接到互联网和本地域的盒子上,并准备好应对可能产生的后果,这是更明智的选择。保护生产。应当以高特权级别访问生产的人员较少,因此锁定更加容易,而主管组织也学会了这样做。

但是突然之间像这样带走管理员几乎总是会导致损失更重要的开发者。您不想那样。

由于您想谈论Windows站点,因此有一个轶事比大多数人的数据都重要。 Microsoft提供给其开发人员本地管理员。 Windows的制造商得出的结论是,没有给予开发人员管理员不值得的好处是不足的。因此,您应该执行相同操作。

评论


您可以为此提供参考吗? “微软授予其开发人员本地管理员。Windows的制造商得出的结论是,不给予开发人员管理员没有任何好处,这没有任何价值。”

– Soenhay
18/12/18在19:19



@Soenhay:blogs.msdn.microsoft.com/oldnewthing/20110927-00/?p = 9543以及大约50个其他

–约书亚
18/12/18在20:00

#12 楼

我在一家真正相信安全性(或他们认为如此)的公司工作了一段时间。

他们偶尔会组织一次社交活动,例如打保龄球。加入是免费的,但是您必须将名称添加到放置在共享文件夹中的Excel文件的列表中。该文件夹专用于社交活动。

那么,您想打保龄球吗?您想将姓名添加到该列表中吗? Ohhhhhhhhhh,亲爱的……并不是说他们可以让所有人编辑该文件,对吗?您必须请求适当的权限。

这是过程:


打开公司的网站
查找包含准备好一些模块的部分请填写
查找并下​​载名为“发行表”的文档
打印
根据您的要求填写并签名
交给秘书
秘书将在第二天早上将所有这些请求转交给经理
经理迟早会签署
秘书将其带回给您
此时您可以扫描
打开IT部门用来处理票证的站点
创建(再次)描述您需要的票证,并附加扫描的发行表。不要忘记设置紧急程度,从一小时到两周。
最终,IT部门会(希望)做到这一点

平均而言,它需要3-4天才能完成完成。在某些情况下,数周。真的很有效吗?嘿,您要求访问某个文件夹但忘了提及该子文件夹?哈!您已经赢得了另一回合!你猜怎么着?由于他们遵循某些质量检查流程,因此他们在许多不同的文件夹中组织文档。当一个新同事来时,他可以轻松地花费数周的时间来尝试获取他所需的所有权限。

现在。


您认为经理们是否愿意检查一下他们在签名什么?当然不是。他们认识了发行表,就是这样。
您认为秘书正在检查更多吗?也许他们尝试过,但是他们真的能理解给我特定计算机上特定文件夹的读/写权限的含义吗?当然不是。
您认为IT部门对紧急情况的要求很高吗?当然不是。

那么,这种方法导致了什么呢?那就是说,如果您想窃取公司曾经制造的一切,则只需带入USB驱动器并将其连接到PC。无法访问该“ Confidential_Documents”文件夹?索要它,他们会签名。如果紧急的话? “嗨,我需要该文档,但我无法访问它,您能给我您的密码吗?”

因此,这种“安全模型”非常缓慢,笨拙且令人沮丧,并且没有做到这一点。完全不能保护自己的财产,但至少没有人可以轻易地与保龄球比赛的参与者打成一片(必填xkcd)。

请不要成为那个公司。正如其他人所说:不要问它是否普遍(只是),而只是问它是否有意义。答案是:不,不是,除非您的公司喜欢烧钱。

评论


这可能就是为什么我的公司决定阻止USB驱动器的原因……我认为他们的下一步将是物理移除它们,并为每个人提供蓝牙鼠标和键盘。

–卡拉
19年8月7日在13:02



#13 楼

是的,不是-我们的高级开发人员确实拥有一个单独的管理员帐户,该帐户可让他们在需要时进行提升并安装应用程序/更新。但是,不允许他们使用该帐户登录计算机。他们的管理员帐户还允许他们对常规开发计算机的管理员访问权限,以提供比通过IT团队更快的支持。

这些全部与应用程序白名单/黑名单,强大的密码策略,可移动设备禁止,网关代理,DLP策略,严格的AV规则等结合在一起。他们的机器经过例行审核,IT团队的知名度很高。

就个人而言,我希望开发人员没有本地管理员访问权限。我们可以调查需要UAC的应用程序(查找所需的文件夹,regkey等)并缓解UAC提示,但这需要时间和研究,并且并非所有公司都拥有这样做的资源。因此,我们会一半地与他们会面,并期望双向信任。我们还使用多种公司产品来强制执行多种规则,因此可以减轻一些负担。

评论


这不能回答问题。它没有给出任何解释,如果或者为什么这将是“典型的”。

–汤姆·K。
18年7月16日在14:46

#14 楼

我们通过使用虚拟机解决了这个问题。

每个开发人员都有一个普通用户帐户,没有任何管理员权限。该用户帐户中有一个虚拟机,没有任何互联网访问权限。开发人员可以在虚拟机内部以管理员权限运行其应用程序。

这样,我们就可以将互联网访问权限和重要数据与管理员权限的使用分开,同时仍然获得一种方法来运行必需的程序。封闭的环境。

评论


我们仅假设OP需要(本地)管理员权限才能运行开发环境。例如,上面提到的Microsoft Visual Studio和SQL Management Studio严重依赖于Admin Privileges。这些软件高度依赖(在更新,在线帮助,源代码控制方面,我可能会花很长时间)的另一件事是Internet连接。具有没有Internet连接但提供(本地)管理员权限的VM意味着要在困难的地方进行切换。

– mg30rg
18年7月19日在8:55

#15 楼

我和您的软件开发人员在同一条船上。我们公司最近从具有管理员访问权限的工作站访问了无管理员权限的虚拟机。这严重地影响了我们的工作流程,以至于我发现自己什么也没做,只能为IT部门阅读文章,以管理员的身份运行我的产品。

管理产生的东西是两个虚拟的计算机方法。

我们的虚拟机之一是带有电子邮件,Web访问和Microsoft Suite的基本商务计算机。这满足了进行通信的需要。

另一个虚拟机具有本地管理员权限,但与Internet完全断开。这样,我们无法在该计算机上下载任何内容。 (尽管我们仍然可以从另一个下载它并复制下载内容。)我们仍然可以访问内部站点,并将Visual Studio使用的一些东西(Nuget,Symbols等)列入白名单。

这种方法使IT部门对其安全性感到满意,同时还向我们提供了管理员访问权限。

唯一不利的是,我们不能在一台机器上同时使用双显示器,因为我们需要将每台机器都安装在自己的显示器上,但是我们通常只使用一个屏幕来存储代码,而另一个屏幕用于Web。仍在浏览。

评论


这适用于基本的Microsoft商店,但是在进行跨平台开发(Python,Java,Go,NodeJS-都有自己的框架/软件包存储库/ URL集,需要将其列入白名单并且可以更改而不会另行通知)时会失败。它还会阻止尝试任何新内容-因为您必须跳过循环才能将URL列入白名单,只是为了测试如果测试无法顺利进行就可能永远不会使用的内容。想测试流星吗?祝您好运,请提交票证以将网址列入白名单,并等待2周

– Erin Drummond
18/12/2在22:52

@ErinDrummond非常正确,这是此方法的主要陷阱之一。

– Jimenemex
19年2月5日在15:46

#16 楼

简短答案:是的,通常具有对选定组(例如开发人员或IT管理员)的本地管理员访问权限。基本上,那些可以通过Admin访问更轻松地完成日常工作的人,而通常的上班族每个月最多需要一次,并且通常要少得多。

长答案:这取决于...

对于一般用户而言,您无需进行全面的风险分析即可了解,管理员访问可能会导致发生问题的可能性很大,而抵消这些风险的好处却很小。

但是,对于开发人员(和其他一些团体)来说,绝对有必要进行风险分析,并要求根据事实,情况,风险偏好和公司的威胁状况对此事做出适当的决定。指向“最佳实践”并做一个空白的“一刀切”的做法是典型的解决方案,通常是由负责信息安全的人员缺乏时间和/或知识来计算数字并得出结论的基于事实的风险处理决策。

并不一定意味着它们是错误的。全面的分析很可能会得出相同的结论。

从编写的角度来看,这是一个未知数。您可能需要进行适当的风险分析,将您的专业知识添加到等式的缓解成本中,将当前措施的生产率损失和其他影响数字化。这需要权衡信息安全人员识别的风险。

还有其他相关的措施。我有时推荐的一种典型解决方案(我是专业的信息安全架构师,所以经常被问到这些问题)是将开发人员网络与普通办公网络分开,以包含较高风险的区域。充分加固开发人员计算机,并坚持使用本地防火墙和最新的病毒防护,您可以很好地应对典型的攻击情况。如果您的公司有一些外部风险,您还可以为开发人员增加额外的意识培训,这样他们就不会轻易成为针对性攻击的牺牲品。

我亲自监督了两种开发人员环境,只需一点努力,两者都可以很好地工作。仅仅以一种既定的工作方式来解决问题就很糟糕,而您所参加的反冲是可以预料的。但是完成的工作已经完成,不专注于此并展望未来可能很明智。

#17 楼

隔离网络

您应该具有相对隔离的环境以进行开发,测试,生产和业务。这样,您的开发人员就可以在需要的地方享受特权。

正确的隔离可以防止未经授权的更改,限制恶意软件的传播,并阻止数据泄露。

发生什么事情了?

开发

开发网络是进行编码的地方。如果开发人员想要测试代码段或运行某些程序而无需打包代码以部署到测试/产品中,则开发人员应具有管理权限。

计算机为您的应用程序运行IDE,源存储库和必备的应用程序/框架。专用的协作工具或其他特定于开发人员的应用程序是合理的。

测试

测试网络是对已编译的现成代码进行测试的地方。开发人员可能具有管理员权限,但是常规的系统管理员应正在部署应用程序。

部署应反映管理员将在内部应用程序的生产中维护的内容。它们应该是外部应用程序的客户就绪软件包(包括安装向导和数字签名,尽管使用单独的签名进行测试以防止意外发布)。

开发人员经常需要系统日志和调试访问权限,并且这些是他们应具有管理员权限的唯一原因。除非绝对必要,否则他们不应该参与安装,配置和测试。

生产

生产网络是您为客户和合作伙伴提供服务的地方。由于应该存在一个正式的部署过程,因此没有理由将其连接到您的开发/测试网络。

为了最大程度地减少互联网传播的恶意软件和意外更改的风险,请使用开发/测试/帐户业务网络应尽可能不具有生产访问权限,这将转化为有限的权限,在实践中偶尔会出现参数。

理想情况下,此网络将是完全隔离的,但实际上在生产服务器必须与销售,计费,计划,Netop和项目管理系统对接的世界中,这是不可能的。尽可能接近理想;这真的是我们所能做的。

业务

这是企业的主要通信网络。

电子邮件,Web浏览和合作伙伴连接都带来很多风险。您的开发,测试和生产网络应与这些风险尽可能地隔离。

详细信息,详细信息,详细信息

您的组织可能会过大。与处理灵活,安全的网络体系结构必不可少的大量细节相比,始终摆锤要容易得多。

开发人员可以对他们的机器进行管理员访问,而对管理员的风险最小。企业,如果:


有单独的,无特权的Internet访问帐户
每个环境中使用唯一帐户
环境之间存在限制性防火墙规则/ ACL
/>标准的安全措施如防火墙,Web代理,IDS / IPS等已到位

您的开发人员将需要四个帐户:


非特权开发人员帐户来访问Internet上的资源(如果他们不想从业务网络来回跳跳,这很麻烦)
特权开发人员帐户来配置工作站和测试代码
特权测试帐户来调试应用程序
用于电子邮件,Web,Intranet的非特权业务帐户

如果您让开发人员进行某些验证或质量检查工作,他们可能会在测试环境中也需要非特权帐户。

开发人员应无权访问生产网络,并且在业务网络上应无管理特权。如果暂时不能这样做,则应分离这些角色,否则应建立严格的变更控制流程。

#18 楼

尽管MS-Windows NT自诞生以来就已经是一个多用户系统系统,但以这种方式操作它并不是很容易,并且开发人员(包括Micosoft的)仍然倾向于忽略特权分离的想法。这种访问控制的文献资料很少,在培训中往往没有表现出来,通常很难通过UI进行访问,难以审计,缺少用于应用分隔的模式/工具....

在公平,即使是在Unix / Linux系统上,我也看到很多开发人员未能同时为真实用户和服务使用特权分离。但是,在任何平台上,给实现者分隔特权的障碍都比赋予他们完整的(本地)管理员特权更不利于安全性。

另一方面,尽管我对此一无所知在MS-Windows上进行开发时,我确实感到惊讶,运行Visual Studio需要本地管理员权限。而且,如果您需要管理员访问权限的唯一原因是停止/启动服务或重新配置服务,那么我对您没有太多同情-可以向指定用户提供此功能,而无需给他们本地管理员。 IIS7的一大变化是委托的管理功能。而且它总是很容易委派Apache,MySQL和PHP的重新配置。


短暂通知何时删除本地管理员访问权限


听起来好像是安全团队渴望达到他们无法提供的能力水平的问题(以我的经验,这很常见)。如果不进行适当的影响评估并考虑采取缓解措施以防止对生产力/安全性造成任何损害,他们就不应强加政策。


我们在所有工作站上至少有2个主要的防病毒程序


这是一种非常幼稚的方法,可以保护这些系统的完整性,并描绘出您必须处理的内容。


在这方面似乎没有什么替代品


现在就此进行讨论可能收效甚微。

总体而言,听起来好像您正在与当地的安全团队竞争。他们不了解您需要做什么,您也不了解如何实现他们的目标。似乎双方都不想谈判。没有现成的工具可以解决此问题。

评论


Visual Studio具有这些管理员权限的原因之一就是启用了进程调试功能,而该进程通常由其他用户拥有,IIS通常在系统帐户下运行。一旦开发人员调试了另一个进程,他们便可以禁用病毒检查程序等,以90%的速度删除的磁头速度变慢,这在他们中并不罕见。因此,在不让开发人员使用调试器和信任开发人员之间的选择。

–伊恩·林格罗斯(Ian Ringrose)
18年7月17日在8:46

....然后我想起了为什么要避免在Microsoft Windows上进行任何编程:)

–symcbean
18年7月17日在10:37

事实不正确。 Visual Studio将在没有本地管理员特权的情况下运行,实际上这是默认设置。而且,如果您将调试权限分配给开发人员帐户,则意味着Visual Studio不需要经常提升为管理员权限。完全可以避免吗?不,驱动程序开发人员将绝对需要例如管理员权限。

– MSalters
18年7月17日在12:56

Visual Studio将在没有管理员特权的情况下运行,但是在某些情况下,如果没有管理员特权,它将无法正常运行。是的,它不需要所有本地管理员权限即可正常运行,但需要某些管理员权限。 DEBUG_SE用于调试,用于-很好地管理服务的服务管理,为数据库创建权限,并且我可能会花很长时间。当然,可以(每天)与安全团队联系并要求某人每天需要的某些权利,但是您知道它的名字吗?生产力谋杀案。

– mg30rg
18年7月19日在9:12

@Joshua您认为调试以系统帐户运行的Windows服务需要什么?在Windows开发中,这种情况绝非罕见。

– mg30rg
18年7月22日在15:10

#19 楼

在那些开发人员如此无用/恶意以至于滥用这些特权的公司中,或者在“ IT和安全”部门由笨拙的下意识的白痴管理的公司中,只有拒绝开发人员的本地管理员访问权限才是典型的做法他们的内部圈子是明显的安全威胁,使它们看起来很糟糕。

考虑到Windows附带一个非常好的免费程序,考虑到您的“ IT和安全”部门还要求两个防病毒程序,我非常确定您可以确定组织中的问题所在,然后从那里开始工作。