我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
从公有到私有的安全连接:介绍 EC2 实例连接终端节点
这篇博文由解决方案架构师 Ariana Rahgozar 和 亚马逊云科技 高级技术客户经理 Kenneth Kitts 撰写。
想象一下,尝试通过互联网连接到您的
今天,我们推出了
在这篇文章中,我们概述了 EIC 端点的工作原理及其安全控制,指导您完成首次创建 EIC 端点,并演示如何通过 EIC 端点从 Internet 通过 SSH 连接到实例。
EIC 终端产品概述
EIC 端点是一个身份感知型 TCP 代理。它有两种模式:首先,使用 亚马逊云科技 CLI 客户端使用您的 亚马逊云科技
图 1。用户通过 EIC 终端节点连接到私有 EC2 实例
EIC 端点提供了高度的灵活性。首先,它们不要求您的 VPC 使用 IGW 或 NAT 网关直接连接互联网。其次,在您想要连接的资源上不需要代理,这样可以轻松地远程管理可能不支持代理的资源,例如第三方设备。第三,它们保留了现有的工作流程,使您能够继续在本地工作站上使用首选的客户端软件来连接和管理资源。最后,IAM 和
在推出 EIC 终端节点之前,亚马逊云科技 提供了两项关键服务,以帮助更谨慎地管理从公有地址空间向 VPC 的访问。首先是
鉴于 EIC Endpoint 允许从公共 IP 空间访问私有资源,因此在讨论创建您的第一个 EIC 端点之前,让我们更详细地回顾一下安全控制和功能。
安全功能和控制
许多 亚马逊云科技 客户通过互联网远程管理其 VPC 内的资源仍然使用相关资源上的公有 IP 地址,或者充其量使用堡垒主机方法结合使用寿命长 SSH 密钥。使用 IGW 路由和/或安全组可以稍微锁定使用公共 IP。但是,在动态环境中,这些控件可能很难管理。因此,谨慎管理长期使用的 SSH 密钥仍然是唯一的防御层,这并不好,因为我们都知道这些控制有时会失败,因此深度防御很重要。尽管堡垒主机可以提供帮助,但它们大大增加了管理、修补和维护基础架构的运营开销。
创建 EIC 端点以及通过端点的安全隧道技术建立连接都需要 IAM 授权。除了基于身份的访问控制来控制用户可以连接谁、如何、何时和多长时间外,还可以使用更传统的网络访问控制,例如安全组。与您的 VPC 资源关联的安全组可用于授予/拒绝访问权限。无论是 IAM 策略还是安全组,默认行为都是拒绝流量,除非明确允许。
EIC Endpoint 在控制平面和数据平面权限分离方面符合重要的安全要求。拥有完整 EC2 IAM 权限的管理员可以创建和控制 EIC 终端节点(控制平面)。但是,如果没有拥有 EC2 实例连接 IAM 权限(数据平面),他们就无法使用这些终端节点。相反,可能需要使用 EIC Endpoint 来隧道进入 VPC 资源的 DevOps 工程师不需要控制平面权限即可这样做。在所有情况下,使用 EIC 终端节点的 IAM 委托人必须是同一 亚马逊云科技 账户的一部分(直接或通过跨账户角色假设)。安全管理员和审计员可以集中查看端点活动,因为所有通过 EIC 端点 API 进行配置和连接的 API 调用都记录在
EIC Endpoint 支持可选使用客户端 IP 保存(又名源 IP 保存),这是某些组织的重要安全考虑因素。例如,假设您要连接的资源具有限于您的特定公有 IP 地址的网络访问控制,或者您的实例访问日志必须包含客户端的 “真实” IP 地址。尽管在创建端点时可以选择启用此功能,但默认设置为 关闭 。禁用时,通过端点代理的连接使用网络数据包的源 IP 字段中端点的私有 IP 地址。这种默认行为允许通过端点代理的连接到达路由表允许的范围。请记住,无论您如何配置此设置,CloudTrail 都会记录客户端的真实 IP 地址。
EIC Endpoints 通过将基于身份的身份验证和授权与传统的网络边界控制相结合来增强安全性,并提供精细的访问控制、记录、监控和更深入的防御。此外,它无需在您的 VPC 中安装支持 Internet 的基础架构即可完成所有这些操作,从而最大限度地减少了意外访问私有 VPC 资源的可能性。
入门
创建您的 EIC 端点
每个 VPC 只需要一个终端节点。要创建或修改终端节点并连接到资源,用户必须拥有所需的 IAM 权限,并且与您的 VPC 资源关联的任何安全组都必须有允许连接的规则。有关
亚马逊云科技 CLI 或控制台可用于创建 EIC 终端节点,我们在下文中演示 亚马逊云科技 CLI。要使用控制台创建 EIC 端点,请参阅
使用 亚马逊云科技 CLI 创建 EIC 终端节点
要使用 亚马逊云科技 CLI 创建 EIC 终端节点,请运行以下命令,将 [子网] 替换为您的子网 ID,将 [SG-ID] 替换为您的安全组 ID:
aws ec2 create-instance-connect-endpoint \ --subnet-id [SUBNET] \ --security-group-id [SG-ID]
使用 亚马逊云科技 CLI 或控制台创建 EIC 端点并向用户 IAM 授予创建隧道的权限后,即可建立连接。现在我们讨论如何使用 SSH 连接到 Linux 实例。但是,请注意,您也可以使用 OpenTunnel API 通过
使用 SSH 连接到您的 Linux 实例
在 VPC 子网中设置 EIC 终端节点后,您可以使用 SSH 进行连接。传统上,使用 SSH 访问 EC2 实例由密钥对和网络访问控制控制。使用 EIC Endpoint,可通过 IAM 策略启用额外的控制层,从而增强远程访问的安全状况。我们在下文中描述了两种通过 SSH 进行连接的方法。
一键命令
为了进一步减少创建和轮换 SSH 密钥的操作负担,您可以使用来自 亚马逊云科技 CLI 的新 ec2-instance-connect ssh
命令。使用这个
配置完成后,您可以使用新的 亚马逊云科技 CLI 命令进行连接,如下图所示:
图 3。成功通过 SSH 连接到您的实例后的 亚马逊云科技 CLI 视图
要测试从 亚马逊云科技 CLI 连接到您的实例,您可以运行以下命令,其中 [INSTANCE] 是您的 EC2 实例的实例 ID:
aws ec2-instance-connect ssh --instance-id [INSTANCE]
请注意,如果您必须维护现有的工作流程,您仍然可以使用有效期长的 SSH 证书进行连接,我们将在下文中对此进行介绍。但是,请注意,动态的、经常轮换的证书通常更安全。
开放隧道命令
您也可以使用 SSH 与标准工具或使用代理命令进行连接。要为实例建立私有隧道(TCP 代理),您必须运行一个 亚马逊云科技 CLI 命令,如下图所示:
您可以运行以下命令来测试连接,其中 [实例] 是您的 EC2 实例的实例 ID, [SSH-KEY] 是您的 SSH 密钥 的位置和名称。有关使用 SSH 密钥的指南,请参阅我们关于
ssh ec2-user@[INSTANCE] \ -i [SSH-KEY] \ -o ProxyCommand='aws ec2-instance-connect open-tunnel \ --instance-id %h'
配置好我们的 EIC 端点后,我们就可以使用 亚马逊云科技 CLI 在没有公有 IP 或 IGW 的情况下通过 SSH 连接到 EC2 实例。
结论
EIC Endpoint 提供了一种安全的解决方案,可在没有 IGW、公有 IP、代理和堡垒主机的私有子网中通过 SSH 或 RDP 连接到您的实例。通过为您的 VPC 配置 EIC 终端节点,您可以使用现有的客户端工具或控制台/亚马逊云科技 CLI 进行安全连接。要了解更多信息,请访问
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。