宣布针对 VPC 终端节点的 Amazon CloudTrail 网络活动事件

作者: Diwakar Balakrishnan, Angel Tolson, John Agustin |

今天,我们很高兴地宣布针对 VPC 终端节点的 Amazon CloudTrail 网络活动事件,这是一种新的事件类型,用于捕获通过虚拟私有云端点传输的操作。在本预览版中,这种新事件类型捕获来自 Amazon Elastic Compute Cloud (EC2)、Amazon Key Management Service (KMS)、Amazon S3 和 Amazon CloudTrail 的 VPC 终端节点的网络活动事件。将来,此功能还将扩展到各种亚马逊云科技服务。

亚马逊云科技客户使用 Amazon Virtual Private Cloud (VPC) 在亚马逊云科技公有云中创建安全、隔离的私有云。由于 VPC 经常访问其他亚马逊云科技服务,因此 VPC 客户也在设置 VPC 终端节点,从而在其 VPC 内的资源与这些其他亚马逊云科技服务之间建立直接连接。VPC 终端节点通过移除 VPC 与公共互联网之间的连接来降低安全风险和数据传输成本。通过 VPC 终端节点的网络活动事件,您可以查看谁在访问您的网络中的资源的详细信息。例如,您可以查看因 VPC 终端节点策略而被拒绝的操作的日志,或使用这些事件来验证更新现有策略的影响。VPC 终端节点所有者以前无法记录由于 VPC 终端节点策略而被拒绝的操作。通过此次发布,Amazon CloudTrail 网络活动事件将使您更有能力识别和响应数据边界内的恶意或未经授权的行为。

CloudTrail 会在您的账户中记录 IAM 委托人发起的所有 API 调用。该服务现在包括一项选择加入功能,可通过您的 VPC 终端节点记录操作。IAM 委托人包括经过身份验证的用户和可以提出亚马逊云科技请求的应用程序。这些日志经过编辑以保护消费者的隐私,但会识别账户何时有活动通过您的 VPC 终端节点访问支持的服务。

在这篇博客文章中,我们将向您展示如何通过以下步骤开始使用网络活动事件。我们还将介绍未经授权的用户尝试通过 VPC 终端节点访问您的 S3 存储桶的示例场景。在这种情况下,我们将完成有关如何调查和运行查询以查找与访问拒绝事件相关的日志的常见步骤:

  • 先决条件和设置将涵盖创建我们将在本博客中使用的资源的步骤,例如 VPC、VPC 终端节点、EC2、CloudTrail 和 IAM 角色。
  • 选择加入 CloudTrail 和 CloudTrail Lake 事件数据存储中的网络活动事件。
  • 模拟授权和未经授权的用户尝试通过 VPC 终端节点访问 Amazon S3。
  • 运行 CloudTrail Lake 查询,显示由于 VPC 终端节点策略而对 Amazon S3 的拒绝事件调用。
  • 使用 CloudTrail 控件可视化查询结果。

先决条件

  1. 创建一个 IAM 角色并将其命名为 role-ec2-s3。将 AmazonS3FullAccess 权限策略附加到 IAM 角色。此 IAM 角色将附加到 EC2 实例,该实例将用于访问 Amazon S3 中的存储桶。
  2. 创建带有私有子网的 VPC。
  3. 为 Amazon S3 创建 VPC 终端节点,在您的 VPC 终端节点中应用以下策略。此策略仅允许名为 role-ec2-s3 的角色。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::(account_id):role/role-s3"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListBucket"
            ],
            "Resource": "*"
        }
    ]
}

4. 创建 S3 存储桶。

5. 在私有子网中创建一个正在运行的 EC2 实例。

6. 将 IAM 角色 role-ec2-s3 附加到您的 EC2 实例中。

7. 创建 EC2 实例连接终端节点。此终端节点将用于通过管理控制台方便地通过 SSH 连接您的 EC2 实例。

8. 打开 CloudTrail 控制台并选择创建跟踪

图 1. CloudTrail

9. 在创建跟踪页面上,在跟踪名称中键入跟踪的名称。有关更多信息,请参阅 CloudTrail 资源、S3 存储桶和 KMS 密钥的命名要求。

10. 对于存储位置,选择新建 S3 存储桶以创建存储桶。当您创建存储桶时,CloudTrail 会创建并应用所需的存储桶策略。

11. 对于日志文件 SSE-KMS 加密,选择启用并命名 KMS 别名,例如 "亚马逊云科技-VPCE-ALIAS"

12. 将所有其他字段保留为默认值,然后单击

图 2. 为路径选择属性

13. 对于 "事件","禁用管理事件""启用网络活动事件"

14. 对于网络活动事件,请在下拉菜单中选择 amazonaws.com

15. 从 "日志选择器模板" 下拉列表中选择 "记录网络活动访问被拒绝事件"。这将允许您跟踪从 VPC 终端节点到 Amazon S3 的任何 "访问被拒绝" 事件。

16. 将所有其他字段保留为默认值,然后单击

图 3. 网络活动事件源

17. 查看之前配置的步骤,然后选择创建跟踪

图 4. 成功创建网络跟踪

18. 您已成功配置跟踪来监控对您的 VPC 终端节点进行的 API 调用。

创建 CloudTrail Lake 事件数据存储以提取网络活动事件

  1. 在 CloudTrail 控制台页面上,选择 Lake 打开下拉菜单,然后选择事件数据存储。
  2. 选择 "创建事件数据存储"。
  3. 在 "配置事件数据存储" 页面的 "常规详细信息" 中,输入 EDS 的名称,例如 "VPCE-Activity-EDS"
  4. 指定一年期可延期保留价格或七年保留期选项。
  5. 将所有其他字段保留为默认值,然后单击 "下一步"

图 5. 配置事件数据存储

  1. 选择事件页面上,选择 亚马逊云科技事件,然后选择 CloudTrail 事件
  2. 对于 CloudTrail 事件,请仅选择网络活动事件。
  3. 对于网络活动事件,从网络活动事件来源的下拉菜单中选择 amazonaws.com
  4. 从 "日志选择器模板" 下拉列表中选择 "记录网络活动访问被拒绝事件"。
  5. 选择 "下一步"

图 6. 为 EDS 选择网络活动事件

11. 在 "查看并创建" 页面上,查看您的选择。选择 "编辑" 对分区进行更改。当你准备好创建事件数据存储时,选择创建事件数据存储

图 7. 成功创建 EDS

  1. 您已成功创建事件数据存储。

模拟授权角色尝试使用 VPC 终端节点访问 Amazon S3

  1. 使用 EC2 实例连接终端节点连接到您的 EC2 实例。
  1. 运行 Amazon S3 putObject 命令在 S3 存储桶中创建文件夹:命令示例如下。
    aws s3api put-object --bucket bucket name --key folder name

该命令的结果应显示 S3 存储桶的列表。

图 8. 该命令的结果应显示 S3 存储桶的列表

3. 访问 S3 控制台,查看创建该文件夹的存储桶的内容,确认该文件夹的创建。

图 9. S3 确认已完成资源创建

模拟未经授权的角色尝试使用 VPC 终端节点访问 Amazon S3

  1. 更新 Amazon S3 的 VPC 终端节点策略并将 "允许" 更改为 "拒绝"。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::(account_id):role/role-s3"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListBucket"
            ],
            "Resource": "*"
        }
    ]
}

2. 使用 EC2 实例连接终端节点连接到您的 EC2 实例。

3. 运行 Amazon S3 putObject 命令在 S3 存储桶中创建文件夹:命令示例如下。

aws s3api put-object --bucket bucket name --key folder name

该命令的结果应为 AccessDenieException,因为任何 VPC 终端节点策略都不允许该操作。

图 10. 该命令的结果应为 AccessDenieException,因为任何 VPC 终端节点策略都不允许该操作

调查未经授权的用户使用 CloudTrail Lake 造成的 VpceAccessDenied

  1. 在控制台中前往 CloudTrail Lake,然后在导航窗格中选择 Lake 下拉列表下方的查询,然后选择新创建的事件数据存储。
  2. 运行下面的查询。注意在运行查询之前更新<Event data storeId>, (filter_start_event_time) 和 (filter_end_event_time)。
SELECT count(*) as VPCAccessDenied, userIdentity.arn,
    userIdentity.accountid,
    eventName,
    errorMessage,
    vpcEndpointId,
    vpcEndpointAccountId,
    sourceIPAddress
FROM <Event data store Id>
WHERE eventCategory = 'NetworkActivity'
    AND eventSource = 's3.amazonaws.com' 
    AND errorCode = 'VpceAccessDenied' 
    AND eventtime >= 'filter_start_event_time'
    AND eventtime <= 'filter_end_event_time'
    GROUP BY 
    userIdentity.arn,
    userIdentity.accountid,
    eventName,
    errorMessage,
    vpcEndpointId,
    vpcEndpointAccountId,
    sourceIPAddress
    ORDER BY eventName DESC;

示例 CloudTrail Lake 查询显示网络活动事件,错误代码为 vpceAccessDenied。查询的结果集包括活动从何处遍历的 vpcendPointID。

图 11. 用于显示网络活动的 CloudTrail Lake 查询示例

通过小部件可视化 CloudTrail 查询

  1. 在 CloudTrail 查询控制台中,选择可视化工具,然后添加到仪表板。

图 12. 通过 CloudTrail 仪表板可视化查询

2. 输入控件标题,例如 "VPCE-DenyEvents-Widgets",然后选择创建仪表板。

图 13. 命名 CloudTrail

3. 输入仪表板的名称。确认事件数据存储与前面步骤中创建的事件数据存储库相同,然后选择创建仪表板。

4. 您现在已经可视化了 VPC 终端节点访问被拒绝操作的查询

图 14. 带有小部件输出的 CloudTrail 仪表板

正在清理

为避免将来产生费用,请删除您在本博客中创建的资源。

  • 删除 Amazon CloudTrail 跟踪。
  • 删除事件数据存储。
  • 删除实例配置文件和 IAM 角色。
  • 删除 EC2 实例。
  • 删除为 Amazon S3 和 Amazon IAM 创建的 VPC 终端节点。
  • 删除子网和 VPC。
  • 删除 Amazon S3 存储桶。

结论

Amazon CloudTrail 网络活动事件记录增强了云安全和网络可见性。该功能支持在虚拟私有云 (VPC) 环境中进行全面的监控和审计。VPC 终端节点日志记录可帮助组织检测和响应未经授权的访问尝试。作为一项选择加入功能,它保护了消费者的隐私,同时消除了对自定义监控系统的需求。客户可以轻松跟踪外部凭证何时访问其 VPC 终端节点,防止未经授权的数据移动。CloudTrail 网络活动事件通过提供对 VPC 终端节点交互的详细见解,增强了安全合规性并简化了操作。要了解有关 VPC 终端节点的 CloudTrail 网络活动及其功能的更多信息,请查看文档。

Diwakar Balakrishnan

迪瓦卡尔·巴拉克里希南是一名解决方案架构师,也是云运营技术领域社区的成员,该社区专注于配置、合规性和审计。当他离开笔记本电脑时,他喜欢做饭和驾驶肌肉车。

John Agustin

John 是亚马逊云科技的高级技术客户经理,也是云运营技术领域社区的活跃成员。他与企业客户合作,通过云优化和卓越运营推动业务转型。他的专业知识涵盖云治理、FinOps 和数据分析,使组织能够实现其战略云计划。

Angel Tolson

Angel 是亚马逊云科技的解决方案架构师,与企业客户合作,为他们提供技术指导并帮助他们实现业务目标。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。