写写我的学习笔记,本文仅为个人学习心得,与AWS无关
内容简介
对敏感数据发现后,进行相应的分类分级后打个性化标签的是企业数据管理过程中的首要一步。
Amazon Macie https://docs.aws.amazon.com/macie/latest/user/what-is-macie.html 是一项数据安全服务,它使用机器学习和规则匹配来发现敏感数据,实现可见性和自动防范数据安全风险。很多客户在使用Macie发现S3中的数据后,希望可以自动为S3中的Object打上敏感数据标签,并且希望是由企业自己定义的内容而不是由Macie中的Severity简单定义的高(High)、中(Medium)、低(Low)。https://docs.aws.amazon.com/macie/latest/user/findings-severity.html
本篇博文中将提供一个支持自定义标签内容的并根据Macie发现结果自动打标签的方案,并提供自动部署的Cloudformation模板以及CLI示例命令行。
先决条件
- 安装最新版本的AWS Command Line Interface (CLI)
- 打开Amazon Macie服务
- 对敏感数据类型和标签有明确定义
架构与工作原理
Macie在执行完成敏感数据发现任务后,其扫描结果会自动传递至Eventbrige,我们通过建立一条rule,触发Lambda对S3中的文件进行打标签的操作,整体流程如下图:
本例中提供的是将敏感数据标签分为四个级别,具体在下一章中进行详细定义说明。
部署方法
请将附录中的两份模板文件保存至CLI本地运行目录下, 完成下列参数的设置:
- tagkey 自定义标签的key
- level0 level1 level2 level3 四个级别标签,从低到高的value
- s3filepath
我们需要一个mapping.json文件,定义敏感数据类型与级别的关系,并将其放在S3中,请于附录下载保存。根据企业定义,将每行value中默认的0改为对应的敏感级别,例如如果认为ADDRESS居住地址是level2级别的信息,则将"ADDRESS":后边的0修改为数字2
{
"ADDRESS": 2,
"AUSTRALIA_DRIVERS_LICENSE": 0,
"AUSTRALIA_TAX_FILE_NUMBER": 0,
"AUSTRIA_DRIVERS_LICENSE": 0,
"AWS_CREDENTIALS": 0,
"BANK_ACCOUNT_NUMBER": 0,
"BELGIUM_DRIVERS_LICENSE": 0,
- region 运行cloudformation模板的AWS区域
- stackname cloudformation stack的名称
- template 附录中提供的cloudformation stack模板,请保存为yaml格式。
以下为示例命令行
tagkey='敏感度标识'
level0='公开'
level1='内部'
level2='保密'
level3='机密'
s3filepath=mapping.json
region=us-east-1
stackname=MacieAutotag
template=blog-template.yaml
aws cloudformation create-stack --stack-name $stackname --template-body file://$template \
--parameters \
ParameterKey=level0,ParameterValue=$level0 \
ParameterKey=level1,ParameterValue=$level1 \
ParameterKey=level2,ParameterValue=$level2 \
ParameterKey=level3,ParameterValue=$level3 \
ParameterKey=tagkey,ParameterValue=$tagkey \
ParameterKey=s3filepath,ParameterValue=$s3filepath \
--capabilities CAPABILITY_IAM \
--region=$region
Cloudformation 需要几分钟运行完成,请运行以下CLI示例命令,将mapping.json上传至新建立的S3中供Lambda使用:
aws s3 cp $s3filepath s3://$(aws cloudformation --region $region describe-stacks --stack-name $stackname --query 'Stacks[*].Outputs[0].OutputValue' --output text)/ --region=$region
登录AWS控制台,打开新建的lambda function->Configuration->Environment variables,可以看到我们之前定义的标签信息都已经体现在这里,而lambda会根据这些定义,针对Macie的发现结果给S3中的Object打上对应的标签。
结果展示
当macie完成一次扫描后,我们可以登录AWS控制台查看Lambda的Cloudwatch group,如下图示例,lambda根据Macie的发现结果CREDIT_CARD_NUMBER,为文件1-financial-data.txt打上了三级对应的标签:机密。
小结
在这篇博文中,我向您展示了一种自定义敏感数据标签并由Macie扫描结果自动触发打标签的方法,非常简单方便。本文中定义的是四级标准,您完成可以根据企业的需求改为三级或者五级,只需要在lambda中的环境变量进行修改即可。mapping.json中列出的是Macie所有MDI的,如果您使用custom data identifiers https://docs.aws.amazon.com/macie/latest/user/custom-data-identifiers.html(CDI)扫描只需将CDI名称加进去即可。本文中的示例仅部署在us-east-1一个region,您可以使用AWS的CloudFormation StackSets https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html,将模板部署在多个AWS Account以及多个regions中。