本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS Systems Manager Session Manager
Session Manager是一项完全托管的 AWS Systems Manager 功能。借助 Session Manager,您可以管理 Amazon Elastic Compute Cloud(Amazon EC2)实例、边缘设备、本地服务器和虚拟机(VM)。您可以使用基于浏览器的交互式一键式外壳或 ()。 AWS Command Line Interface AWS CLISession Manager无需打开入站端口、维护堡垒主机或管理 SSH 密钥,即可提供安全且可审计的节点管理。 Session Manager还允许您遵守公司政策,这些政策要求对托管节点进行受控的访问权限、严格的安全措施以及包含节点访问详细信息的完全可审核的日志,同时为最终用户提供对托管节点的简单一键式跨平台访问权限。要开始使用 Session Manager,请打开 Systems 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 捕获有关在您中进行的 Session Manager API 调用的信息, AWS 账户 并将其写入存储在您指定的亚马逊简单存储服务 (Amazon S3) 存储桶中的日志文件中。一个存储桶用于存储您账户的所有 CloudTrail 日志。有关更多信息,请参阅 使用记录 AWS Systems Manager API 调用 AWS CloudTrail。
-
Amazon Simple Storage Service – 您可以选择将会话日志数据存储在您选择的 Amazon S3 存储桶中,以便用于调试和故障排除。在将日志数据发送到 Amazon S3 存储桶时,可以使用或不使用您的 AWS KMS key进行加密。有关更多信息,请参阅 使用 Amazon S3 记录会话数据(控制台)。
-
Amazon CloudWatch CloudWatch Logs — Logs 允许您监控、存储和访问各种日志文件 AWS 服务。您可以将会话日志数据发送到 CloudWatch 日志日志组,用于调试和故障排除。无论是否 AWS KMS 加密,都可以使用您的 KMS 密钥将日志数据发送到您的日志组。有关更多信息,请参阅 使用 Amazon CloudWatch 日志(控制台)记录会话数据。
-
Ama zon EventBridge 和 Amazon 简单通知服务 — 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。
注意
要使用运行会话命令,必须使用版本为 1.16.12 的 CLI(或更高版本),并且必须已在本地计算机上安装了Session Manager插件。 AWS CLI 有关信息,请参阅 安装Session Manager插件 AWS CLI。要查看该插件GitHub,请参阅session-manager-plugin
。 -
IAM 访问控制
通过使用 IAM policy,您可以控制企业中的哪些成员能够启动与托管式节点的会话以及他们能够访问哪些节点。您还可以提供对托管式节点的临时访问。例如,您可能需要仅为执勤工程师(或一组执勤工程师)在当班期间提供对生产服务器的访问权限。
-
支持日志记录和审计功能
Session Manager AWS 账户 通过与许多其他 AWS 服务功能集成,为您提供审核和记录会话历史记录的选项。有关更多信息,请参阅 审计会话活动 和 启用和禁用会话活动日志记录。
-
可配置的 Shell 配置文件
Session Manager 为您提供配置会话中的首选项的选项。您可以使用这些可自定义的配置文件定义首选项,例如 Shell 首选项、环境变量、工作目录以及在启动会话时运行多个命令。
-
客户密钥数据加密支持
您可以配置Session Manager为加密发送到亚马逊简单存储服务 (Amazon S3) 存储桶或流向 CloudWatch 日志组的会话数据日志。您还可以配置 Session Manager 来进一步为会话期间在客户端计算机和托管式节点之间传输的数据加密。有关信息,请参阅 启用和禁用会话活动日志记录 和配置会话首选项。
-
AWS PrivateLink 支持没有公有 IP 地址的托管节点
您还可以使用为 Systems Manager 设置 VPC 终端节点 AWS PrivateLink ,以进一步保护您的会话。 AWS PrivateLink 将您的托管节点、Systems Manager 和 Amazon EC2 之间的所有网络流量限制到亚马逊网络。有关更多信息,请参阅创建 VPC 端点。
-
隧道
在会话中,使用会话类型 AWS Systems Manager (SSM) 文档在客户端计算机上的本地端口和托管节点上的远程端口之间通过隧道传输流量,例如 http 或自定义协议。
-
交互式命令
创建会话类型的 SSM 文档,使用会话以交互方式运行单个命令,为您提供一种管理用户可以在托管式节点上执行的操作的方法。
什么是会话?
会话是使用 Session Manager 与托管式节点之间建立的连接。会话基于客户端(您)和远程托管式节点之间的安全双向通信通道,可流式传输命令的输入和输出。客户端和托管式节点之间的流量使用 TLS 1.2 进行加密,创建连接的请求使用 Sigv4 进行签名。这种双向通信允许交互式 bash 和 PowerShell 访问托管节点。您还可以使用 AWS Key Management Service (AWS KMS) 密钥在默认 TLS 加密之外进一步加密数据。
举例来说,假设 John 是 IT 部门的执勤工程师。他收到一个问题通知,要求他远程连接到某个托管式节点(例如需要处理的故障或用于更改节点上的简单配置选项的指令)。使用 AWS Systems Manager 控制台、Amazon EC2 控制台或 AWS CLI,John 启动一个将他连接到托管节点的会话,在完成任务所需的节点上运行命令,然后结束会话。
当 John 发送第一个命令启动会话时,Session Manager 服务对其 ID 进行身份验证,验证 IAM policy 授予 John 的权限,检查配置设置(例如验证允许的会话限制),并向 SSM Agent发送消息以打开双向连接。建立连接并且 John 键入下一个命令后,SSM Agent的命令输出将上传到此通信通道并发送回 John 的本地计算机。