资讯中心

如何利用 Amazon Textract 增强 Amazon Macie 的数据发现能力 安全博客

2026-01-27 13:51:35



使用 Amazon Textract 提升 Amazon Macie 数据发现能力

作者:ZhiWei Huang Edmund Yeo 和 Ying Ting Ng时间:2025年1月6日相关链接:Amazon Macie、Amazon Textract、中级学习、安全、身份与合规、技术指南永久链接评论

关键要点

Amazon Macie 是一个托管服务,利用机器学习和确定性模式匹配来帮助发现存储在 Amazon S3 桶中的敏感数据。Macie 不能直接发现图像、音频和视频等多媒体内容中的敏感数据。本文展示了一种通过增加额外的转换层,利用 Amazon Textract 提取存储在 S3 桶中的图像敏感数据的方法。解决方案支持管理标识符和自定义数据标识符,以覆盖大多数用例。

Amazon Macie 是一个托管服务,通过机器学习 (ML) 和确定性模式匹配来帮助发现存储在 Amazon Simple Storage Service (Amazon S3) 桶中的敏感数据。Macie 可以检测多种不同格式中的敏感数据,包括常用的压缩和归档格式。然而,Macie 无法识别图像、音频、视频或其他类型的多媒体内容中的敏感数据。客户常常询问如何有效地检测图像中是否存在敏感数据,对于那些在严格数据保护要求下运营的高管行业来说,这可能是一个重大挑战。

在这篇文章中,我们展示了如何通过添加额外的转换层,将图像中的敏感数据提取到 Macie 支持的格式,从而提高对存储在 S3 桶中的图像敏感数据的可见性。该解决方案也使用了 Macie 支持的推荐管理标识符和自定义数据标识符,以涵盖大多数用例。

解决方案概述

在本节中,我们将介绍解决方案的组成部分。该解决方案使用 AWS 无服务器应用程序模型 (AWS SAM) 部署,AWS SAM 是一个用于构建无服务器应用程序的开源框架。AWS SAM 有助于组织相关组件并在单个堆栈上操作。当与 AWS SAM CLI 一起使用时,它是一个开发、测试和构建 AWS 上无服务器应用程序的实用工具。我们提供了一个 AWS SAM 模板,您可以使用它设置所需的服务和 AWS Lambda 函数。图 1 展示了解决方案的架构。

解决方案工作流程如下:

步骤描述1用户将可能包含敏感数据的图像上传至 S3 桶。2验证潜在的敏感数据已上传到 S3 桶后,手动调用 Lambda 函数 textracttrigger 开始处理。此函数异步调用 Amazon Textract,处理 S3 桶中的文件如 png、jpg 和 jpeg 格式。3因为操作是异步的,每个调用的作业 ID 和状态存储在 Amazon DynamoDB 表中,以跟踪作业状态,确保所有作业完成后再触发 Macie 扫描 S3 桶。4Amazon Textract 作业的结果 JSON 文件存储在与原始图像相同的 S3 桶中。5对于每个分析作业,Amazon Textract 会向已注册的 Amazon Simple Notification Service (Amazon SNS) 主题 AmazonTextractJobSNSTopic 发送作业完成通知。Lambda 函数 macietrigger 订阅该 SNS 主题,并在接收到每个 SNS 消息时触发。6Lambda 函数 macietrigger 进一步后处理,从 JSON 文件中提取值并上传至同一 S3 桶中的文本文件。7函数检查 DynamoDB 表中其他进行中的 Amazon Textract 作业。如果有待处理的作业,函数退出并等待再次触发。8当 DynamoDB 表中所有 Amazon Textract 作业标记为完成后,Lambda 函数 macietrigger 创建 Macie 分类作业。9Macie 根据管理标识符和自定义数据标识符扫描桶中的敏感数据。10Macie 将分类作业的状态持续发布至 Amazon CloudWatch Logs。11扫描 S3 桶中的所有文件可能需要一些时间,您将在 Macie 作业完成后通过 SNS 邮件收到通知。Lambda 函数 MacieCompletedSNSLambda 将过滤已完成的作业状态,并使用 SNS 主题 MacieSnsTopic 发送邮件通知。

在部署解决方案时,您可以指定一个现有的 S3 桶该桶可能已存储敏感数据,或者在设置过程中创建一个新的 S3 桶。如果您指定了现有的 S3 桶,请确保桶策略或 KMS 密钥策略中没有其他声明会拒绝相关解决方案组件访问 S3 桶。如果未指定现有 S3 桶,则将创建一个名为 s3withsensitivedatalt accountidgtlt randomstringgt 的新 S3 桶。

前提条件

在部署解决方案之前,请确保以下前提条件已到位:

条件描述启用 Macie请参阅 开始使用 Amazon Macie 的说明。确定敏感文本数据的正则表达式模式这将允许您创建自定义数据标识符,以补充 Macie 提供的管理数据标识符。更多信息见 构建 Amazon Macie 自定义数据标识符。在部署前步骤中有一个示例,您可以根据示例创建相应的标识符。确保具有部署 AWS 服务的权限详细信息包括 Lambda、Amazon S3、Amazon Textract、Amazon SNS、Macie、Amazon CloudWatch 和 DynamoDB。安装 AWS SAM CLI请参见 安装 AWS SAM CLI,您将使用它来部署解决方案。有关 AWS SAM 工作原理的更多信息,请查看 AWS SAM 项目和 AWS SAM 模板。

部署前步骤

在满足前提条件后,您需要在 AWS 管理控制台中为 Macie 设置一个或多个自定义标识符,然后才能部署解决方案。请按照以下步骤为本文中提供的图像设置示例自定义标识符。

设置自定义标识符的步骤:

转到 Amazon Macie 控制台。在导航面板中选择 自定义数据标识符,然后选择 创建。输入标识符名称和描述,例如以下示例:名称:新加坡 NRIC 号码描述:此表达式可用于查找或验证以字符 S、F、T 或 G 开头,后跟七位数字并以任何 A 到 Z 字符结尾的新加坡 NRIC 号码。对于 正则表达式,输入:[SFTG]d{7}[AZ]。对于 关键词,输入:新加坡,身份,卡片。关键词是重要的,因为它们可以帮助提高检测的准确性并细化结果。保持其他字段为默认值,然后选择 提交。转到新创建的自定义标识符,并记录 ID。此 ID 在部署 AWS SAM 解决方案时需要作为输入。

一元云网页版入口

部署解决方案

在满足前提条件并完成部署前步骤后,您就可以部署解决方案。

要部署解决方案:

打开 CLI 窗口,导航到您首选的本地目录并运行 git clone https//githubcom/awssamples/enhancingmaciewithtextract。 使用 cd enhancingmaciewithtextract 转到该目录。运行 sam deploy guided,并按照逐步说明输入部署详细信息,例如期望的 CloudFormation 堆栈名称、AWS 区域和其他详细信息。以下是一些请求参数的描述:ExistingS3BucketName:此为您希望解决方案扫描的 S3 桶的名称。此参数为可选。如果留空,解决方案将为您创建一个 S3 桶以存储您希望扫描的对象。MacieCustomCustomIdentifierIDList:这是您在最后一个部署前步骤中记录的 ID。使用此字段输入 Macie 要检测的自定义标识符列表。如果有多个 ID,每个 ID 应用逗号分隔例如,59fd28140ba841ccadb21ffec6a0bb3c 665cf948ea3042df9f639a858cbfe1a8。EmailAddress:这是您希望 Amazon SNS 邮件通知在 Macie 作业完成时发送到的电子邮件地址。MacieLogGroupExists:检查您是否有现有的 Macie CloudWatch 日志组 (/aws/macie/classificationjobs)。如果这是您第一次运行 Macie 作业,请输入 No 或 n。否则,输入 Yes 或 y。完成后,将显示创建所需资源的确认请求。AWS SAM 创建默认的 S3 桶以存储必要资源,然后进行部署提示。输入 y 进行部署,并耐心等待部署完成。部署完成后,您应该看到以下输出:Successfully created/updated stack {StackName} in {AWSRegion}。您可以在 CloudFormation 控制台 中查看资源和堆栈。

如何利用 Amazon Textract 增强 Amazon Macie 的数据发现能力 安全博客将有一封来自 noreply@snsamazonawscom 的邮件发送到您在步骤 3 中输入的电子邮件地址。选择 确认订阅,允许 SNS 发送 Macie 作业完成邮件。

测试解决方案

当解决方案部署完成后,您可以使用一组示例图像验证其能否检测图像内的敏感数据。

测试解决方案的步骤:

使用 Amazon S3 控制台导航到您在部署过程中指定的桶。如果您未指定要扫描的 S3 桶,请查找名为 s3withsensitivedatalt accountidgtlt randomstringgt 的新桶。在您的项目目录中,sampleimageszip 里有示例图像。解压缩文件,并将示例图像上传到 S3 桶。示例图像包括美国驾照、社会安全卡、护照和新加坡国家注册身份卡 (NRIC)。转到 AWS Lambda 控制台,选择 {StackName}TextractTriggerLambdalt randomstringgt 函数。选择 测试 选项卡,然后选择 测试 以开始自动敏感数据发现过程。

整个过程大约需要 15 分钟完成。您将在 Macie 扫描完成后收到邮件通知。

转到 Amazon Macie 控制台,在导航面板中选择 作业。您应该看到与通知邮件中显示的作业名称匹配的作业 扫描 [对象数量] [时间戳] 。 在详细信息面板中,选择 显示结果 按钮,然后选择 显示发现。

您将看到与所选的敏感数据发现作业 ID 相关的发现结果。

理解发现结果

在本节中,我们将更加详细地看一下每个发现。

在控制台中,查看 受影响资源 列,找到以 singaporepinknricpostprocessedtxt 结尾的发现,然后选择它。发现类型 SensitiveDataS3Object/CustomIdentifier 表示该资源包含与自定义数据标识符的检测标准匹配的文本。此示例中的其他发现类型则来自管理数据标识符。有关 Macie 发现类型的更多信息,请参见 敏感数据发现类型。在发现信息面板中,您还可以看到:在 概述 部分,资源指示哪个资源包含敏感数据。该资源标识了文本文件;然而,您可以通过其与原始图像相同的对象名称来识别原始图像文件仅文件类型不同。在 自定义数据标识符 部分,您可以看到找到的敏感数据类型。在本例中,发现涉及与新加坡 NRIC 的正则表达式匹配的数据。

通过使用此解决方案,您可以使用 Macie 检测 S3 桶中图像内的敏感数据及其对应的图像。

使用此解决方案

在本文中,您已配置了一个自定义数据标识符和一个推荐管理标识符集。然而,您可以通过将多个自定义数据标识符提供为逗号分隔的列表来创建和使用多个自定义数据标识符,如“部署解决方案”部分的第 3 步中提到的。

该解决方案旨在实现对单个 S3 桶中的图像对象内文本的敏感数据发现。要将范围扩展到包括多个 S3 桶,则需要进行一些额外的代码和权限更改,以允许 Lambda 函数处理和访问多个现有的 S3 桶。

值得注意的是 Amazon Textract 的语言能力。Amazon Textract 可以提取标准英语字母和 ASCII