我有一台 AWS ubuntu 服务器。我们将密钥文件命名为“root-key.pem”。
假设(在此示例中)我有十名员工,我们每月增加一名新员工,每月解雇一名现有员工。建议采用什么方式来让用户使用管理员凭据访问服务器?他们需要能够运行 sudo 或拥有类似 root 权限才能修改数据库、端口、推送/拉取到 git 等。
最“简单”的方法是让每个人都能访问“root-key.pem”文件,但每当有员工被解雇时,我们都需要创建一个新文件,然后确保所有现有员工都可以访问该文件(也许在任何停机时间,开发人员可能无法访问它,或者正在等待它,等等)。
我认为首选的方法是为每个人创建一个用户(
sudo adduser travis
),然后将他们添加到 sudoers 文件中,并将他们的 pem 密钥添加到 .ssh/authorized_keys。这是我尝试实现的路径。它的工作方式是让用户访问服务器,他们可以运行 sudo,但是当人们尝试推送/拉取到 git(GitHub)时,这是一场噩梦。
实现 #2 的最佳方法是什么?或者这是一项非常难以实施的项目,而 #1,虽然在解雇某人时有点草率和不方便,但对于除非常大的组织之外的所有组织来说,都是首选方法?
答案1
一般而言,选择 #2。
在#1中,当有人泄露密钥时,每个用户都必须轮换密钥,相反,如果每个人都有自己的密钥,则只有受影响的用户需要这样做,并且可以将其从管理组中删除。
另外,在#2中,您避免管理和传输私钥,每个人都可以使用个人密钥,而您只需要知道公共部分。
但是 #2 很容易编写脚本,如果您有对用户公钥的编程访问权限,您可以构建脚本或使用某些配置管理软件从公共服务器检索它。例如,github 用户的公钥暴露在https://github.com/<user>.keys
您可以编写脚本中,该脚本可获取 github 密钥,写入用户的关联authorized_keys
并授予用户管理员权限,而用户只需知道您的用户的 github 名称即可。
答案2
无论如何,您都应该有一个密钥轮换策略root-key.pem
。以防有人可能丢失此密钥。但是,第二种方法通常是正确的。永远不应该建议共享凭据虽然我不怀疑这种情况经常发生。有很多方法可以潜在地实现和管理第 2 种情况。某种类型的目录服务是最常见的,但它不是唯一的选择。您应该考虑某种类型的配置管理来处理第 1 种或第 2 种情况,以便减少团队的开销。