我曾经在组织中工作,而不是每个想要login到计算机的人创build一个新的Ubuntu用户,系统pipe理员只需将每个用户的ssh密钥添加到.ssh/authorized_keys
,并且每个人都以ssh
身份ssh
到计算机。 ) ubuntu@host
或者ec2-user@host
。 (顺便说一下,我也在实验室环境中看到过在共享的Mac mini上实现这个function)。这是被接受的做法还是反模式?
有问题的主机主要用于testing,但也有采取的行动通常需要每个用户的configuration,并跟踪由特定用户完成,如创build和推送git提交,目前使用通用的git用户。
是的,这是一个坏习惯。 它依赖于一个基本的假设,即没有恶意是(或者将要)在周围,没有人犯错误。 拥有一个共享帐户可以让事情轻而易举,没有任何限制 – 用户打破某些事情可以为每个人打破一切。
如果这个共享scheme的原因仅仅是为了减less创build新账户和共享configuration的pipe理成本,那么pipe理员可能应该投入一些时间在像Ansible , Chef , Puppet或Salt这样的自动化系统中,这使得创build用户在多台机器上的帐户非常简单。
首先,这并不使我感到震惊,而且我在一个非常安全的环境中工作。 每个人都有自己的用户和机器以及ssh密钥,并且在一台服务器上工作,如果需要的话,可以通过一个日志中继服务器作为root用户或其他用户使用。 我们所做的一切都logging为由ssh密钥的所有者完成,因此问责制是可以的。
替代scheme是什么? 许多事情必须作为某个用户来完成,更不用说根源了。 须藤? 对于某些非常受限制的任务,这没关系,但不适用于系统pipe理员。
但是我不确定你的最后一段,你的意思是有人可以推一个通用用户的混帐提交? 这会破坏问责制,破坏问责制是不好的。 我们从我们login的机器上进行混帐,并且使用我们的SSH密钥进行身份validation。
authentication,授权和记账(AAA)是一个经典的expression方式:您使用ssh密钥进行身份validation,您有权执行通用用户可以执行的任何操作,因为您的密钥位于authorized_keys中,并且您需要进行记帐,以便您的操作可以事后审查。
这显然取决于系统的使用情况。 如果是不时的系统testing,那对我来说是好的。 我们也有这样的系统。 如果公司没有任何种类的身份pipe理(LDAP,IPA),那么在随机系统上创build新的用户而没有任何远程控制是相当的负担。
但是,对于某些人犯错的日常工作,使整个公司不能操作不是一个好主意。
所有这些答案都解决了问责的问题,问责本身就是一个重要而真实的问题,但是使用共享账户还可以对其他用户进行不那么细微的攻击:
考虑一个攻击者创build一个恶意的ssh
脚本来logginginput的密码并将其放入该共享用户的PATH
中(这很容易完成)。 现在,下一个用共享用户login到该机器的人,决定ssh
到其他地方(这个时候与他的个人,非共享的帐户)可能有一个令人讨厌的惊喜。
基本上,在计算机上使用共享帐户就像在公共游泳池的足浴盆里喝酒一样。
一般来说,分享一个帐户是一个坏主意,原因如下:
而且肯定还有更多的缺点…但我不想进一步深入。
问题是,您可能需要共享一个帐户才能pipe理在所有pipe理员都能访问的特定用户帐户下执行的服务。
在这样的设置,你有可能分享这个帐户login(对于上述情况,我宁愿不这样做)或者单独login,然后切换到共享帐户(我会build议)。
审计工具仍然可以让你跟踪谁执行了什么,但仍然共享相同的帐户。