你当前正在访问 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 服务引入日志:
- Amazon Virtual Private Cloud (VPC) - VPC 流日志
- Amazon GuardDuty - 发现
- AWS CloudTrail - 管理和数据事件
- AWS CloudWatch - CloudWatch 日志
本选项卡介绍如何配置 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 的现成内容。
体系结构概述
此图和以下文本显示了此连接器解决方案的各个部分如何交互。
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 门户中启用和配置 AWS S3 连接器。 请参阅以下说明。
自动设置
为了简化载入流程,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 承担的角色。
自动安装的先决条件
- 你的计算机上必须具有 PowerShell 和 AWS CLI。
- PowerShell 安装说明
- AWS CLI 安装说明(来自 AWS 文档)
说明
若要运行该脚本以安装连接器,请执行以下步骤:
在 Microsoft Sentinel 导航菜单中,选择“数据连接器”。
从数据连接器库中选择 Amazon Web Services S3。
如果未看到此连接器,请从 Microsoft Sentinel 中的“内容中心”安装 Amazon Web Services 解决方案。
在连接器的详细信息窗格中,选择“打开连接器页面”。
在“配置”部分的中的“1. 设置 AWS 环境”下面,展开“使用 PowerShell 脚本来设置(推荐)”。
按照屏幕上的说明从连接器页面下载和提取 AWS S3 设置脚本(链接下载包含主设置脚本和帮助程序脚本的 zip 文件)。
注意
若要将 AWS 日志引入 Azure 政府云,请下载并提取此专用 AWS S3 Gov 安装脚本。
在运行脚本之前,请在你的 PowerShell 命令行中运行
aws configure
命令,并根据提示输入相关信息。 有关详细信息,请参阅 AWS 命令行界面 | 配置基础知识(来自 AWS 文档)。现在运行该脚本。 从连接器页面复制命令(在“运行脚本以设置环境”下)并将其粘贴到命令行中。
此脚本将提示你输入你的工作区 ID。 此 ID 显示在连接器页上。 复制并粘贴到脚本的提示符中。
脚本完成运行后,从脚本的输出中复制“角色 ARN”和“SQS URL”(参见下面第一个屏幕截图中的示例),并粘贴到连接器页面中“2. 添加连接”下的相应字段中(参见下面的第二个屏幕截图)。
从“目标表”下拉列表中选择数据类型。 这告诉连接器正在建立此连接以收集哪些 AWS 服务的日志,以及它将把摄取的数据存储到哪个 Log Analytics 表中。 然后选择“添加连接”。
注意
脚本可能需要长达 30 分钟的时间才能完成运行。
手动安装
Microsoft 建议使用自动设置脚本来部署此连接器。 如果出于某种原因你不想利用这种便利,请按照以下步骤手动设置连接器。
准备 AWS 资源
创建一个 S3 存储桶,你的 AWS 服务(VPC、GuardDuty、CloudTrail 或 CloudWatch)中的日志将发送到该存储桶。
- 请参阅 AWS 文档中创建 S3 存储存储桶的说明。
创建一个标准简单队列服务 (SQS) 消息队列,S3 存储桶会将通知发布到该消息队列。
- 请参阅 AWS 文档中创建简单队列服务 (SQS) 队列的说明。
配置你的 S3 存储桶以将通知消息发送到你的 SQS 队列。
- 请参阅 AWS 文档中将通知发布到 SQS 队列的说明。
安装 AWS 数据连接器和准备环境
在 Microsoft Sentinel 导航菜单中,选择“数据连接器”。
从数据连接器库中选择 Amazon Web Services S3。
如果未看到此连接器,请从 Microsoft Sentinel 中的“内容中心”安装 Amazon Web Services 解决方案。 有关更多信息,请参阅发现和管理 Microsoft Sentinel 的现成内容。
在连接器的详细信息窗格中,选择“打开连接器页面”。
在“配置”下,展开“使用 PowerShell 脚本安装(推荐)”,然后将“外部 ID (工作区 ID)”复制到剪贴板。
创建 Open ID Connect (OIDC) Web 标识提供者和 AWS 承担的角色
在其他浏览器窗口或标签页中打开 AWS 控制台。
创建 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
创建“IAM 承担的角色”。 按照 AWS 文档中的以下说明进行操作:
为 Web 标识或 OpenID Connect 联合身份验证创建角色。参数 选择/值 注释 受信任实体类型 Web 标识 代替默认 AWS 服务。 标识提供者 商业: sts.windows.net/33e01921-4d64-4f8c-a055-5bdaffd5e33d/
政府:sts.windows.net/cab8a31a-1906-4287-a0d8-4eef66b95f6e/
在上一步中创建的提供商。 受众 商业: api://1462b192-27f7-4cb9-8523-0f4ecb54b47e
政府:api://d4230588-5f84-4281-a9c7-2c15194b28f7
在上一步中为标识提供者定义的受众。 要分配的权限 AmazonSQSReadOnlyAccess
AWSLambdaSQSQueueExecutionRole
AmazonS3ReadOnlyAccess
ROSAKMSProviderPolicy
- 用于引入不同类型的 AWS 服务日志的其他策略
有关这些策略的信息,请参阅 Microsoft Sentinel GitHub 存储库中的相关 AWS S3 连接器权限策略页。 Name "OIDC_MicrosoftSentinelRole" 选择一个有意义的名称,其中包含对 Microsoft Sentinel 的引用。
名称必须包含确切的前缀OIDC_
,否则连接器将无法正常工作。编辑新角色的信任策略并添加另一个条件:
"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 数据连接器
在打开 AWS 控制台的浏览器标签页中,输入标识和访问管理 (IAM) 服务并导航到“角色”列表。 选择上面创建的角色。
将 ARN 复制到剪贴板。
输入“简单队列服务”,选择创建的 SQS 队列,并将队列 URL 复制到剪贴板。
返回到 Microsoft Sentinel 浏览器标签页,该标签页应打开“Amazon Web Services S3(预览版)”数据连接器页。 在“2. 定义警报详细信息“下,“添加连接”下:
- 将你在两个步骤前复制的 IAM 角色 ARN 粘贴到“要添加的角色”字段中。
- 将你在上一步中复制的 SQS 队列的 URL 粘贴到“SQS URL”字段中。
- 从“目标表”下拉列表中选择数据类型。 这告诉连接器正在建立此连接以收集哪些 AWS 服务的日志,以及它将把摄取的数据存储到哪个 Log Analytics 表中。
- 选择“添加连接”。
配置 AWS 服务以将日志导出到 S3 存储桶
有关将每种类型的日志发送到 S3 存储桶的说明,请参阅 Amazon Web Services 文档(链接如下):
-
注意
如果选择自定义日志格式,则必须包含 start 属性,因为它映射到 Log Analytics 工作区中的 TimeGenerated 字段。 否则,TimeGenerated 字段将填充事件的 ingested time 属性,后者无法准确描述日志事件。
-
注意
在 AWS 中,结果默认每隔 6 小时导出一次。 根据环境要求调整更新的活动结果的导出频率。 若要加快此过程,可以修改默认设置,每 15 分钟导出一次结果。 请参阅设置导出更新的活动结果的频率。
TimeGenerated 字段中已经填充了发现结果“Update at”值。
默认情况下,AWS CloudTrail 跟踪存储在 S3 存储桶中。
已知问题和疑难解答
已知问题
不同类型的日志可以存储在相同的 S3 存储桶中,但不应存储在同一路径中。
每个 SQS 队列都应指向一种类型的消息,因此如果要提取 GuardDuty 调查结果和 VPC 流日志,应该为每种类型设置单独的队列。
同样,单个 SQS 队列只能在 S3 存储桶中提供一个路径,因此,如果出于任何原因将日志存储在多个路径中,则每个路径都需要其自己的专用 SQS 队列。
疑难解答
后续步骤
在本文档中,你了解了如何连接到 AWS 资源以将其日志提取到 Microsoft Sentinel。 若要详细了解 Microsoft Sentinel,请参阅以下文章:
- 了解如何洞悉数据和潜在威胁。
- 开始使用 Microsoft Sentinel 检测威胁。
- 使用工作簿监视数据。