AWS Systems Manager 会话管理器 - AWS Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS Systems Manager 会话管理器

会话管理器是一种完全托管的 AWS Systems Manager 功能,可用于通过基于浏览器的交互一键式 shell 或 AWS Command Line Interface (AWS CLI) 管理 Elastic Compute Cloud (Amazon EC2)、本地实例和虚拟机 (VM)。Session Manager 提供安全、可审计的实例管理,无需打开入站端口、维护堡垒主机或者管理 SSH 密钥。Session Manager 还可以轻松地遵守公司策略,这些策略要求对实例的控制访问、严格的安全实践以及完全可审计的日志,同时仍为最终用户提供对托管实例的简单一键式跨平台访问权限。

会话管理器如何使我的组织获益?

会话管理器具备下列优势:

  • 使用 IAM 策略集中控制对实例的访问

    管理员可以集中地授予和撤销对实例的访问。仅使用 AWS Identity and Access Management (IAM) 策略,您就可以控制组织中的哪些个人用户或组能够使用 Session Manager 以及他们能够访问哪些实例。

  • 无需打开入站端口,也无需管理堡垒主机或 SSH 密钥

    在实例上保持入站 SSH 端口和远程 PowerShell 端口处于打开状态,会大大增加实体在实例上运行未经授权或恶意命令的风险。Session Manager 允许您关闭这些入站端口,从而使您不再管理 SSH 密钥和证书、堡垒主机和跳转框,从而帮助您改善安全状况。

  • 从控制台和 CLI 一键访问实例

    使用 AWS Systems Manager 控制台或 Amazon EC2 控制台,单击一下即可启动会话。通过使用 AWS CLI,您还可以启动一个会话以运行单个命令或一系列命令。因为实例的权限是通过 IAM 策略而不是 SSH 密钥或其他机制提供的,所以可大幅缩短连接时间。

  • 端口转发

    将远程实例中的任何端口重定向到客户端上的本地端口。然后,连接到本地端口,并访问在实例中运行的服务器应用程序。

  • 支持 Windows、Linux 和 macOS

    会话管理器提供对 Windows、Linux 和 macOS 来自单个工具。例如,您不需要为 Linux 使用 SSH 客户端,也不需要为 macOS 实例或 RDP 连接 Windows Server 实例。

  • 日志记录和审计会话活动

    为了满足组织的操作或安全要求,您可能需要提供对实例的连接以及在其上运行的命令的记录。您还可以在组织中的用户开始或结束会话活动时收到通知。

    通过与以下 AWS 服务集成提供日志记录和审计功能:

    • AWS CloudTrail— AWS CloudTrail 捕获有关在 AWS 账户中进行的会话管理器 API 调用的信息,并将其写入存储在指定 S3 存储桶中的日志文件。账户的所有 CloudTrail 日志都存储在一个存储桶中。有关更多信息,请参阅 使用 AWS CloudTrail 记录 AWS Systems Manager API 调用

    • Amazon Simple Storage Service— 您可以选择将会话日志数据存储在选择用于调试和故障排除目的的的 S3 存储桶中。在将日志数据发送到 S3 存储桶时,您还可以使用自己的 AWS KMS 密钥进行加密。有关更多信息,请参阅 使用 Amazon S3 记录会话数据(控制台)

    • Amazon CloudWatch Logs— CloudWatch Logs 可以监控、存储和访问各种 AWS 服务的日志文件。您可以将会话日志数据发送到 CloudWatch Logs 日志组以进行调试和故障排除目的。在将日志数据发送到日志组时,您还可以使用自己的 KMS 加密。有关更多信息,请参阅 使用 Amazon CloudWatch Logs 记录会话数据(控制台)

    • Amazon EventBridgeAmazon Simple Notification Service— EventBridge 通过,您可以设置规则来检测指定的 AWS 资源何时发生更改。您可以创建规则来检测组织中的用户何时启动或停止会话,然后通过 Amazon SNS 接收有关此事件的通知(例如,文本或电子邮件)。您还可以配置 CloudWatch 事件来启动其他响应。有关更多信息,请参阅 使用亚马逊 EventBridge 监控会话活动(控制台)

    注意

    对于通过端口转发或 SSH 连接的会话管理器会话,日志记录不可用。这是因为 SSH 加密所有会话数据,而会话管理器仅用作 SSH 连接的隧道。

谁应该使用会话管理器?

  • 任何希望改善其安全性和审计状态,通过集中控制实例访问来减少运营开销,以及减少入站实例访问权限的 AWS 客户。

  • 希望监视和跟踪实例访问和活动,关闭实例上的入站端口或允许连接到没有公有 IP 地址的实例的信息安全专家。

  • 希望从一个位置授予和撤消访问权限并为用户提供一个适用于 Linux 的解决方案的管理员,macOS, 和 Windows Server 实例。

  • 希望只需单击一下即可从浏览器或 AWS CLI 连接到实例而不必提供 SSH 密钥的用户。

会话 Manager 的主要功能是什么?

  • 对该项的支持 Windows Server、Linux 和 macOS 实例

    会话管理器允许您建立与 Amazon Elastic Compute Cloud (EC2) 实例、本地实例和虚拟机 (VM) 的安全连接。有关支持的操作系统类型的列表,请参阅设置会话管理器

    注意

    仅为高级实例层提供对本地服务器的会话管理器支持。有关信息,请参阅 启用高级实例套餐

  • 通过控制台、CLI 和开发工具包等方式访问会话管理器功能

    您可以通过以下方式使用会话管理器:

    这些区域有:AWS Systems Manager 控制台包括对适用于管理员和最终用户的所有会话 Management 功能的访问。您可以通过使用 Systems Manager agement 控制台来执行与会话相关的任何任务。

    Amazon EC2 控制台为最终用户提供连接到其已获得会话权限的 EC2 实例的功能。

    这些区域有:AWS CLI包括对适用于最终用户的 Session Manager 功能的访问。您可以使用 AWS CLI 启动会话、查看会话列表和永久结束会话。

    注意

    要使 AWS CLI 运行会话命令,您必须使用版本(或更高版本)的 CLI 的 1.16.12,并且必须已在本地计算机上安装会话管理器插件。有关信息,请参阅 (可选)为安装 AWS CLI 安装会话管理器插件

    这些区域有:会话管理器 SDK由库和示例代码组成,使应用程序开发人员能够构建前端应用程序,例如,供内部用户使用的自定义 Shell 或自助服务门户(本地使用 Session Manager 连接到实例)。开发人员和合作伙伴可以使用会话管理器 API 将集成到客户端工具或 Automation 工作流程中。您甚至可以构建自定义解决方案。

  • IAM 访问控制

    通过使用 IAM 策略,您可以控制组织的哪些成员能够启动与实例的会话以及他们能够访问哪些实例。您还可以提供对实例的临时访问。例如,您可能需要仅为执勤工程师(或一组执勤工程师)在当班期间提供对生产服务器的访问权限。

  • 支持日志记录和审计功能

    会话管理器通过与众多其他 AWS 服务的集成,提供审计和记录 AWS 账户中会话历史记录的选项。有关更多信息,请参阅 审计会话活动记录会话活动

  • 可配置壳配置文件

    会话管理器为您提供了在会话中配置首选项的选项。这些可自定义的配置文件使您能够在启动会话时定义首选项,例如 shell 首选项、环境变量、工作目录以及运行多个命令。

  • 客户密钥数据加密支持

    您可以配置会话管理器来为您发送到 S3 存储桶或流式传输到 CloudWatch Logs 日志组的会话数据日志加密。您还可以配置 Session Manager 来进一步为会话期间在客户端计算机和您的实例之间传输的数据加密。想要了解有关信息,请参阅记录会话活动配置会话首选项

  • 为没有公有 IP 地址的实例提供 AWS PrivateLink 支持

    您还可以使用 AWS PrivateLink 为 Systems Manager 设置 VPC 终端节点,以进一步提高会话安全性。AWS PrivateLink 将托管实例、Systems Manager 和 Amazon EC2 之间的所有网络流量限制在 Amazon 网络以内。有关更多信息,请参阅 。(可选)创建 Virtual Private Cloud 终端节点

  • 隧道

    在会话中,使用会话类型 SSM 文档在客户端计算机上的本地端口和实例上的远程端口之间通过隧道传输流量,例如 http 或自定义协议。

  • 交互式命令

    创建会话类型的 SSM 文档,以使用会话以交互方式运行单个命令,从而为您提供一种方法以管理用户可以在实例上执行哪些操作。

什么是会话?

会话是使用 Session Manager 建立到实例的连接。会话基于客户端(您)与远程托管实例之间的安全双向通信通道,用于流式传输命令的输入和输出。客户端和托管实例之间的流量是使用 TLS 1.2 加密的,创建连接的请求是使用 Sigv4 签名的。这种双向通信可实现对实例的交互式 bash 和 PowerShell 访问。您还可以使用 AWS Key Management Service (AWS KMS) 密钥在默认 TLS 加密之外进一步加密数据。

举例来说,假设 John 是 IT 部门的执勤工程师。他收到一个问题通知,要求他远程连接到某个实例(例如需要处理的故障或用于更改实例上的简单配置选项的指令)。John 使用 AWS Systems Manager 控制台、Amazon EC2 控制台或 AWS CLI 启动一个将其连接到实例的会话,在完成任务所需的实例上运行命令,然后结束该会话。

当 John 发送第一个命令启动会话时,会话管理器服务对其 ID 进行身份验证,验证 IAM 策略授予 John 的权限,检查配置设置(例如验证允许的会话限制),并向 SSM 代理发送消息以打开双向连接。建立连接并且 John 键入下一个命令后,SSM Agent 的命令输出将上传到此通信通道并发送回他的本地计算机。