亚马逊AWS官方博客

如何使用Amazon Macie 进行安全数据自动分类和用户行为监控

概述

当我们在Amazon S3中存储大量内容时,识别和分类其中潜在敏感数据可能会有点像在一个非常大的干草堆中找绣花针针,整个的过程是非常低效。那么能否有一种工具可以在数据加入到S3后就自动的识别敏感信息并自动进行分类?

同时在我们日常的工作中,访问数据的时间间隔及物理位置相对的固定。如果发生异常的事件,例如原来某个用户一天访问一到两个文件,但如果突然在某天访问超过一百个文件,能否由系统发出告警事件提醒相关人员进行相关检查,确保安全?

本文从如下几部分介绍Amazon Macie服务及主要功能,同时还列出常见使用场景,以及如何配置的简要步骤。希望能给大家带来帮助。

什么是Macie

Amazon Macie 是一种支持人工智能技术的安全服务,可以帮助您通过自动发现、分类和保护存储在 AWS 中的敏感数据来防止数据丢失。Amazon Macie 使用机器学习来识别敏感数据 (例如,个人身份信息 [PII] 或知识产权),分配业务价值,提供此数据的存储位置信息及其在组织中的使用方式信息。

Amazon Macie 可持续监控数据访问活动异常,并在检测到未经授权的访问或意外数据泄漏风险时发出警报。

为什么要使用Macie

对现存的海量文件进行自动的分类并且根据不同的分类制定不同的监控策略,一旦发生异常的访问需要得到及时的告警,是每个组织面临的挑战。

Amazon Macie提供了简单高效并且安全的方案,Macie通过使用机器学习来了解存储的内容和用户行为,同时提供可视化界面,展示安全分类,从而使客户能够专注于保护敏感信息,而不是浪费时间手工的处理。

Amazon Macie内置检测个人身份信息(PII)或敏感个人信息(SP)的常见敏感信息的引擎,可以自动识别出S3存储文件是否包含例如个人身份信息(PII)或其他公司财报等敏感信息,在没有Macie之前,这样的工作都需要手工的处理或者使用第三方平台。而现在可使用Macie很容易解决上述问题。

Amazon Macie持续监控数据和账户凭证 。 在发现可疑行为或对实体或第三方应用程序进行未经授权的数据访问时撤销访问或触发密码重置策略,来防范安全威胁。当Amazon Macie发出警报时,您可以使用预先在Amazon CloudWatch设置的规则发送告警,以便迅速采取行动,保护数据。

Macie主要功能

Amazon Macie首先功能分为两部分,一方面是使用自然语言处理(NLP)来理解数据,Macie可以自动对您的S3桶中的数据进行分类。另外一个是使用机器学习理解用户访问数据的行为,同时利用动态分析数据访问模式的预测分析算法,并使用日常访问的用户行为数据不断的训练并优化模型。

Macie 主要功能

  • 自动化处理数据:分析,分类和自动处理数据,从现有的数据和访问日志分析出有规律的历史模式,用户认证数据,用户位置信息及时间信息。
  • 数据安全和监控: 主动监控 日志数据,检测到的异常情况,转发告警信息到CloudWatch 事件或和Lambda以进行后续处理,例如自动修复安全漏洞或者发送邮件通知。
  • 主动预防的数据的丢失,提供即时保护,无需手动干预。
  • 可视化分析:提供存储数据的可视化详细信息。
  • 数据研究与报告:允许用户管理配置报告。

Macie如何运作

在数据分类过程中,Amazon Macie 识别 S3 存储桶中的对象,并将对象内容流式传输到内存中进行分析。

当需要对复杂文件格式进行更深入的分析时,Amazon Macie 将下载对象的完整副本,并在短时间内保存,直到完成对象的全面分析。Amazon Macie 对数据分类的文件内容分析完毕后,它将立即删除存储内容,仅保留未来分析所需的元数据。

Amazon Macie持续监控分析当前的用户行为习惯并以基础形成基线,例如敏感数据在哪个IP地址以及何时以什么样的频率被进行访问。随后Macie持续监控CloudTrail日志并训练机器学习所使用的模型,,一旦发现可疑的访问活动,Macie可以及时发出告警。

示意图如下:

信息分类

Amazon Macie已经定义好信息分类标准:

  • 配置合规性 – 与合规性内容策略,配置设置,数据日志记录以及补丁级别相关​。
  • 数据合规性 – 与合规性或安全控制内容的发现相关,例如存在个人身份信息或访问密钥。
  • 文件托管 – 与恶意软件,不安全的软件或攻击者的命令和控制基础架构相关的托管主机或存储服务。
  • 服务中断 – 可能导致无法访问资源的配置更改。
  • 恶意软件或活动- 潜在的恶意软件或活动。
  • 可疑访问 – 从风险异常的IP地址,用户或系统访问您的资源 。
  • 身份枚举 – 一系列API调用或访问,枚举系统的访问级别,可能指示攻击的早期阶段或受到破坏的凭据。
  • 特权升级 – 成功或不成功的尝试,以获得对通常受应用程序或用户保护的资源的高级访问,或尝试长时间访问系统或网络。
  • 匿名访问 – 尝试从IP地址,用户或服务访问资源,以隐藏用户的真实身份。 例如包括使用代理服务器,虚拟专用网络和其他匿名服务,如Tor。
  • 开放许可 – 识别受潜在过度允许访问控制机制保护的敏感资源。
  • 位置异常 – 访问尝试敏感数据的异常和危险的位置。
  • 信息丢失 – 敏感数据的异常和冒险访问。
  • 凭证丢失 – 可能损害您的凭据。

告警严重级别

Macie 内置了5种告警信息级别

  • 严重(Critical) – 该级别可能导致信息机密性,完整性和可用性受到损害的安全问题。建议将此安全问题视为紧急情况,并实施立即的补救或加固措施。
  • 高 –该级别可能导致信息机密性,完整性和可用性受到损害的安全问题。建议将此安全问题视为紧急情况,并实施立即的补救或加固措施。
  • 中等(Medium) – 该级别可能导致信息机密性,完整性和可用性受到中等性损害。建议在下次更新服务期间修复此问题。
  • 低(Low) -该级别可能导致信息机密性,完整性和可用性受到低等性损害。建议您将此问题作为未来服务更新的一部分。
  • 信息(Informational) – 该级别警告只描述基础架构的特定安全配置详细信息。根据相关业务和组织目标,可以简单地记录这些信息或使用它来提高系统和资源的安全性。

注:严重(Critical) 和高(High)之间的主要区别:

产生严重(Critical)警报的事件可能导致大量资源或系统受到损害。

产生高(High)警报的事件可能导致一个或多个资源或系统受到损害。

开始使用Macie

需要配置的IAM 角色

创建身份访问管理(IAM)角色,为Macie提供对您的AWS帐户的访问权限。这些角色只需要创建一次,以便在所有地区使用。

我们以Oregon区域作为例子 ,可以通过启动下面列出的URL中找到的AWS CloudFormation堆栈模板来创建这些角色和所需的策略。

https://s3-us-west-2.amazonaws.com/us-west-2.macie-redirection/cfntemplates/MacieServiceRolesMaster.template

配置Cloud Trail服务

首先需要建立相应IAM Role, 确保Amazon Macie能够访问S3及 CloudTrail,另外是要启动CloudTrail服务以对相关的AWS API操作进行分析。

开始使用Macie服务

添加需要管理的S3 存储桶

需要在Macie中添加需要访问S3存储桶并对其中的文件进行统计分类。

步骤如下:

1.     进入Macie Console 页面,点击 Integrations 页面后,选择SERVIES 标签页面,点击 Select an account 下拉框

2.     选择 Amazon S3 Detail

3.     选择Selected S3 buckets and prefixes

4.     选择Macie分析的S3 bucket

文件分类

在Macie中添加需要分析的S3 存储桶后,Macie会自动开始分析其中的文件,稍等一段时间后,进入Macie的Dashboard 页面。

在Dashboard中共提供10种视图,为了演示本文章仅仅展示其中的两个。

S3文件分类统计结果

S3文件分类统计详细结果

用户行为分析

根据CloudTrail的日志,Macie自动分析所有IAM user的相关操作。根据Macie预先定义的规则,把IAM用户分为如下四类:

  • 白金:这类IAM用户或角色曾有管理员或root用户的高风险API调用的历史,例如创建用户,授权安全组入口或更新策略。 应对这类帐户进行重点监控。
  • 黄金:这类IAM用户或角色曾有创建与基础设施相关的API调用的历史,这些API调用标志其具有高级权限,例如创建实例或拥有向Amazon S3写入数据的权限。 这些帐户应密切监控。
  • 白银:这类IAM用户或角色曾大量中等风险的API调用的历史,例如Describe和 List操作或对Amazon S3的只读访问请求。
  • 青铜:这些IAM用户或角色通常在AWS环境中执行较少量的Describe 和List  API调用。

Macie使用如下的界面展示用户行为分析。

告警管理

Macie内置了40种告警规则,我们可以根据实际情况选择启用或者禁用该规则。

下面我们选择级别为 严重(Critical) 的告警规则进行分析。

从上图可知该告警的规则是 “如果 IAM Policy 设置 S3存储桶可以被任何人可读,那么触发告警”, 告警样例如下:

添加自定义告警

Macie不仅仅支持内置的告警规则设置,同时也支持自定义规则的定义。

场景:

根据 Macie 定义的规则,如果文档中包含 “merger, acquisition, divestiture, reorganization, consolidation, demerger, restructuring, rebranding, takeover, subsidiary” 关键字,那么该文档会被分类为 “Corporate Growth Keywords”的类别。

现在假设用户往S3上传了具有上述关键字文档,可能存在信息泄漏的风险,需要发送告警严重级别为 “Medium”的告警。

下面演示如何添加自定义告警

1.     进入Macie Console

2.     点击 Setting-> Protect data –> Basic alerts

3.     点击 Add New 按钮

4.     按照如下样例填写

Alert Title: Test Customer Alert

Description: Test Customer Alert

Category: 选择 Information Loss

Query: themes:” Corporate Growth Keywords ”

Index: 选择S3 objects

Min number of matches:1

Severity:Medium

Whitelisted Users: 不选

5.     点击 Save 按钮.

6.     往S3上传如下内容的word文件

7.     上传成功(存储桶名字暴露了)

8.     回到DASHBOARD界面,收到告警

注:在Alert中定义最关键的部分是Query, Macie会把Query中的内容使用JavaCC转换成Lucene Query。有关查询语法的更多信息,请参阅Apache Lucene – Query Parser Syntax

如下是常见搜索的示例:

  • 搜索任何不是源自Amazon IP地址的控制台登录:

eventNameIsp.compound:/ConsoleLogin:~(Amazon.*)/

  • 公共S3存储中的PII(Personally Identifiable Information)

filesystem_metadata.bucket:”my-public-bucket” AND (pii_impact:”moderate” OR pii_impact:”high”)

同AWS其他服务集成

Amazon Macie 可以同其他AWS服务集成。如下示例如何使用CloudWatch和SNS集成。具体演示如下:

1.     创建SNS并使用相应的邮箱确认

2.     在CloudWatch 创建Rule

3.     收到告警邮件

更改S3元数据(Metadata)的保存周期

缺省条件下,Macie保存S3 元数据的周期是一个月,但可以系统支持该周期最长为12个月。更改步骤如下:

  1. 进入Macie Console
  2. 点击 Integrations -> Choose retention duration for S3 metadata –> Select a range

总结

Macie使用机器学习算法自然语言处理S3中存储的数据,并且使用上下文信息对信息进行分类,并给数据分配相应的业务价值标签。自动发现分类和保护存储在AWS中的敏感数据,同时持续检查S3桶中PUT请求的CloudTrail事件,并几乎实时自动对新对象进行分类。同时监控CloudTrail的API日志,识别出日常的用户行为模式,一旦Macie发现异常的行为,可以及时的发出告警。

通过Macie,可以方便的实现数据安全自动化,及数据可视化和数据丢失防护。

 

作者介绍
刘春华,AWS 解决方案架构师,AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内和全球的应用和推广,在大规模并发应用架构、无服务器架构,人工智能与安全等方面有丰富的实践经验。 曾任IBM云架构师,对企业应用迁移到云及应用系统改造有深入的研究。