如何为多个用户管理 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-user
或 ubuntu
用户创建的密钥登录实例,然后创建每个用户并分发。
如果您只需要一个不同的密钥让所有人登录同一用户,只需让人们创建 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
注册实例
- 将用户添加到堆栈
我在一个 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-user
或 ubuntu
用户创建的密钥登录实例,然后创建每个用户并分发。
如果您只需要一个不同的密钥让所有人登录同一用户,只需让人们创建 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 注册实例
- 将用户添加到堆栈