使用文件访问审计记录最终用户的访问 - Amazon FSx for Windows File Server
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon FSx for Windows File Server 支持就最终用户访问文件、文件夹和文件共享进行审核。您可以选择将文件系统的审计事件日志发送到提供丰富功能集的其他 Amazon 服务。这些服务包括实现查询、处理、存储和存档日志、发出通知和触发操作,以进一步推进安全性和合规性目标。

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

注意

只有吞吐能力为 32 MBps 或以上的 FSx for Windows 文件系统支持文件访问审计。您可以修改现有文件系统的吞吐能力。有关更多信息,请参阅 在 FSx for Windows File Server 文件系统上管理吞吐能力

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

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

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

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

对于文件、文件夹和文件共享访问,Amazon FSx 支持记录成功的尝试(例如具有足够权限的用户成功访问文件或文件共享)、失败的尝试或同时记录两者。

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

注意

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

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

审核事件日志目标

启用文件访问审核后,必须配置好 Amazon 服务,以便 Amazon FSx 将审核事件日志发送至该服务。可以将审核事件日志发送至 CloudWatch Logs 日志组中的 Amazon CloudWatch Logs 日志流或 Amazon Data Firehose 传输流。您可以在创建 Amazon FSx for Windows File Server 文件系统时选择审核事件日志目标,也可以在之后任何时间通过更新现有文件系统来选择。有关更多信息,请参阅 管理文件访问审计

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

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

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

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

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

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

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

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

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

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

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

迁移审核控制措施

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

查看事件日志

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

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

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

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

  • 您无法在 Firehose 上查看审核事件日志。但是,您可以将 Firehose 配置为将日志转发到您可以读取的目标。这些目标包括 Amazon S3、Amazon Redshift、Amazon OpenSearch Service 以及 Splunk 和 Datadog 等合作伙伴解决方案。有关更多信息,请参阅《Amazon Data 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 格式显示的时间。

  • Computer 指文件系统 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”发起,但尝试失败,如 Keywords 值 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。以下示例显示用户“管理员”修改了 ObjectName“permtest”的权限,以向 SID“S-1-5-21-658495921-4185342820-3824891517-1113”添加权限。有关如何解释权限的更多信息,请参阅 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>

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

  • 查询特定事件 ID:

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

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

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