EC2 Instance Connect 免除 SSH 密钥管理 - 通过浏览器和 CLI 安全连接

解说通过 EC2 Instance Connect 实现的无密钥 SSH 连接、基于 IAM 的访问控制以及 Endpoint 的使用方法。

EC2 Instance Connect 概述

EC2 Instance Connect 是无需事先分发 SSH 密钥即可安全连接到 EC2 实例的服务。在传统的 SSH 连接中,密钥对的创建、分发、轮换以及丢失时的处理都是运维负担,而 Instance Connect 使用临时公钥,免除了密钥管理。

Endpoint 与私有连接

EC2 Instance Connect Endpoint 是在 VPC 内创建的终端节点,无需公有 IP 和堡垒服务器即可连接到私有子网中的实例。通过 IAM 策略控制 ec2-instance-connect:OpenTunnel 操作,限制对特定实例和子网的连接。连接时,临时的 SSH 公钥会在实例元数据中放置 60 秒,因此实例上不会留下永久性的密钥。

EC2 Instance Connect Endpoint

使用 EC2 Instance Connect Endpoint(EIC Endpoint),无需公有 IP 地址和堡垒服务器,就可以通过 SSH/RDP 连接到私有子网中的实例。在 VPC 内创建 EIC Endpoint,通过 IAM 策略控制允许连接的用户和目标实例。连接通过 AWS PrivateLink 建立隧道,因此无需在实例的安全组中开放入站 SSH 端口。通过 CloudTrail 可以审计谁在什么时候连接了哪个实例,也无需管理 SSH 密钥。1 个 EIC Endpoint 可以连接到 VPC 内多个子网中的实例,不产生额外费用。

连接方式的比较与选择

连接 EC2 的方式有 EC2 Instance Connect、Systems Manager Session Manager 和传统的 SSH 密钥对这 3 种。Instance Connect 通过元数据服务注入临时公钥,因此无需管理永久性的 SSH 密钥。Session Manager 基于代理,不使用 SSH 协议,因此无需开放入站端口即可连接。传统的 SSH 密钥对可以沿用现有的工作流程,密钥的轮换和分发由用户自行运维。在哪种环境中使用哪种方式,根据审计的要求和能否开放端口来决定。

EC2 Instance Connect 的费用

EC2 Instance Connect 可以免费使用。通过浏览器的 SSH 连接、通过 CLI 的连接以及 Instance Connect Endpoint 的使用都不产生额外费用。Session Manager(Systems Manager)的连接可以在不产生额外费用的情况下使用。使用 Instance Connect Endpoint,无需设置 NAT Gateway 或堡垒服务器,就可以连接到没有公有 IP 地址的私有子网中的实例。

使用的前提与支持的环境

EC2 Instance Connect 可以在受支持的操作系统和区域中使用。Amazon Linux 和 Ubuntu 的标准 AMI 中预先包含了所需的软件包,无需额外设置即可使用。在其他发行版中,手动安装用于接受连接的软件包。连接时会评估 IAM 的权限,因此预先为用户的角色允许所需的操作。由于采用临时公钥通过元数据仅在短时间内注入的机制,无需预先向实例端分发密钥。在引入之前,确认这些前提。

安全设计的最佳实践

通过 IAM 策略细致地设计访问控制。按目标实例、标签或子网来限定允许连接的操作,以最小权限定义谁可以连接到哪里。使用 Instance Connect Endpoint 时,通过终端节点的安全组控制通信,无需开放实例端的入站端口。连接的记录会保留在 CloudTrail 中,因此可以审计谁在什么时候进入了哪个实例。这种方式不处理密钥的分发和吊销,取而代之的是以权限的设计和日志的审计为中心进行运维。

在运维中的运用与和其他方式的并用

EC2 Instance Connect 可以从浏览器或命令行连接,因此可以在开发和调查的场景中使用。另一方面,对于日常的运维作业或无法开放入站端口的要求,可以使用 Systems Manager Session Manager。两者并不互斥,可以根据用途并用。例如,一种运维方式是:日常的操作集中到 Session Manager,而特定的调查则使用 Instance Connect。预先准备多种手段作为紧急时的替代连接路径,可以在其中一种无法使用时连接到实例。

总结

EC2 Instance Connect 是免除 SSH 密钥管理、提供基于 IAM 的访问控制的服务。通过 EIC Endpoint,无需公有 IP 和堡垒服务器即可连接到私有子网中的实例,并通过 CloudTrail 记录连接的审计日志。可以与 Session Manager 分别使用,根据用途选择连接方式。

参考资料(AWS 官方)

本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。

如本页内容与官方文档不一致,请以官方文档为准。

分享