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

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

记录会话活动

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

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

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

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

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

重要

请注意 以下要求和限制。Session Manager:

  • 如果使用的是 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 权限的实例配置文件(控制台).

有关 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

重要

如果您已在 实例上配置 PowerShell 转录Windows Server策略设置,则无法流式传输会话数据。

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

  1. 通过以下网址打开 AWS Systems Manager 控制台:https://console.amazonaws.cn/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 日志),要指定将会话日志上传到的 CloudWatch Logs 账户中的现有 AWS 日志组,请选择以下选项之一:

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

    • 浏览日志组:选择已在您的账户中创建的日志组来存储会话日志数据。

  8. 选择 Save.

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

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

重要

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

S3 存储桶加密

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

客户管理的 CMK

如果您使用自己管理的 AWS KMS 客户主密钥 (CMK)(客户托管 CMK)来加密存储桶,则附加到实例的 IAM 实例配置文件必须具有读取此 CMK 的显式权限。如果使用 AWS 托管 CMK,则实例不需要此显式权限。有关为实例配置文件提供使用 CMK 的访问权限的更多信息,请参阅 https://docs.amazonaws.cn/kms/latest/developerguide/key-policies.html#key-policy-default-allow-users 中的允许密钥用户使用 CMKAWS Key Management Service Developer Guide。

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

注意

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

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

  1. 通过以下网址打开 AWS Systems Manager 控制台:https://console.amazonaws.cn/systems-manager/

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

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

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

  5. (建议) 选中 Allow only encrypted S3 buckets 旁边的复选框。启用此选项后,将使用为存储桶指定的服务器端加密密钥加密日志数据。如果您不希望加密发送到 Amazon S3 的日志数据,请清除该复选框。如果 S3 存储桶上未启用加密,则还必须清除此复选框。

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

    注意

    在使用虚拟托管类型存储桶时,建议您不要在存储桶名称中使用句点(“.”)。有关 S3 存储桶命名约定的更多信息,请参阅 https://docs.amazonaws.cn/AmazonS3/latest/dev/BucketRestrictions.html#bucketnamingrules 中的存储桶限制Amazon Simple Storage Service 开发人员指南。

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

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

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

  8. 选择 Save.

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

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

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

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

注意

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

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

  1. 通过以下网址打开 AWS Systems Manager 控制台:https://console.amazonaws.cn/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 日志),要指定将会话日志上传到的 CloudWatch Logs 账户中的现有 AWS 日志组,请选择以下选项之一:

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

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

  8. 选择 Save.

有关使用 CloudWatch Logs 的更多信息,请参阅 Amazon CloudWatch Logs User Guide