如何为多个用户管理 EC2 密钥对?

How to manage EC2 key pairs for multiple users?

我在一个 8 人的团队中工作。我需要创建一个 EC2 实例。在我创建实例之前,EC2 让我创建一个密钥对,然后下载它。

问题是:这样我需要为所有 8 个团队成员共享相同的私钥。

现在,如果明天其中一名队友离开会怎样?我需要用新的密钥对重新创建机器。

我如何正确管理密钥,以便每个团队成员都将拥有 his/her 与 his/her IAM 用户关联的唯一密钥,因此一旦 he/she 离开公司,我将能够使 his/her 密钥无效吗?

我建议研究使用 EC2 Instance Connect,它使用临时 SSH 密钥并允许您使用 IAM 策略授予访问权限。

否则,我建议使用像 Ansible 这样的工具来管理实例队列上的 SSH 密钥,这样您就可以轻松地添加或删除密钥。

您的问题不是关于 Ec2 本身,而是关于您要实现的访问控制模型。

如果所有这 8 个人都需要对实例进行识别和单独访问,最简单的方法是在实例中创建 8 个不同的用户。每一个都有不同的 ssh-key.

可以使用为 ec2-userubuntu 用户创建的密钥登录实例,然后创建每个用户并分发。

如果您只需要一个不同的密钥让所有人登录同一用户,只需让人们创建 ssh-key 并与您共享 public 密钥即可。然后将它们全部放入默认用户 .ssh 文件夹中。

有人外出时,只需删除ssh-key。您甚至可以出于历史原因保留他们的用户。

如果实例数量增加,你应该投资一个集中的登录管理工具,比如LDAP

尽量避免将实例的 PEM 提供给所有人,将这些 PEM 保存在管理员的密码库等工具中。

请记住,要轮换这些 PEM,您需要手动替换任何 Linux 实例上的 authorized_keys,对于使用此 PEM 获取 Windows 的实例25=] 您需要替换并使用新 PEM 启动的密码。

AWS 有几个解决方案可以帮助更轻松地安全访问您的 Linux 实例:

  • 如果您不需要实际通过 SSH 连接到主机,而只需要终端访问,您可以使用内置的 Session Manager. Using this tool you can access a terminal within the AWS console or connect via the CLI. Interactions with the terminal can be scoped to allow only specific commands with functionality for auditing
  • 如果您想连接到终端,可以使用 EC2 instance connect. Using this option you can generate a temporary key and then provide this via the CLI 允许使用此 PEM 进行临时访问。一旦此命令是 运行(并且成功),您将能够使用带有临时 PEM 的 SSH 终端临时连接到实例。

我会建议查看 AWS ops work,这是远程团队的完美选择,我确实为我的一个客户配置了它,他有很多远程人员,并且由于提供了松散集成而工作起来很有魅力,他是能够使用 slack 命令添加或删除用户。

  • 不需要与任何团队的任何成员共享 PEM 密钥,只需管理员
  • 每个团队成员将提供自己的public-key来访问实例
  • 管理团队成员可以访问的实例以及访问级别
  • 从操作工作中删除团队成员将自动从 EC2 中删除
  • 跟踪activity当用户登录实例时哪个用户执行了操作
  • 您还可以拒绝特定用户的访问

在运营工作中,您可以创建 stack 喜欢

  • TeamA、TeamB 和 Teamc 因此,一个用户一次可以是一个或多个堆栈的成员,TeamA 只能访问在 TeamA 中添加的实例,因此这也提供了每个团队实例的逻辑分离。

Opswork 主要用于配置管理,但这确实有助于管理用户对实例的访问,高层管理人员希望控制用户访问而不是 Ops 团队。

  • 创建堆栈
  • OpsWork
  • 注册实例
  • 将用户添加到堆栈