亚马逊AWS官方博客
如何根据 Macie 检测结果为 S3 自动打上自定义敏感数据标签?
内容简介
在完成对敏感数据发现任务后,根据分类分级的定义,对数据打标签是企业数据管理过程中的首要一步。
Amazon Macie 是一项数据安全服务,它使用机器学习和规则匹配来发现敏感数据,实现数据可见性,以便自动防范数据安全风险。很多客户在使用 Macie 发现 S3 中的敏感数据后,希望可以自动地为 S3 中的 Object 打上敏感数据标签,并且希望标签是由企业自己定义的,而不是由 Macie 自带的 Severity 定义高(High)、中(Medium)、低(Low)。
本篇博文将介绍一种支持自定义标签内容并根据 Macie 发现结果自动为 S3 打标签的方案,并提供自动部署的 CloudFormation 模板以及 CLI 示例命令行。
先决条件
- 安装最新版本的 AWS Command Line Interface (CLI)
- 打开 Amazon Macie 服务 和 Eventbridge 服务
- 对敏感数据类型和标签有自己明确的定义
架构与工作原理
在本方案中,当使用 Amazon Macie 执行完成敏感数据发现任务后,其扫描结果会自动传递至 Eventbridge,通过建立一条规则(rule),触发 Lambda 对 S3 中的文件进行打标签的操作,整体流程如下图:
方案架构图
本例中提供的模板是将敏感数据标签分为四个级别,详细定义及说明请见下文。
部署方法
请将附录中的两份模板文件复制保存至 CLI 命令行的本地运行目录下,完成下列参数的设置:
- tagkey:自定义数据标签的名称(key)
- level0 level1 level2 level3: 四个级别标签的内容(value),0-3 依次为从低到高
- s3filepath:
需要一个 mapping.json 文件来定义敏感数据类型与标签级别的对应关系,并将其放在 S3 上,mapping.json 文件请于附录中复制并保存。根据企业的定义,将每行 value 中默认的 0 改为对应的敏感级别,例如如果认为 ADDRESS 居住地址是 level2 级别的信息,则将”ADDRESS”:后边的 0 修改为数字 2。Lambda 会根据此文件中的定义,选取敏感数据类型中级别最高的,为 Object 打上标签。例如,一份文件中同时包含敏感级别为 2 的 ADDRESS,以及级别为 3 的 BANK_ACCOUNT_NUMBER,Lambda 会为其打上 level3 对应的标签。
- region:运行 CloudFormation 模板的 AWS 区域
- stackname:CloudFormation stack 的名称
- template:附录中提供的 CloudFormation stack 模板,请保存为 yaml 格式
请运行以下示例命令行来设定参数:
以下为创建 CloudFormation stack 的示例命令行:
Cloudformation stack 需要几分钟运行,完成后,请运行以下 CLI 示例命令,将 mapping.json 上传至新建立的 S3 中供 Lambda 使用:
登录 AWS 控制台,打开新创建的 lambda function->Configuration->Environment variables,可以看到我们之前定义的标签信息已经体现在这里,Lambda 会根据定义,针对 Macie 的发现结果给 S3 中的 Object 打上对应的标签。
lambda 的环境变量
结果展示
启动一次 Macie 扫描任务(Job),完成后,可以在 AWS 控制台查看 Lambda 的 Cloudwatch group 中的运行记录,如下图所示,Lambda 根据 Macie 的发现结果 CREDIT_CARD_NUMBER,为文件 1-financial-data.txt 打上了三级对应的标签:机密。
Lambda 的执行记录
查看 S3 中的文件,点选 Properties->Tags,可以发现已经被打上标签。
S3 中 Object 被打上的标签
小结
在这篇博文中,我向您展示了一种自定义敏感数据标签并由 Macie 扫描结果自动触发打标签的方法,非常简单方便。需要说明的是,本文示例中定义的是四个级别的标签,您可以根据企业的需求改为三级或者五级,只需要对 Lambda 的环境变量进行修改。模板 mapping.json 中列出的是 Macie 目前所有 Managed Data Identifiers(MDI),如果您使用了 Custom Data Identifiers (CDI),只需将 CDI 名称加进去即可。本文中的示例仅演示了部署在一个 region,您可以使用 AWS 的 CloudFormation StackSets ,将模板部署在多个 AWS Account 以及多个 regions 中。