记录会话活动 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

记录会话活动

除了在 Systems Manager 控制台中提供有关当前和已完成会话的信息以外,Session Manager 还提供记录 Amazon Web Services 账户中的会话活动的选项。这让您能够执行以下操作:

  • 创建和存储会话日志以用于存档目的。

  • 生成报告,显示过去 30 天内使用 Session Manager 对托管式节点进行的每个连接的详细信息。

  • 生成有关 Amazon Web Services 账户中的会话活动的通知,例如 Amazon Simple Notification Service (Amazon SNS) 通知。

  • 作为会话活动的结果,在 Amazon 资源上自动启动另一个操作,例如运行 Amazon Lambda 功能、启动 Amazon CodePipeline 管道或运行 Amazon Systems Manager Run Command 文档。

重要

对于 Session Manager,请注意以下要求和限制:

  • Session Manager 根据您的会话首选项,记录您在会话期间输入的命令及其输出。为了防止敏感数据(如密码)在会话日志中被查看,建议您在会话期间输入敏感数据时使用以下命令。

    Linux & macOS
    stty -echo; read passwd; stty echo;
    Windows
    $Passwd = Read-Host -AsSecureString
  • 如果使用的是 Windows Server 2012 或更早版本,则日志中的数据可能无法以最佳方式进行格式化。建议使用 Windows Server 2012 R2 及更高版本以获得最佳的日志格式。

  • 如果使用的是 Linux 或 macOS 托管式节点,请确保已安装 screen 实用程序。否则,日志数据可能会被截断。在 Amazon Linux、Amazon Linux 2 和 Ubuntu Server 上,原定设置下会安装 screen 实用程序。要手动安装 screen,请根据您的 Linux 版本,运行 sudo yum install screensudo apt-get install screen

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

有关使用 Amazon S3 或 Amazon CloudWatch Logs 记录会话数据所需权限的更多信息,请参阅 创建具有 Session Manager、Amazon S3 和 CloudWatch Logs 权限的 IAM 角色(控制台)

有关 Session Manager 的日志记录选项的更多信息,请参阅以下主题。

使用 Amazon CloudWatch Logs 流式传输会话数据(控制台)

您可以向 Amazon CloudWatch Logs 持续发送会话数据日志流。在流式传输会话数据时,将包括必要的详细信息,例如用户在会话中运行的命令、运行命令的用户的 ID,以及将会话数据流式传输到 CloudWatch Logs 的时间戳。流式传输会话数据时,日志采用 JSON 格式,以帮助您与现有的日志记录解决方案相集成。交互式命令不支持流式传输会话数据。

注意

要从 Windows Server 托管式节点流式传输会话数据,必须安装 PowerShell 5.1 或更高版本。默认情况下,Windows Server 2016 及更高版本已安装了所需的 PowerShell 版本。但是,默认情况下,Windows Server 2012 和 2012 R2 没有安装所需的 PowerShell 版本。如果您尚未在 Windows Server 2012 或 2012 R2 托管式节点上更新 PowerShell,可以使用 Run Command 执行此操作。有关使用 Run Command 更新 PowerShell 的信息,请参阅 使用 Run Command 更新 PowerShell

重要

如果您在 Windows Server 托管式节点上配置了 PowerShell 转录策略设置,则将无法流式传输会话数据。

要使用 Amazon CloudWatch Logs 流式传输会话数据(控制台),请执行以下步骤:

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择 Session Manager

  3. 选择 Preferences (首选项) 选项卡,然后选择 Edit (编辑)

  4. 选中 CloudWatch logging (CloudWatch 日志记录)Enable (启用) 旁边的复选框。

  5. 选择 Stream session logs (流式传输会话日志) 选项。

  6. (推荐)选中 Allow only encrypted CloudWatch log groups (仅允许加密的 CloudWatch 日志组) 旁边的复选框。否则,日志数据将使用为日志组指定的服务器端加密密钥加密。如果您希望加密发送到 CloudWatch Logs 的日志数据,请清除此复选框。如果日志组不允许加密,也必须清除此复选框。

  7. 对于 CloudWatch logs (CloudWatch Logs 日志),要指定 Amazon Web Services 账户中现有的 CloudWatch Logs 日志组来上传会话日志,请选择以下选项之一:

    • 在文本框中输入已在账户中创建的用于存储会话日志数据的日志组的名称。

    • Browse log groups (浏览日志组):选择已在账户中创建的用于存储会话日志数据的日志组。

  8. 选择保存

使用 Amazon S3 记录会话数据(控制台)

您可以选择将会话日志数据存储在指定的 Amazon Simple Storage Service (Amazon S3) 存储桶中,以便用于调试和故障排除。默认选项是将日志发送到加密的 Amazon S3 存储桶。系统将使用为存储桶指定的密钥执行加密,可以是 Amazon KMS key或 Amazon S3 服务器端加密 (SSE) 密钥 (AES-256)。

重要

当通过安全套接字 (SSL) 使用虚拟托管类型存储桶时,SSL 通配符证书仅匹配不包含句点的存储桶。要解决此问题,请使用 HTTP 或编写自己的证书验证逻辑。在使用虚拟托管类型存储桶时,建议您不要在存储桶名称中使用句点(“.”)。

Amazon S3 存储桶加密

要将日志发送到 Amazon S3 存储桶并进行加密,必须在存储桶上允许加密。有关 Amazon S3 存储桶加密的更多信息,请参阅 Amazon S3 默认 S3 存储桶加密

客户托管密钥

如果使用自己管理的 KMS 密钥来加密存储桶,则附加到实例的 IAM 实例配置文件必须具有读取此密钥的显式权限。如果使用 Amazon 托管式密钥,则实例不需要此显式权限。有关为实例配置文件提供使用密钥的权限的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的允许密钥用户使用密钥

请按照以下步骤配置 Session Manager,以将会话日志存储在 Amazon S3 存储桶中。

注意

您也可以使用 Amazon CLI 指定或更改将会话数据发送到的 Amazon S3 存储桶。有关信息,请参阅 更新 Session Manager 首选项(命令行)

要使用 Amazon S3 记录会话数据(控制台),请执行以下步骤:

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择 Session Manager

  3. 选择 Preferences (首选项) 选项卡,然后选择 Edit (编辑)

  4. 选中 S3 logging (S3 日志记录)Enable (启用) 旁边的复选框。

  5. (推荐)选中 Allow only encrypted S3 buckets (仅允许加密的 S3 存储桶) 旁边的复选框。开启此选项后,将使用为存储桶指定的服务器端加密密钥对日志数据进行加密。如果不需要加密发送到 Amazon S3 的日志数据,请清除此复选框。如果 S3 存储桶不允许加密,也必须清除此复选框。

  6. 对于 S3 bucket name (S3 存储桶名称),请选择以下选项之一:

    注意

    在使用虚拟托管类型存储桶时,建议您不要在存储桶名称中使用句点(“.”)。有关 Amazon S3 存储桶命名约定的更多信息,请参阅 Amazon Simple Storage Service 用户指南中的存储桶限制和局限性

    • Choose a bucket name from the list (从列表中选择存储桶名称):选择已在账户中创建的用于存储会话日志数据的 Amazon S3 存储桶。

    • Enter a bucket name in the text box (在文本框中输入存储桶名称):输入已在账户中创建的用于存储会话日志数据的 Amazon S3 存储桶名称。

  7. (可选)对于 S3 key prefix (S3 键前缀),输入现有或新文件夹的名称,以便将日志存储在所选的存储桶中。

  8. 选择保存

有关使用 Amazon S3 和 Amazon S3 存储桶的更多信息,请参阅 Amazon Simple Storage Service 用户指南Amazon Simple Storage Service 用户指南

使用 Amazon CloudWatch Logs 记录会话数据(控制台)

借助 Amazon CloudWatch Logs,您可以监控、存储和访问各种 Amazon Web Services的日志文件。您可以将会话日志数据发送到 CloudWatch Logs 日志组,以便用于调试和故障排除。默认选项是使用您的 KMS 密钥在加密后发送日志数据,但您可以将数据发送到日志组(加密或不加密)。

请按照以下步骤配置 Amazon Systems Manager Session Manager,以便在会话结束时将会话日志数据发送到 CloudWatch Logs 日志组。

注意

您也可以使用 Amazon CLI 指定或更改将会话数据发送到的 CloudWatch Logs 日志组。有关信息,请参阅 更新 Session Manager 首选项(命令行)

要使用 Amazon CloudWatch Logs 记录会话数据(控制台),请执行以下步骤:

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择 Session Manager

  3. 选择 Preferences (首选项) 选项卡,然后选择 Edit (编辑)

  4. 选中 CloudWatch logging (CloudWatch 日志记录)Enable (启用) 旁边的复选框。

  5. 选择 Upload session logs (上传会话日志) 选项。

  6. (推荐)选中 Allow only encrypted CloudWatch log groups (仅允许加密的 CloudWatch 日志组) 旁边的复选框。否则,日志数据将使用为日志组指定的服务器端加密密钥加密。如果您希望加密发送到 CloudWatch Logs 的日志数据,请清除此复选框。如果日志组不允许加密,也必须清除此复选框。

  7. 对于 CloudWatch logs (CloudWatch Logs 日志),要指定 Amazon Web Services 账户中现有的 CloudWatch Logs 日志组来上传会话日志,请选择以下选项之一:

    • Choose a log group from the list (从列表中选择日志组):选择已在账户中创建的日志组来存储会话日志数据。

    • Enter a log group name in the text box (在文本框中输入日志组名称):输入已在您的账户中创建的用于存储会话日志数据的日志组的名称。

  8. 选择保存

有关使用 CloudWatch Logs 的更多信息,请参阅 Amazon CloudWatch Logs 用户指南