【问题标题】:How to manage EC2 key pairs for multiple users?如何为多个用户管理 EC2 密钥对?
【发布时间】:2020-08-07 14:07:50
【问题描述】:
我在一个有 8 人的团队中工作。我需要创建一个 EC2 实例。就在我创建实例之前,EC2 允许我创建一个密钥对然后下载它。
问题是:那样我需要为所有 8 个团队成员共享同一个私钥。
现在,如果明天有一个队友离开会怎样?我需要使用新的密钥对重新创建机器。
如何正确管理密钥,以便每个团队成员都拥有与他/她的 IAM 用户关联的唯一密钥,因此一旦他/她离开公司,我将能够使他/她的密钥失效?
【问题讨论】:
标签:
amazon-web-services
security
amazon-ec2
private-key
key-pair
【解决方案1】:
尽量避免将实例的 PEM 提供给所有人,将这些 PEM 保存在密码保险库等工具中。
请记住,要轮换这些 PEM,您需要手动替换任何 Linux 实例上的 authorized_keys,对于使用此 PEM 获取 Windows 密码的 Windows 实例,您需要替换并使用新的 PEM 启动。
AWS 有几个解决方案可以帮助您更轻松地安全访问您的 Linux 实例:
【解决方案2】:
我建议考虑使用 EC2 Instance Connect,它使用临时 SSH 密钥并允许您使用 IAM 策略授予访问权限。
否则,我建议使用 Ansible 之类的工具来管理实例队列上的 SSH 密钥,以便您轻松添加或删除密钥。
【解决方案3】:
您的问题不是 Ec2 本身,而是您想要实现的访问控制模型。
如果所有这 8 个人都需要对实例进行识别和单独访问,最简单的方法是在实例上创建 8 个不同的用户。每个都有不同的 ssh-key。
可以使用为ec2-user或ubuntu用户创建的密钥登录实例,然后创建每个用户并分发。
如果您只需要一个不同的密钥让每个人登录到同一个用户,只需让人们创建 ssh-keys 并与您共享公钥。然后将它们全部放入默认用户 .ssh 文件夹中。
当有人外出时,只需删除 ssh-key。您甚至可以出于历史原因保留他们的用户。
如果实例数量增加,您应该投资一个集中式登录管理工具,例如LDAP
【解决方案4】:
我会建议查看AWS ops work,这是远程团队的完美选择,我确实为我的一个有很多远程人员的客户配置了它,因为它提供了他能够添加的松弛集成,所以它的工作方式很有魅力,或者使用 slack 命令删除用户。
- 您不需要与任何团队的任何成员共享 PEM 密钥,只需管理员即可
- 每个团队成员将提供自己的公钥来访问实例
- 管理团队成员可以访问的实例以及访问级别
- 从运维工作中删除团队成员将自动从 EC2 中删除
- 在用户登录实例时跟踪用户执行操作的活动
- 您也可以拒绝特定用户的访问
在运维工作中,您可以创建stack 喜欢
- TeamA、TeamB 和 Teamc
因此,用户一次可以是一个或多个堆栈的成员,而 TeamA 只能访问添加到 TeamA 中的实例,因此这也提供了每个团队的实例的逻辑分离。
Opswork 主要用于配置管理,但这确实有助于管理用户对高层管理人员想要控制用户访问而不是 Ops 团队的实例的访问。