你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将 Microsoft Sentinel 连接到 Amazon Web Services 以引入 AWS 服务日志数据

使用 Amazon Web Services (AWS) 连接器将 AWS 服务日志拉入 Microsoft Sentinel。 这些连接器通过授予 Microsoft Sentinel 访问你的 AWS 资源日志来运行。 设置连接器会在 Amazon Web Services 和 Microsoft Sentinel 之间建立信任关系。 这一过程通过在 AWS 上创建角色来完成,该角色可以授予 Microsoft Sentinel 访问 AWS 日志的权限。

此连接器可在两个版本中使用:旧连接器用于 CloudTrail 管理和数据日志;新版本可以通过从 S3 存储桶(指向 AWS 文档的链接)拉取日志来从以下 AWS 服务引入日志:

本选项卡介绍如何配置 AWS S3 连接器。 设置的过程包括两个部分:AWS 端和 Microsoft Sentinel 端。 每端的进程都将产生另一端使用的信息。 这种双向身份验证可建立安全通信。

先决条件

  • 确保所选 AWS 服务中的日志使用 Microsoft Sentinel 接受的格式:

    • Amazon VPC:GZIP 格式的 .csv 文件,带标题;分隔符:空格。
    • Amazon GuardDuty:json-line 和 GZIP 格式。
    • AWS CloudTrail:GZIP 格式的 .json 文件。
    • CloudWatch:GZIP 格式的 .csv 文件,不带标题。 如果需要将日志转换为此格式,则可以使用此 CloudWatch lambda 函数
  • 必须拥有对 Microsoft Sentinel 工作区的写入权限。

  • 从 Microsoft Sentinel 中的“内容中心”安装 Amazon Web Services 解决方案。 有关更多信息,请参阅发现和管理 Microsoft Sentinel 的现成内容

体系结构概述

此图和以下文本显示了此连接器解决方案的各个部分如何交互。

Screenshot of A W S S 3 connector architecture.

  • AWS 服务配置为将其日志发送到 S3(简单存储服务)存储桶。

  • S3 存储桶在收到新日志时会向 SQS(简单队列服务)消息队列发送通知消息。

  • Microsoft Sentinel AWS S3 连接器定期轮询 SQS 队列。 如果队列中有消息,则该消息将包含日志文件的路径。

  • 连接器读取消息以及路径,然后从 S3 存储桶中提取文件。

  • 若要连接到 SQS 队列和 S3 存储桶,Microsoft Sentinel 使用联合 Web 标识提供者 (Microsoft Entra ID) 通过 OpenID Connect (OIDC) 在 AWS 中进行身份验证,并承担 AWS IAM 角色。 该角色配置了权限策略,允许其访问这些资源。

连接 S3 连接器

  • 在 AWS 环境中

    • 配置你的 AWS 服务以将日志发送到 S3 存储桶。

    • 创建一个简单队列服务 (SQS) 队列以提供通知。

    • 创建 Web 标识提供者,以通过 OpenID Connect (OIDC) 向 AWS 验证用户

    • 创建一个承担的角色,以授予由 OIDC Web 标识提供者进行身份验证的用户访问 AWS 资源的权限

    • 附加适当的 IAM 权限策略以授予承担的角色对适当资源(S3 存储桶、SQS)的访问权限。

    我们在我们的 GitHub 存储库中提供了一个脚本,该脚本可以自动执行此过程的 AWS 端。 请参阅本文档后面关于自动设置说明。

  • 在 Microsoft Sentinel 中

自动设置

为了简化载入流程,Microsoft Sentinel 提供了一个 PowerShell 脚本来自动设置连接器的 AWS 端,即所需的 AWS 资源、凭证和权限。

该脚本采用以下参数:

  • 创建 OIDC Web 标识提供者,以向 AWS 验证 Microsoft Entra ID 用户。

  • 创建具有最低必要权限的 IAM 承担的角色,以授予经 OIDC 认证的用户访问给定 S3 存储桶和 SQS 队列中的日志的权限

  • 使指定的 AWS 服务可以将日志发送到该 S3 存储桶,并将通知消息发送到该 SQS 队列。

  • 如有必要,请为此创建该 S3 存储桶和该 SQS 队列。

  • 配置任何必要的 IAM 权限策略并将其应用于上面创建的 IAM 角色。

对于 Azure 政府云,专用脚本创建一个不同的 OIDC Web 标识提供者,并向其分配 IAM 承担的角色。

自动安装的先决条件

说明

若要运行该脚本以安装连接器,请执行以下步骤:

  1. 在 Microsoft Sentinel 导航菜单中,选择“数据连接器”。

  2. 从数据连接器库中选择 Amazon Web Services S3

    如果未看到此连接器,请从 Microsoft Sentinel 中的“内容中心”安装 Amazon Web Services 解决方案。

  3. 在连接器的详细信息窗格中,选择“打开连接器页面”。

  4. 在“配置”部分的中的“1. 设置 AWS 环境”下面,展开“使用 PowerShell 脚本来设置(推荐)”。

  5. 按照屏幕上的说明从连接器页面下载和提取 AWS S3 设置脚本(链接下载包含主设置脚本和帮助程序脚本的 zip 文件)。

    注意

    若要将 AWS 日志引入 Azure 政府云,请下载并提取此专用 AWS S3 Gov 安装脚本

  6. 在运行脚本之前,请在你的 PowerShell 命令行中运行 aws configure 命令,并根据提示输入相关信息。 有关详细信息,请参阅 AWS 命令行界面 | 配置基础知识(来自 AWS 文档)。

  7. 现在运行该脚本。 从连接器页面复制命令(在“运行脚本以设置环境”下)并将其粘贴到命令行中。

  8. 此脚本将提示你输入你的工作区 ID。 此 ID 显示在连接器页上。 复制并粘贴到脚本的提示符中。

    Screenshot of command to run setup script and workspace ID.

  9. 脚本完成运行后,从脚本的输出中复制“角色 ARN”和“SQS URL”(参见下面第一个屏幕截图中的示例),并粘贴到连接器页面中“2. 添加连接”下的相应字段中(参见下面的第二个屏幕截图)。

    Screenshot of output of A W S connector setup script.

    Screenshot of pasting the A W S role information from the script, to the S3 connector.

  10. 从“目标表”下拉列表中选择数据类型。 这告诉连接器正在建立此连接以收集哪些 AWS 服务的日志,以及它将把摄取的数据存储到哪个 Log Analytics 表中。 然后选择“添加连接”。

注意

脚本可能需要长达 30 分钟的时间才能完成运行。

手动安装

Microsoft 建议使用自动设置脚本来部署此连接器。 如果出于某种原因你不想利用这种便利,请按照以下步骤手动设置连接器。

准备 AWS 资源

  1. 创建一个 S3 存储桶,你的 AWS 服务(VPC、GuardDuty、CloudTrail 或 CloudWatch)中的日志将发送到该存储桶

  2. 创建一个标准简单队列服务 (SQS) 消息队列,S3 存储桶会将通知发布到该消息队列

  3. 配置你的 S3 存储桶以将通知消息发送到你的 SQS 队列。

安装 AWS 数据连接器和准备环境

  1. 在 Microsoft Sentinel 导航菜单中,选择“数据连接器”。

  2. 从数据连接器库中选择 Amazon Web Services S3

    如果未看到此连接器,请从 Microsoft Sentinel 中的“内容中心”安装 Amazon Web Services 解决方案。 有关更多信息,请参阅发现和管理 Microsoft Sentinel 的现成内容

  3. 在连接器的详细信息窗格中,选择“打开连接器页面”。

  4. 在“配置”下,展开“使用 PowerShell 脚本安装(推荐)”,然后将“外部 ID (工作区 ID)”复制到剪贴板

创建 Open ID Connect (OIDC) Web 标识提供者和 AWS 承担的角色

  1. 在其他浏览器窗口或标签页中打开 AWS 控制台。

  2. 创建 Web 标识提供者。 按照 AWS 文档中的以下说明进行操作:
    创建 OpenID Connect (OIDC) 标识提供者

    参数 选择/值 注释
    客户端 ID - 忽略此项,你已拥有。 请参阅下方的“受众”行
    提供程序类型 OpenID Connect 代替默认 SAML
    提供商 URL 商业:
    sts.windows.net/33e01921-4d64-4f8c-a055-5bdaffd5e33d/

    政府:
    sts.windows.net/cab8a31a-1906-4287-a0d8-4eef66b95f6e/
    指纹 626d44e704d1ceabe3bf0d53397464ac8080142c 如果在 IAM 控制台中创建,选择“获取指纹”应该会提供此结果
    受众 商业:
    api://1462b192-27f7-4cb9-8523-0f4ecb54b47e

    政府:
    api://d4230588-5f84-4281-a9c7-2c15194b28f7
  3. 创建“IAM 承担的角色”。 按照 AWS 文档中的以下说明进行操作:
    为 Web 标识或 OpenID Connect 联合身份验证创建角色

    将此表中的值用于 Azure 商业云。

    参数 选择/值 注释
    受信任实体类型 Web 标识 代替默认 AWS 服务
    标识提供者 sts.windows.net/33e01921-4d64-4f8c-a055-5bdaffd5e33d/ 在上一步中创建的提供商。
    受众 api://1462b192-27f7-4cb9-8523-0f4ecb54b47e 在上一步中为标识提供者定义的受众。
    要分配的权限
    • AmazonSQSReadOnlyAccess
    • AWSLambdaSQSQueueExecutionRole
    • AmazonS3ReadOnlyAccess
    • ROSAKMSProviderPolicy
    • 用于引入不同类型的 AWS 服务日志的其他策略
    有关这些策略的信息,请参阅 Microsoft Sentinel GitHub 存储库中的 AWS S3 连接器权限策略页
    Name 示例:“OIDC_MicrosoftSentinelRole” 选择一个有意义的名称,其中包含对 Microsoft Sentinel 的引用。

    名称必须包含确切的前缀 OIDC_,否则连接器将无法正常工作。

    将此表中的值用于 Azure 政府云。

    参数 选择/值 注释
    受信任实体类型 Web 标识 代替默认 AWS 服务
    标识提供者 sts.windows.net/cab8a31a-1906-4287-a0d8-4eef66b95f6e/ 在上一步中创建的提供商。
    受众 api://d4230588-5f84-4281-a9c7-2c15194b28f7 在上一步中为标识提供者定义的受众。
    要分配的权限
    • AmazonSQSReadOnlyAccess
    • AWSLambdaSQSQueueExecutionRole
    • AmazonS3ReadOnlyAccess
    • ROSAKMSProviderPolicy
    • 用于引入不同类型的 AWS 服务日志的其他策略。
    有关这些策略的信息,请参阅 Microsoft Sentinel GitHub 存储库中适用于政府的 AWS S3 连接器权限策略页
    Name 示例:“OIDC_MicrosoftSentinelRole” 选择一个有意义的名称,其中包含对 Microsoft Sentinel 的引用。

    名称必须包含确切的前缀 OIDC_,否则连接器将无法正常工作。
  4. 编辑新角色的信任策略并添加另一个条件:
    "sts:RoleSessionName": "MicrosoftSentinel_{WORKSPACE_ID)"

    重要

    sts:RoleSessionName 参数的值必须具有确切的前缀 MicrosoftSentinel_,否则连接器将无法正常工作。

    完成的信任策略应如下所示:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "arn:aws:iam::XXXXXXXXXXXX:oidc-provider/sts.windows.net/cab8a31a-1906-4287-a0d8-4eef66b95f6e/"
          },
          "Action": "sts:AssumeRoleWithWebIdentity",
          "Condition": {
            "StringEquals": {
              "sts.windows.net/cab8a31a-1906-4287-a0d8-4eef66b95f6e/:aud": "api://d4230588-5f84-4281-a9c7-2c15194b28f7",
              "sts:RoleSessionName": "MicrosoftSentinel_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
            }
          }
        }
      ]
    }
    
    • XXXXXXXXXXXX 是你的 AWS 帐户 ID。
    • XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX 是你的 Microsoft Sentinel 工作区 ID。

    完成编辑后,更新(保存)策略。

将 AWS 角色和队列信息添加到 S3 数据连接器

  1. 在打开 AWS 控制台的浏览器标签页中,输入标识和访问管理 (IAM) 服务并导航到“角色”列表。 选择上面创建的角色。

  2. 将 ARN 复制到剪贴板

  3. 输入“简单队列服务”,选择创建的 SQS 队列,并将队列 URL 复制到剪贴板

  4. 返回到 Microsoft Sentinel 浏览器标签页,该标签页应打开“Amazon Web Services S3(预览版)”数据连接器页。 在“2. 定义警报详细信息“下,“添加连接”下:

    1. 将你在两个步骤前复制的 IAM 角色 ARN 粘贴到“要添加的角色”字段中。
    2. 将你在上一步中复制的 SQS 队列的 URL 粘贴到“SQS URL”字段中。
    3. 从“目标表”下拉列表中选择数据类型。 这告诉连接器正在建立此连接以收集哪些 AWS 服务的日志,以及它将把摄取的数据存储到哪个 Log Analytics 表中。
    4. 选择“添加连接”。

    Screenshot of adding an A W S role connection to the S3 connector.

配置 AWS 服务以将日志导出到 S3 存储桶

有关将每种类型的日志发送到 S3 存储桶的说明,请参阅 Amazon Web Services 文档(链接如下):

已知问题和疑难解答

已知问题

  • 不同类型的日志可以存储在相同的 S3 存储桶中,但不应存储在同一路径中。

  • 每个 SQS 队列都应指向一种类型的消息,因此如果要提取 GuardDuty 调查结果和 VPC 流日志,应该为每种类型设置单独的队列。

  • 同样,单个 SQS 队列只能在 S3 存储桶中提供一个路径,因此,如果出于任何原因将日志存储在多个路径中,则每个路径都需要其自己的专用 SQS 队列。

疑难解答

了解如何排查 Amazon Web Services S3 连接器问题

后续步骤

在本文档中,你了解了如何连接到 AWS 资源以将其日志提取到 Microsoft Sentinel。 若要详细了解 Microsoft Sentinel,请参阅以下文章: