AWS Systems Manager Session Manager - AWS Systems Manager

AWS Systems Manager Session Manager

Session Manager 是 AWS Systems Manager 的一项完全托管式功能。借助 Session Manager,您可以管理 Amazon Elastic Compute Cloud(Amazon EC2)实例、边缘设备、本地服务器和虚拟机(VM)。您可使用基于浏览器的一键式交互 Shell 或 AWS Command Line Interface (AWS CLI)。Session Manager 提供安全且可审计的节点管理,而无需打开入站端口、维护堡垒主机或管理 SSH 密钥。Session Manager 还可以帮助您轻松遵守需要托管式节点受控访问权限的公司策略、严格的安全实践以及包含节点访问详细信息的完全可审计日志,同时能够让终端用户轻松地一键式跨平台访问您的托管式节点。要开始使用 Session Manager,请打开 Systems Manager 控制台。在导航窗格中,选择 Session Manager

我的组织如何从 Session Manager 获益?

Session Manager 具备下列优势:

  • 使用 IAM policy 集中控制对托管式节点的访问

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

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

    在托管式节点上保持打开入站 SSH 端口和远程 PowerShell 端口,会极大增加实体在托管式节点上运行未经授权或恶意命令的风险。Session Manager 让您能够关闭这些入站端口,并且无需管理 SSH 密钥和证书以及堡垒主机和跳转盒,从而帮助您提高安全状况。

  • 从控制台和 CLI 一键访问托管式节点

    通过使用 AWS Systems Manager 控制台或 Amazon EC2 控制台,只需单击一下即可启动会话。通过使用 AWS CLI,您还可以启动一个会话以运行单个命令或一系列命令。由于对托管式节点的权限是通过 IAM policy 而非 SSH 密钥或其他机制提供,连接时间得到大幅缩短。

  • 连接到混合和多云环境的 Amazon EC2 实例和非 EC2 托管式节点

    连接到混合和多云环境中的 Amazon Elastic Compute Cloud(Amazon EC2)实例和非 EC2 节点。

    要使用 Session Manager 连接到非 EC2 节点,必须首先激活高级实例套餐。使用高级实例套餐需支付费用。但是,使用 Session Manager 连接到 EC2 实例不需要额外收费。有关信息,请参阅配置实例套餐

  • 端口转发

    将托管式节点中的任意端口重新导向到客户端上的本地端口。然后,连接到本地端口,并访问在节点内运行的服务器应用程序。

  • 对 Windows、Linux 和 macOS 的跨平台支持

    Session Manager 通过单个工具提供对 Windows、Linux 和 macOS 的支持。例如,您不需要为 Linux 和 macOS 托管式节点使用 SSH 客户端,也不需要为 Windows Server 托管式节点使用 RDP 连接。

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

    为满足企业的运营或安全要求,您可能需要提供对托管式节点的连接以及在其上运行的命令的记录。您还可以在组织中的用户开始或结束会话活动时收到通知。

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

    • AWS CloudTrail – AWS CloudTrail 捕获有关在 AWS 账户中进行的 Session Manager API 调用的信息,并将其写入存储在指定 Amazon Simple Storage Service (Amazon S3) 存储桶中的日志文件。账户的所有 CloudTrail 日志都存储在一个存储桶中。有关更多信息,请参阅 使用 AWS CloudTrail 记录 AWS Systems Manager API 调用

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

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

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

    注意

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

谁应该使用 Session Manager?

  • 任何希望改善其安全性和审计状况、通过集中控制对托管式节点的访问来减少运营开销以及希望减少入站节点访问的 AWS 客户。

  • 希望监控并跟踪托管式节点访问和活动、关闭托管式节点上的入站端口或允许连接到没有公有 IP 地址的托管式节点的信息安全专家。

  • 希望从单一位置授予及撤销访问权限并为用户提供一个同时适用于 Linux、macOS 和 Windows Server 托管式节点的解决方案的管理员。

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

Session Manager 的主要功能是什么?

  • 对 Windows Server、Linux 和 macOS 托管式节点的支持

    Session Manager 可让您与 Amazon Elastic Compute Cloud(EC2)实例、边缘设备、本地服务器和虚拟机(VM)之间建立安全连接。有关支持的操作系统类型的列表,请参阅 设置 Session Manager

    注意

    仅为高级实例套餐提供对本地计算机的 Session Manager 支持。有关信息,请参阅打开高级实例套餐

  • 支持通过控制台、CLI 和开发工具包等方式访问 Session Manager 功能

    您可以通过以下方式使用Session Manager:

    AWS Systems Manager 控制台使管理员和终端用户能够访问所有 Session Manager 功能。您可以通过使用 Systems Manager 控制台来执行与会话相关的任何任务。

    利用 Amazon EC2 控制台,终端用户能够连接到其已获得会话权限的 EC2 实例。

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

    注意

    要使用 AWS CLI 运行会话命令,您必须使用 1.16.12 版本(或更高版本)的 CLI,并且必须已在本地计算机上安装 Session Manager 插件。有关信息,请参阅为 AWS CLI 安装 Session Manager 插件。要在 GitHub 上查看插件,请参阅 session-manager-plugin

  • IAM 访问控制

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

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

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

  • 可配置的 Shell 配置文件

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

  • 客户密钥数据加密支持

    您可以配置 Session Manager 以加密发送到 Amazon Simple Storage Service (Amazon S3) 存储桶或流式传输到 CloudWatch Logs 日志组的会话数据日志。您还可以配置 Session Manager 来进一步为会话期间在客户端计算机和托管式节点之间传输的数据加密。有关信息,请参阅 启用和禁用会话活动日志记录配置会话首选项

  • 为没有公有 IP 地址的托管式节点提供 AWS PrivateLink 支持

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

  • 隧道

    在会话中,使用会话类型 AWS Systems Manager (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 发送第一个命令启动会话时,Session Manager 服务对其 ID 进行身份验证,验证 IAM policy 授予 John 的权限,检查配置设置(例如验证允许的会话限制),并向 SSM Agent发送消息以打开双向连接。建立连接并且 John 键入下一个命令后,SSM Agent的命令输出将上传到此通信通道并发送回 John 的本地计算机。