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

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

AWS Systems Manager Session Manager

Session Manager 是一个完全托管的 AWS Systems Manager 可让您管理 的 功能 Amazon Elastic Compute Cloud (Amazon EC2) 实例, 本地实例, 和虚拟机 (VM),通过基于浏览器的交互式一键式 shell 或通过 AWS Command Line Interface (AWS CLI)。 Session Manager 提供安全且可审核的实例管理,无需打开入站端口。 维护堡垒主机, 或 管理 SSH 密钥。 Session Manager 还使您能够轻松遵守需要对实例进行受控访问的公司策略。 严格的安全实践, 和具有实例访问详细信息的完全可审计日志 同时, 仍为最终用户提供对托管实例的简单一键式跨平台访问。

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

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

    Session Manager 通过单个工具提供对 Windows、Linux 和 macOS 的支持。例如,您无需对 Linux 和 macOS 实例使用 SSH 客户端或对 Windows Server 实例使用 RDP 连接。

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

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

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

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

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

    • Amazon CloudWatch Logs – CloudWatch Logs 可以监控、存储和访问各种 AWS 服务的日志文件。您可以将会话日志数据发送到 CloudWatch Logs 日志组以进行调试和故障排除。在将日志数据发送到日志组时,您还可以使用自己的 AWS 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 plugin 有关信息,请参阅 (可选)为 Session Manager plugin 安装 AWS CLI.

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

  • IAM 访问控制

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

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

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

  • 可配置的 Shell 配置文件

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

  • 客户密钥数据加密支持

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

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

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