使用文件访问审计记录最终用户的访问权限 - FSx适用于 Windows 文件服务器的亚马逊

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

使用文件访问审计记录最终用户的访问权限

Amazon FSx for Windows 文件服务器支持审核最终用户对文件、文件夹和文件共享的访问权限。您可以选择将文件系统的审核事件日志发送到其他提供丰富功能的 AWS 服务。其中包括启用查询、处理、存储和存档日志、发布通知以及触发操作,以进一步推进您的安全与合规目标。

有关使用文件访问审计来深入了解访问模式和实施最终用户活动安全通知的更多信息,请参阅文件存储访问模式见解实施最终用户活动安全通知

注意

只有吞吐量为 32 MBps 或更大FSx的 Windows 文件系统才支持文件访问审计。您可以修改现有文件系统的吞吐容量。有关更多信息,请参阅 正在管理 Windows 文件服务器文件系统的吞吐容量 FSx

文件访问审计能让您根据您定义的审核控制措施记录最终用户对单个文件、文件夹和文件共享的访问。审计控制也称为NTFS系统访问控制列表 (SACLs)。如果您已经对现有文件数据设置了审计控制,则可以通过创建新的 Amazon FSx for Windows 文件服务器文件系统并迁移数据来利用文件访问审计。

Amazon FSx 支持以下 Windows 审核事件,用于访问文件、文件夹和文件共享:

  • 对于文件访问,它支持:全部、遍历文件夹/执行文件、列出文件夹/读取数据、读取属性、创建文件/写入数据、创建文件夹/追加数据、写入属性、删除子文件夹和文件、删除、读取权限、更改权限和获取所有权。

  • 对于文件共享访问,它支持:连接到文件共享。

在文件、文件夹和文件共享访问中,Amazon FSx 支持记录成功尝试(例如拥有足够权限的用户成功访问文件或文件共享)、失败的尝试或两者兼而有之。

您可以配置是只想对文件和文件夹进行访问审核,还是只对文件共享进行访问审核,或者都进行审核。您也可以配置应记录哪些类型的访问(仅成功尝试、仅失败尝试或同时记录两者)。您还可以随时关闭文件访问审计。

注意

文件访问审计仅记录启用后的最终用户访问数据。也就是说,文件访问审计不会生成在启用文件访问审核前发生的最终用户文件、文件夹和文件共享访问活动的审计事件日志。

支持的访问审核事件最大速率为每秒 5000 个事件。访问审核事件不针对每个文件读取和写入操作生成,而是每个文件元数据操作生成一次,例如用户创建、打开或删除文件时。

审核事件日志目标

启用文件访问审计时,必须配置 Amazon 向其FSx发送审核事件日志的 AWS 服务。您可以将审计事件日志发送到日志组中的 Amazon CloudWatch 日志流或 Amazon Data CloudWatch Firehose 传输流。您可以在创建 Amazon FSx for Windows 文件服务器文件系统时选择审核事件日志目标,也可以在更新现有文件系统之后随时选择审计事件日志目标。有关更多信息,请参阅 管理文件访问审计

以下是一些可以帮助您决定如何选择审核事件日志目标的建议:

  • 如果您想在 Amazon CloudWatch 控制台中存储、查看和搜索审计事件日志,使用 Logs Insights 对日志进行查询,以及触发 CloudWatch 警报或 Lambda 函数,请选择 CloudWatch CloudWatch 日志。

  • 如果您想持续将事件流式传输到亚马逊 S3 中的存储、亚马逊 Redshift 中的数据库、亚马逊服务或合作伙伴解决方案(例如 Splunk 或 Datadog)进行进一步分析, AWS 请选择 OpenSearch Amazon Data Firehose。

默认情况下,Amazon FSx 将在您的账户中创建并使用默认 CloudWatch 日志组作为审核事件日志的目标。如果要使用自定义 CloudWatch 日志组或使用 Firehose 作为审核事件日志目标,则对审计事件日志目标的名称和位置要求如下:

  • CloudWatch 日志日志组的名称必须以/aws/fsx/前缀开头。如果您在控制台上创建或更新文件系统时没有现有的 CloudWatch 日志日志组,Amazon FSx 可以在日志组中创建和使用默认 CloudWatch /aws/fsx/windows日志流。如果您不想使用默认日志组,则配置用户界面允许您在控制台上创建或更新文件系统时创建 CloudWatch 日志日志组。

  • Firehose 传输流的名称必须以前aws-fsx-缀开头。如果您没有 Firehose 传送流,则可以在控制台创建或更新文件系统时创建一个 Firehose 传送流。

  • 必须将 Firehose 传输流配置为Direct PUT用作其来源。不得使用现有的 Kinesis 数据流作为传输流的数据来源。

  • 目标( CloudWatch 日志日志组或 Firehose 传输流)必须与您的亚马逊FSx文件系统位于同一个 AWS 分区 AWS 区域、和 AWS 账户 中。

您可以随时更改审核事件日志的目标(例如,从 Lo CloudWatch gs 更改为 Firehose)。更改后,新的审核事件日志便只会发送到新的目标。

最大努力审核事件日志传送

通常,审计事件日志记录会在几分钟内传送到目的地,但有时可能需要更长的时间。在极少数情况下,审核事件日志记录可能会有遗漏。如果您的使用案例需要特定的语义(例如,确保不遗漏任何审核事件),我们建议您在设计工作流程时对遗漏的事件进行说明。您可以通过扫描文件系统上的文件和文件夹结构来审核遗漏的事件。

迁移审核控制措施

如果您已经对现有文件数据设置了审计控制 (SACLs),则可以创建 Amazon FSx 文件系统并将数据迁移到新的文件系统。我们建议使用 AWS DataSync 来传输数据以及与您的 Amazon FSx 文件系统关联SACLs的。此外,您还可以使用 Robocopy(Robust File Copy)。有关更多信息,请参阅 将现有文件存储迁移到 Amazon FSx

查看事件日志

在 Amazon 开始发布审计事件日志后FSx,您可以查看这些日志。查看日志的位置和方式取决于审核事件日志的目标:

  • 要查看 CloudWatch 日志日志,请进入 CloudWatch 控制台,选择审计事件日志发送到的日志组和日志流。有关更多信息,请参阅 Amazon Logs 用户指南中的查看发送到 CloudWatch CloudWatch 日志的日志数据

    您可以使用 CloudWatch Logs Insights 以交互方式搜索和分析您的日志数据。有关更多信息,请参阅《Amazon Logs 用户指南》中的 “使用 CloudWatch 日志见解分析 CloudWatch 日志数据”。

    您还可以将审核事件日志导出到 Amazon S3。有关更多信息,请参阅《亚马逊日志用户指南》中的将日志数据导出到 Amazon CloudWatch S3。

  • 您无法在 Firehose 上查看审核事件日志。但是,您可以将 Firehose 配置为将日志转发到可以从中读取的目标。目的地包括亚马逊 S3、亚马逊 Redshift、亚马逊 OpenSearch 服务以及 Splunk 和 Datadog 等合作伙伴解决方案。有关更多信息,请参阅亚马逊 Dat a Firehose 开发者指南中的选择目的地

审核事件字段

本节介绍审核事件日志中的信息描述以及审核事件示例。

以下是对 Windows 审核事件中重要字段的描述。

  • EventID 指 Microsoft 定义的 Windows 事件日志事件 ID。有关文件系统事件文件共享事件的信息,请参阅 Microsoft 文档。

  • SubjectUserName指执行访问权限的用户。

  • ObjectName指已访问的目标文件、文件夹或文件共享。

  • ShareName适用于为文件共享访问而生成的事件。例如,EventID 5140 在访问网络共享对象时生成。

  • IpAddress是指启动文件共享事件的客户端。

  • Keywords(如有)指明文件访问成功还是失败。如果是成功的访问,该值为 0x8020000000000000。如果是失败的访问,该值为 0x8010000000000000

  • TimeCreated SystemTime指事件在系统中生成并以 < YYYY-MM-DDThh-: mm: ss.s>Z 格式显示的时间。

  • 计算机是指文件系统 Windows 远程 PowerShell 端点的DNS名称,可用于识别文件系统。

  • AccessMask,如果可用,则指所执行的文件访问类型(例如 ReadData、 WriteData)。

  • AccessList指请求或授予对对象的访问权限。有关详细信息,请参阅下表和 Microsoft 文档(例如事件 4556 中)。

访问类型 访问掩码

读取数据或列出目录

0x1

%%4416

写入数据或添加文件

0x2

%%4417

追加数据或添加子目录

0x4

%%4418

读取扩展属性

0x8

%%4419

写入扩展属性

0x10

%%4420

执行/遍历

0x20

%%4421

删除子

0x40

%%4422

读取属性

0x80

%%4423

写入属性

0x100

%%4424

删除

0x10000

%%1537

阅读 ACL

0x20000

%%1538

写 ACL

0x40000

%%1539

写入所有者

0x80000

%1540

同步

0x100000

%1541

访问安全 ACL

0x1000000

%%1542

以下是一些关键事件和示例。请注意,格式化XML是为了便于阅读。

删除对象时会记录事件 ID 4660

<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'><System> <Provider Name='Microsoft-Windows-Security-Auditing' Guid='{54849625-5478-4994-A5BA-3E3B0328C30D}'/> <EventID>4660</EventID><Version>0</Version><Level>0</Level> <Task>12800</Task><Opcode>0</Opcode> <Keywords>0x8020000000000000</Keywords><TimeCreated SystemTime='2021-05-18T04:51:56.916563800Z'/> <EventRecordID>315452</EventRecordID><Correlation/> <Execution ProcessID='4' ThreadID='5636'/><Channel>Security</Channel> <Computer>amznfsxgyzohmw8.example.com</Computer><Security/></System><EventData> <Data Name='SubjectUserSid'>S-1-5-21-658495921-4185342820-3824891517-1113</Data> <Data Name='SubjectUserName'>Admin</Data><Data Name='SubjectDomainName'>example</Data> <Data Name='SubjectLogonId'>0x50932f71</Data><Data Name='ObjectServer'>Security</Data> <Data Name='HandleId'>0x12e0</Data><Data Name='ProcessId'>0x4</Data><Data Name='ProcessName'></Data> <Data Name='TransactionId'>{00000000-0000-0000-0000-000000000000}</Data></EventData></Event>

请求删除文件时会记录事件 ID 4659

<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'><System> <Provider Name='Microsoft-Windows-Security-Auditing' Guid='{54849625-5478-4994-A5BA-3E3B0328C30D}'/> <EventID>4659</EventID><Version>0</Version><Level>0</Level><Task>12800</Task><Opcode>0</Opcode> <Keywords>0x8020000000000000</Keywords><TimeCreated SystemTime='2021-0603T19:18:09.951551200Z'/> <EventRecordID>308888</EventRecordID><Correlation/><Execution ProcessID='4' ThreadID='5540'/> <Channel>Security</Channel><Computer>amznfsxgyzohmw8.example.com</Computer><Security/></System> <EventData><Data Name='SubjectUserSid'>S-1-5-21-658495921-4185342820-3824891517-1113</Data> <Data Name='SubjectUserName'>Admin</Data><Data Name='SubjectDomainName'>example</Data> <Data Name='SubjectLogonId'>0x2a9a603f</Data><Data Name='ObjectServer'>Security</Data> <Data Name='ObjectType'>File</Data><Data Name='ObjectName'>\Device\HarddiskVolume8\shar\event.txt</Data> <Data Name='HandleId'>0x0</Data><Data Name='TransactionId'>{00000000-0000-0000-0000-000000000000}</Data> <Data Name='AccessList'>%%1537 %%4423 </Data><Data Name='AccessMask'>0x10080</Data><Data Name='PrivilegeList'>-</Data> <Data Name='ProcessId'>0x4</Data></EventData></Event>

为对象执行特定操作时会记录事件 ID 4663。以下示例显示了从文件中读取数据,这些数据可以通过 AccessList %%4416 进行解读。

<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'><System> <Provider Name='Microsoft-Windows-Security-Auditing' Guid='{54849625-5478-4994-A5BA-3E3B0328C30D}'/> <EventID>4663< /EventID><Version>1</Version><Level>0</Level><Task>12800</Task><Opcode>0</Opcode> <Keywords>0x8020000000000000</Keywords><TimeCreated SystemTime='2021-06-03T19:10:13.887145400Z'/> <EventRecordID>308831</EventRecordID><Correlation/><Execution ProcessID='4' ThreadID='6916'/> <Channel>Security</Channel><Computer>amznfsxgyzohmw8.example.com</Computer><Security/></System> <EventData>< Data Name='SubjectUserSid'>S-1-5-21-658495921-4185342820-3824891517-1113< /Data> <Data Name='SubjectUserName'>Admin</Data><Data Name='SubjectDomainName'>example</Data> <Data Name='SubjectLogonId'>0x2a9a603f</Data><Data Name='ObjectServer'>Security</Data> <Data Name='ObjectType'>File</Data><Data Name='ObjectName'>\Device\HarddiskVolume8\share\event.txt</Data> <Data Name='HandleId'>0x101c</Data><Data Name='AccessList'>%%4416 </Data> <Data Name='AccessMask'>0x1</Data><Data Name='ProcessId'>0x4</Data> <Data Name='ProcessName'></Data><Data Name='ResourceAttributes'>S:AI</Data> </EventData></Event>

以下示例显示了从文件写入/追加数据,这些数据可以通过 AccessList %%4417 进行解读。

<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'><System> <Provider Name='Microsoft-Windows-Security-Auditing' Guid='{54849625-5478-4994-A5BA-3E3B0328C30D}'/> <EventID>4663</EventID><Version>1</Version><Level>0</Level><Task>12800</Task><Opcode>0</Opcode> <Keywords>0x8020000000000000</Keywords><TimeCreated SystemTime='2021-06-03T19:12:16.813827100Z'/> <EventRecordID>308838</EventRecordID><Correlation/><Execution ProcessID='4' ThreadID='5828'/> <Channel>Security</Channel><Computer>amznfsxgyzohmw8.example.com</Computer><Security/></System> <EventData><Data Name='SubjectUserSid'>S-1-5-21-658495921-4185342820-3824891517-1113</Data> <Data Name='SubjectUserName'>Admin</Data><Data Name='SubjectDomainName'>example</Data> <Data Name='SubjectLogonId'>0x2a9a603f</Data><Data Name='ObjectServer'>Security</Data> <Data Name='ObjectType'>File</Data><Data Name='ObjectName'>\Device\HarddiskVolume8\share\event.txt</Data> <Data Name='HandleId'>0xa38</Data><Data Name='AccessList'>%%4417 </Data><Data Name='AccessMask'>0x2</Data><Data Name='ProcessId'>0x4</Data> <Data Name='ProcessName'></Data><Data Name='ResourceAttributes'>S:AI</Data></EventData></Event>

事件 ID 4656 表示已请求对某个对象请求特定访问权限。在以下示例中,读取请求是 ObjectName 为 “permtest” 发起的,但尝试失败,如关键字值所示。0x8010000000000000

<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'><System> <Provider Name='Microsoft-Windows-Security-Auditing' Guid='{54849625-5478-4994-A5BA-3E3B0328C30D}'/> <EventID>4656</EventID><Version>1</Version><Level>0</Level><Task>12800</Task><Opcode>0</Opcode> <Keywords>0x8010000000000000</Keywords><TimeCreated SystemTime='2021-06-03T19:22:55.113783500Z'/> <EventRecordID>308919</EventRecordID><Correlation/><Execution ProcessID='4' ThreadID='4924'/> <Channel>Security</Channel><Computer>amznfsxgyzohmw8.example.com</Computer><Security/></System> <EventData><Data Name='SubjectUserSid'>S-1-5-21-658495921-4185342820-3824891517-1113</Data> <Data Name='SubjectUserName'>Admin</Data><Data Name='SubjectDomainName'>example</Data> <Data Name='SubjectLogonId'>0x2a9a603f</Data><Data Name='ObjectServer'>Security</Data> <Data Name='ObjectType'>File</Data><Data Name='ObjectName'>\Device\HarddiskVolume8\share\permtest</Data> <Data Name='HandleId'>0x0</Data><Data Name='TransactionId'>{00000000-0000-0000-0000-000000000000}</Data> <Data Name='AccessList'>%%1541 %%4416 %%4423 </Data><Data Name='AccessReason'>%%1541: %%1805 %%4416: %%1805 %%4423: %%1811 D:(A;OICI;0x1301bf;;;AU) </Data><Data Name='AccessMask'>0x100081</Data><Data Name='PrivilegeList'>-</Data> <Data Name='RestrictedSidCount'>0</Data><Data Name='ProcessId'>0x4</Data><Data Name='ProcessName'></Data> <Data Name='ResourceAttributes'>-</Data></EventData></Event>

更改对象权限时会记录事件 ID 4670。以下示例显示用户 “管理员” 修改了 “permtest” 的权限,以向 “S-1-5-21-6584 ObjectName 95921-4185342820-3824891517-1113” 添加权限。SID有关如何解释权限的更多信息,请参阅 Microsoft 文档。

<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'><System> <Provider Name='Microsoft-Windows-Security-Auditing' Guid='{54849625-5478-4994-A5BA-3E3B0328C30D}'/> <EventID>4670</EventID><Version>0</Version><Level>0</Level> <Task>13570</Task><Opcode>0</Opcode><Keywords>0x8020000000000000</Keywords> <TimeCreated SystemTime='2021-06-03T19:39:47.537129500Z'/><EventRecordID>308992</EventRecordID> <Correlation/><Execution ProcessID='4' ThreadID='2776'/><Channel>Security</Channel> <Computer>amznfsxgyzohmw8.example.com</Computer><Security/></System><EventData> <Data Name='SubjectUserSid'>S-1-5-21-658495921-4185342820-3824891517-1113</Data> <Data Name='SubjectUserName'>Admin</Data><Data Name='SubjectDomainName'>example</Data> <Data Name='SubjectLogonId'>0x2a9a603f</Data><Data Name='ObjectServer'>Security</Data> <Data Name='ObjectType'>File</Data><Data Name='ObjectName'>\Device\HarddiskVolume8\share\permtest</Data> <Data Name='HandleId'>0xcc8</Data> <Data Name='OldSd'>D:PAI(A;OICI;FA;;;SY)(A;OICI;FA;;;S-1-5-21-658495921-4185342820-3824891517-2622)</Data> <Data Name='NewSd'>D:PARAI(A;OICI;FA;;;S-1-5-21-658495921-4185342820-3824891517-1113)(A;OICI;FA;;;SY)(A;OICI;FA;;; S-1-5-21-658495921-4185342820-3824891517-2622)</Data><Data Name='ProcessId'>0x4</Data> <Data Name='ProcessName'></Data></EventData></Event>

每次访问文件共享时都会记录事件 ID 5140

<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'><System> <Provider Name='Microsoft-Windows-Security-Auditing' Guid='{54849625-5478-4994-A5BA-3E3B0328C30D}'/> <EventID>5140</EventID><Version>1</Version><Level>0</Level><Task>12808</Task><Opcode>0</Opcode> <Keywords>0x8020000000000000</Keywords><TimeCreated SystemTime='2021-06-03T19:32:07.535208200Z'/> <EventRecordID>308947</EventRecordID><Correlation/><Execution ProcessID='4' ThreadID='3120'/> <Channel>Security</Channel><Computer>amznfsxgyzohmw8.example.com</Computer><Security/></System> <EventData><Data Name='SubjectUserSid'>S-1-5-21-658495921-4185342820-3824891517-2620</Data> <Data Name='SubjectUserName'>EC2AMAZ-1GP4HMN$</Data><Data Name='SubjectDomainName'>example</Data> <Data Name='SubjectLogonId'>0x2d4ca529</Data><Data Name='ObjectType'>File</Data><Data Name='IpAddress'>172.45.6.789</Data> <Data Name='IpPort'>49730</Data><Data Name='ShareName'>\\AMZNFSXCYDKLDZZ\share</Data> <Data Name='ShareLocalPath'>\??\D:\share</Data><Data Name='AccessMask'>0x1</Data><Data Name='AccessList'>%%4416 </Data></EventData></Event>

在文件共享级别拒绝访问时会记录事件 ID 5145。以下示例显示了对 ShareName “demoshare01” 的访问被拒绝。

<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'><System> <Provider Name='Microsoft-Windows-Security-Auditing' Guid='{54849625-5478-4994-A5BA-3E3B0328C30D}'/> <EventID>5145</EventID><Version>0</Version><Level>0</Level> <Task>12811</Task><Opcode>0</Opcode><Keywords>0x8010000000000000</Keywords> <TimeCreated SystemTime='2021-05-19T22:30:40.485188700Z'/><EventRecordID>282939</EventRecordID> <Correlation/><Execution ProcessID='4' ThreadID='344'/><Channel>Security</Channel> <Computer>amznfsxtmn9autz.example.com</Computer><Security/></System><EventData> <Data Name='SubjectUserSid'>S-1-5-21-658495921-4185342820-3824891517- 1113</Data><Data Name='SubjectUserName'>Admin</Data><Data Name='SubjectDomainName'>example</Data> <Data Name='SubjectLogonId'>0x95b3fb7</Data><Data Name='ObjectType'>File</Data> <Data Name='IpAddress'>172.31.7.112</Data><Data Name='IpPort'>59979</Data> <Data Name='ShareName'>\\AMZNFSXDPNTE0DC\demoshare01</Data><Data Name='ShareLocalPath'>\??\D:\demoshare01</Data> <Data Name='RelativeTargetName'>Desktop.ini</Data><Data Name='AccessMask'>0x120089</Data> <Data Name='AccessList'>%%1538 %%1541 %%4416 %%4419 %%4423 </Data><Data Name='AccessReason'>%%1538: %%1804 %%1541: %%1805 %%4416: %%1805 %%4419: %%1805 %%4423: %%1805 </Data></EventData></Event>

如果您使用 Lo CloudWatch gs Insights 搜索日志数据,则可以对事件字段运行查询,如以下示例所示:

  • 查询特定事件 ID:

    fields @message | filter @message like /4660/
  • 查询与特定文件名匹配的所有事件:

    fields @message | filter @message like /event.txt/

有关 Lo CloudWatch gs Insights 查询语言的更多信息,请参阅 Amazon Logs 用户指南中的使用 CloudWatch CloudWatch 日志见解分析日志数据