AWS 如何使用 Session Manager 安全连接到 EC2 的方法
AWS Systems Manager(旧称 SSM)是一个集成了各种管理功能的服务,用于 AWS 内资源的配置/变更管理和应用程序参数的集中管理等。
在 AWS Systems Manager 中,有一个名为 "Session Manager" 的服务。在使用 EC2 的环境中,Session Manager 是一项非常优秀的服务,从维护性和网络安全性的角度来看。
用它可以不用SSH等软件,我们可以直接在AWS的网页上进行管理实例的操作。
本文将介绍如何使用 Session Manager 安全地连接到 EC2 实例。
图片来自https://aws.amazon.com/cn/blogs/mt/how-to-search-through-your-aws-systems-manager-session-manager-console-logs-part-1/
可通过 Session Manager 实现的功能
Session Manager 可以实现以下典型用途:
- 通过 AWS 管理控制台登录到 EC2 实例的控制台
- 通过 Session Manager 连接到 EC2 实例的 SSH
以下是上述功能的优点:
- 无需准备跳板服务器
- 无需提前准备维护路径以便对外(主要是互联网)进行维护
- 无需为 EC2 实例分配 PublicIP/ElasticIP
使用 Session Manager 需要注意的地方
在使用 Session Manager 时,有一些设计上需要考虑的要点,请列举如下:
-
在 EC2 实例上安装并运行 SSM Agent
对于使用 Linux 的情况,如果使用 Amazon Linux 2 和Ubuntu作为 AMI,则默认已经在运行,就不需要做一些额外的安装操作,目前我自己只测试过这两个OS,其他我觉得也自带了,需要验证一下。
-
使用 ssm-user 登录
如果通过 AWS 管理控制台登录,将使用 ssm-user 登录。
此外,请注意登录后的当前目录为 "/usr/bin",请使用 "sudo" 等适当的命令切换到正确的用户。
-
难以严格控制登录用户
在单个 EC2 实例上,在具有严格的服务器资源控制的多个操作系统用户的环境中,应禁止通过 AWS 管理控制台进行连接(取决于第 2 点)。
通过 SSH 进行连接时,可以使用密钥进行控制,因此此限制并不适用。
-
引入 IAM 用户管理而不是 OS 用户管理
使用 Session Manager 连接到 EC2 实例的权限取决于 IAM 用户的权限。因此,需要进行与传统 Linux 操作系统上的用户管理不同的设计,意识到使用 IAM Role/IAM Policy 进行连接控制/管理的必要性。
此外,记录了哪个 IAM 用户何时登录到哪个 EC2 实例的信息将全部保存在 AWS CloudTrail 中。
具体设置步骤
1. 前提条件
本次我使用的Ubuntu22.04系统,通过AWS网页进行操作。
由于 AWS 官方文档中包含了各种操作系统的说明,所以在以下步骤中我会进行适时的指引,但如果使用其他环境,请参考相应的文档。
2. EC2 实例上的步骤
如果你和我一样是Ubuntu或者Amazon Linux则不需要安装SSM Agent。
如果需要安装,请参考官方文档中的这里的步骤进行操作。
请注意,现在的 Amazon Linux 2和Ubuntu 默认安装了 SSM Agent,所以我们可以查看一下确定 SSM Agent是否在运行。
运行以下命令确定 SSM Agent是否在运行。
sudo snap list amazon-ssm-agent
确认都没有问题,就可以进行下一步了。
2. IAM 的设置
将以下策略分配给 IAM 用户:
注意:如果目标 IAM 用户具有 AdministratorAccess 权限,则无需执行此操作。
- AmazonSSMFullAccess
将包含以下策略的 IAM Role 分配给 EC2 实例:
-
AmazonSSMManagedInstanceCore
下面的步骤我是用的日语界面,因平时都是用的日语,但是大概操作都是去IAM创建一个角色,可以照着图片里的位置对比着操作。
勾选对应的权限然后下一步
起个名字然后完成即可
通过 AWS 管理控制台进行连接
到这里基本就差不多快结束了,我们需要给EC2需要配置SSM的实例配置角色
- 首先,进入EC2服务、选择行动,安全,角色变更
- 然后选择我们刚刚创建的角色点更新
- 过一会儿就可以使用Session Manager 来连接我们的实例。
总结
本文介绍了使用 Session Manager 安全连接到 EC2 实例的方法。Session Manager 是 AWS Systems Manager 平时在工作中其实用的很多,很有必要掌握它的使用技巧。使用 Session Manager 可简化连接过程、提高效率,并提供更好的安全性。希望本文为使用 Session Manager 连接 EC2 实例提供了有用的指导和参考。