AWS 如何使用 Session Manager 安全连接到 EC2 的方法

AWS Systems Manager(旧称 SSM)是一个集成了各种管理功能的服务,用于 AWS 内资源的配置/变更管理和应用程序参数的集中管理等。

在 AWS Systems Manager 中,有一个名为 "Session Manager" 的服务。在使用 EC2 的环境中,Session Manager 是一项非常优秀的服务,从维护性和网络安全性的角度来看。

用它可以不用SSH等软件,我们可以直接在AWS的网页上进行管理实例的操作。

本文将介绍如何使用 Session Manager 安全地连接到 EC2 实例。

fig1bb-1

图片来自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 时,有一些设计上需要考虑的要点,请列举如下:

  1. 在 EC2 实例上安装并运行 SSM Agent

    对于使用 Linux 的情况,如果使用 Amazon Linux 2 和Ubuntu作为 AMI,则默认已经在运行,就不需要做一些额外的安装操作,目前我自己只测试过这两个OS,其他我觉得也自带了,需要验证一下。

  2. 使用 ssm-user 登录

    如果通过 AWS 管理控制台登录,将使用 ssm-user 登录。

    此外,请注意登录后的当前目录为 "/usr/bin",请使用 "sudo" 等适当的命令切换到正确的用户。

  3. 难以严格控制登录用户

    在单个 EC2 实例上,在具有严格的服务器资源控制的多个操作系统用户的环境中,应禁止通过 AWS 管理控制台进行连接(取决于第 2 点)。

    通过 SSH 进行连接时,可以使用密钥进行控制,因此此限制并不适用。

  4. 引入 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

截屏2023-07-16 12.46.32

确认都没有问题,就可以进行下一步了。

2. IAM 的设置

将以下策略分配给 IAM 用户:

注意:如果目标 IAM 用户具有 AdministratorAccess 权限,则无需执行此操作。

  • AmazonSSMFullAccess

将包含以下策略的 IAM Role 分配给 EC2 实例:

  • AmazonSSMManagedInstanceCore

    下面的步骤我是用的日语界面,因平时都是用的日语,但是大概操作都是去IAM创建一个角色,可以照着图片里的位置对比着操作。

截屏2023-07-16 12.49.24

勾选对应的权限然后下一步

截屏2023-07-16 12.51.48

起个名字然后完成即可

截屏2023-07-16 12.54.57

通过 AWS 管理控制台进行连接

到这里基本就差不多快结束了,我们需要给EC2需要配置SSM的实例配置角色

  1. 首先,进入EC2服务、选择行动,安全,角色变更

截屏2023-07-16 12.57.13

  1. 然后选择我们刚刚创建的角色点更新

截屏2023-07-16 12.59.44

  1. 过一会儿就可以使用Session Manager 来连接我们的实例。

截屏2023-07-16 13.01.38

总结

本文介绍了使用 Session Manager 安全连接到 EC2 实例的方法。Session Manager 是 AWS Systems Manager 平时在工作中其实用的很多,很有必要掌握它的使用技巧。使用 Session Manager 可简化连接过程、提高效率,并提供更好的安全性。希望本文为使用 Session Manager 连接 EC2 实例提供了有用的指导和参考。

文章作者: tutu
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 TutuのBlog
AWS
喜欢就支持一下吧