写点什么

如何使用 Amazon Macie 创建自定义提醒

  • 2019-10-17
  • 本文字数:4499 字

    阅读完需:约 15 分钟

如何使用 Amazon Macie 创建自定义提醒

Amazon Macie 是一项安全服务,可以让您轻松发现、分类和保护 Amazon S3 中的敏感数据。Macie 会收集 AWS CloudTrail 事件和 Amazon S3 中的元数据,例如权限和内容分类。在这篇文章中,我将向您展示如何使用 Amazon Macie 来为这些数据集创建自定义提醒,以通知您感兴趣的事件和对象。也会介绍可以在 Macie 中找到的不同数据类型,并讨论如何识别与设定和安全用例相关的字段。您将从本文学到一种适用于您自己场景的调查和自定义提醒的方法。


注意⚠️:如果您之前没有使用过 Amazon Macie , 可以通过该链接介绍的操作步骤来作为起点。

了解 Macie 中的数据类型

Macie 能发现三种数据源:分别为 CloudTrail 事件,S3 Bucket(S3 存储桶)元数据和 S3 Object(S3 存储对象)元数据。每个数据源都单独存储在自己的索引中。因此,在编写查询时,在不同的查询中保留来自不同数据源的字段就显得非常重要。


在每个数据源中,有两种类型的字段:Extracted(提取的字段)和 Generated(生成的字段)。Extracted(提取的字段)的字段直接来自于与该数据源关联的、预先存在的 AWS 字段。 例如,CloudTrail 数据源中的提取字段直接来自于 CloudTrail 日志中记录的事件,这些事件对应于 IAM 用户,角色或 AWS 服务所执行的操作。您可以参阅CloudTrail 日志文件示例来获得更多详细的信息。


Generated(生成的字段)由 Macie 创建。这些字段为创建更强大的查询提供了额外的安全值和上下文。例如,通过从 CloudTrail 事件中获取 IP 地址并将其与 global service provider list(全球服务提供商列表)进行匹配来填充 ISP (互联网服务提供商)字段,就可以搜索出关联 ISP(互联网服务提供商)的 API 调用。


下面的链接会描述三个数据源中的每个字段的更多细节。我将使用它们来发现哪些字段适合调查特定的安全用例。


选择一个安全用例来自定义提醒

出于本文的目的,我将聚焦于一个特定的安全用例来作为演示。对于您要调查的任何特定安全用例,发现由 Macie 收集的相关数据字段并将其转换为自定义提醒的过程,都是相同的。基于此,我将寻找存储在 S3 中的敏感或关键数据的这一主题进行探索,因为它影响许多 AWS 客户。


在开始设计提醒时,第一步要考虑的是与主题相关的所有资源,属性,操作和身份。在这个案例,我将寻找存储在 S3 中的敏感或关键数据,因此以下是一些可能有用的数据字段:



    我将使用上述列表来指导我在 Macie 参考文档中搜索相关字段。首先,我将深入研究 CloudTrail 数据。

    探索 CloudTrail 数据

    使用 CloudTrail 数据源是了解 AWS 环境中正在发生什么活动的最佳方法,因为它包含您的 AWS API 调用以及 API 调用者的身份信息。如果您不熟悉 CloudTrail,请访问 AWS CloudTrail 文档以获取更多信息。


    我有一个关键的 S3 存储桶,我希望在我的企业环境中,当任何外部网络尝试对该 S3 存储桶进行写入时,我都会收到通知。在这种情况下,通常由我自己组织的身份识别系统通过联合身份验证的方式来控制对存储桶的写入操作。这意味着我想编写一个查询,搜索出没有通过联合身份验证访问方式的针对 S3 存储桶对象的写入尝试。如果您不熟悉联合身份验证是什么,那没关系,您仍然可以继续学习。如果您对联合访问感兴趣,请参阅IAM身份提供商和联合文档


    我首先浏览 “Macie CloudTrail Reference documentation(Macie CloudTrail参考文档)”中标题为“ CloudTrail Data Fields Extracted by Macie. ” 的部分。我发现 objectsWritten.key 的描述满足我要调查 S3 资源上的操作的需求。


    接下来,我将从 CloudTrail 的事件中的 userIdentity 对象中提取的 CloudTrail 字段名称。 userIdentity.type 字段看起来符合需求,但我不确定该字段可以接受的值。通过使用“CloudTrail userIdentity Element documentation (CloudTrailuserIdentity 元素文档)”作为参考,我查找 type(类型)字段并查看 FederatedUser 是否列为其中的一个值。


    匹配!我现在已经拥有编写第一个自定义查询所需的所有信息。我将搜索所有“user sessions(用户会话)”(对应于Macie用户的 5 分钟 CloudTrail 事件聚合)中既尝试写入我的 S3 存储桶又使用的不是 FederatedUseruserIdentity 类型进行的任何 API 调用。注意我正在搜索的是事件组而不是单个事件,因为我们正在查找与特定 API 调用相关的事件,而不是所有 API 调用相关的所有事件。为了匹配不等于 FederatedUser 的值,我使用正则表达式并将 FederatedUser 放在括号内,并在开头添加波浪号(〜)。以下是构造出的搜索查询语句


    objectsWritten.key:/arn:aws:s3:::my_sensitive_bucket.*/ AND userIdentityType.key:/(~FederatedUser)/


    现在,是时候在 Macie 的 Research 页面上测试此查询语句并将其转换为一个自定义提醒了。

    新建自定义提醒

    创建自定义提醒的第一步是从“Research”页面运行查询语句。 这样做的好处是可以验证结果是否符合我的预期,并了解警报发生的频率。 一旦我对查询结果感到满意,只需点击几下即可设置自定义提醒。


    1.在 Macie 左侧的导航面板中,选择“Research


    2.从下拉菜单中的选项中选择与查询匹配的数据源。在这个案例中,我选择 “CloudTrail Data



    3.复制我们的上面章节中构造的查询语句到查询框中后,敲打“Enter”键


    objectsWritten.key:/arn:aws:s3:::my_sensitive_bucket.*/ AND userIdentityType.key:/(~FederatedUser)/


    4.此时,可以验证结果是否符合我的预期,并对查询进行任何必要的修改。 要学习“Research”页面如何帮助验证和修改查询功能的更多信息,请参阅“ Using the Macie Research Tab ”。


    5.一旦我对结果满意,可以点击 “ Save query as alert “ 图标,将该查询语句保存为一个提醒。



    6.现在,我填写该页面的剩余字段:包括 Alert title Description Min number of matches , 以及 Severity 。 有关这些字段的详细信息,请参阅“Macie Adding New Custom Basic Alerts. ”



    7.在 “Whitelisted users ” 字段,我可以添加我希望从提醒中排除的从 Research 页面的查询结果中出现的任何用户。 有关此功能的更多细节,请参阅Whitelisting Users or Buckets for Basic Alerts


    8.最后,点击“SAVE”按钮。


    我现在已经成功自定义了一个具有基本功能的提醒,每次当除 FederatedUser 之外的 userIdentityType 的 API 调用写入我的存储桶时,都会提醒我。现在,我将使用 S3 对象和 S3 存储桶数据源来查找更多有用的字段。

    使用 S3 对象数据源

    S3 对象数据源包含从 S3 API 元数据中提取的字段,以及由 Macie 填充的与内容分类相关的字段。为了扩展我对 S3 中存储的敏感或关键数据的搜索和提醒,我将查看 S3 Object Data Reference documentation 文档来查找候选字段。


    我看到 S3 服务器端加密设置元数据可能很有用,因为我知道某个存储桶中的所有对象都应该使用 AES256 进行加密,因此我希望当一个对象上传时没有匹配到这个属性时,便通知我。


    为了创建查询,我将 server_encryption 字段和 bucket 字段组合在一起,以匹配指定存储桶中的所有 S3 对象。请注意正则表达式中的“ /.* ” 和 ” .*/ “。这允许我匹配所有包含有 my_sensitive_project 字符的存储桶。


    filesystem_metadata.bucket:/.my_sensitive_project./ AND NOT filesystem_metadata.server_encryption:”AES256”


    接下来,我有另一个不同名字的存储桶(my_logs_bucket),我知道该存储桶中的对象不应该包含任何个人身份信息( PII )。个人身份信息通常包括姓名,电子邮件地址和信用卡号等信息。有关 PII 的完整列表,请参阅“ Classifying Data with Amazon Macie. ”获知。我想设置一个提醒,每当有包含任何类型的 PII 的对象被添加到该存储桶时便通知我。由于这是由 Macie 提供的数据字段,因此我查看 Generated Fields 标题下的 pii_impact 字段。我的查询语句将搜索任何不等于 none 的值。


    filesystem_metadata.bucket:”my_logs_bucket” AND NOT pii_impact:”none”

    使用 S3 存储桶数据源

    S3 存储桶数据源包含从 S3 存储桶 API 中提取的信息,以及 Macie 通过处理存储桶元数据和访问控制列表(ACL)生成的字段。按照与上面提及的相同的方法,我通过S3 Bucket Data Reference documentation来查找可帮助我创建有用提醒的字段。


    这里有很多可用的字段,具体依赖于我对我的存储桶事先知道多少信息以及我将要安全防护的哪一种类型的安全向量。为了缩小搜索范围,我决定添加一些防止意外或未经授权的数据销毁的保护措施。


    在 S3 Versioning 段落中,我看到 Multi-Factor Authentication Delete 设置是一个可用的字段。由于我将此存储桶锁定为仅允许 MFA 执行删除操作,因此我可以创建一个提醒,以便每次当禁用 MFA 删除操作时通知我。


    bucket:”my_critical_bucket” AND versioning.MFADelete:”disabled”


    潜在数据销毁的另一种方式是通过设置存储桶生命周期的到期设置,该设置会在存储桶生命周期到期后自动删除数据。我想知道当有人将该设置更改为较低的数值时,及时提醒我,以便我可以进行修改,防止丢失任何最新数据。


    bucket:”my_critical_bucket” AND lifecycle_configuration.Rules.Expiration.Days:<3


    现在我已经收集了另一组潜在的提醒查询,我可以通过我用于 CloudTrail 数据的相同步骤将它们转换为自定义提醒。保存后,只要找到匹配项,我就会开始在 Macie 控制台中收到通知。我可以通过从 Macie 导航窗格中选择“ Alerts ”来查看我收到的提醒。


    现在我已经整理好了另一组提醒查询语句,我可以通过上述“自定义提醒”段类似的步骤,在“ Research ”页面中选择“ S3 bucket properties ” 并将它们转换为一个自定义提醒。当保存后,只要找到匹配项,我就会在 Macie 控制台中收到提醒。我可以通过从 Macie 左侧的导航栏中选择“ Alerts ”来查看收到的提醒。

    总结

    我在本文刚开始的部分描述了 Macie 中可用的各种数据类型和数据源。 接着通过使用一个特定的安全用例来演示如何从文档中寻找相应字段后,逐步完成了创建查询并将其转换为自定义提醒的过程。 我的目标是向您展示如何根据您的特定环境来构建提醒,并解决您自己的个性化需求。另外您所有自定的提醒都可以通过 Macie 左侧导航栏的”Settings”,然后点击” Basic alerts”图标来查看和修改。如果您有任何问题,或者您想请求一个新的字段和数据源,可以来 Macie论坛发帖讨论或联系 AWS Support


    Source ariticle: https://aws.amazon.com/blogs/security/how-to-create-custom-alerts-with-amazon-macie/


    !



    作者介绍:


    于波


    AWS安全工程师,致力于 AWS 云服务在网络安全相关领域的推广和研究。在传统网络架构安全方面有丰富的实践经验,对于机器学习框架在网络安全领域的应用等有浓厚的兴趣和热情。
    复制代码


    原文链接:


    https://amazonaws-china.com/cn/blogs/china/如何使用-amazon-macie-创建自定义提醒/


    2019-10-17 08:001200
    用户头像

    发布了 1871 篇内容, 共 134.4 次阅读, 收获喜欢 81 次。

    关注

    评论

    发布
    暂无评论
    发现更多内容

    C/C++ 操作注册表与服务

    编程界的劣驱良现象有哪些? 圆桌收录 用代码构建世界

    Jackpop

    从技术专家到总经理,在不确定中探索和成长

    石云升

    极客时间 2月月更 技术领导力实战笔记

    为什么放弃Vim而选择Neovim?

    Jackpop

    泼辣修图2023永久版安装包下载

    茶色酒

    泼辣修图2023

    2023汉化和谐版camtasia电脑屏幕录制软件

    茶色酒

    Camtasia Studio2023

    parallels desktop2023汉化版虚拟机下载

    茶色酒

    parallels desktop2023

    JUC 常用 4 大并发工具类

    鱼找水需要时间

    Java spring JUC

    架构训练营模块六作业-拆分电商系统为微服务

    张Dave

    软件测试/测试开发 | web前端的HTML浅析

    测试人

    软件测试 自动化测试 测试开发 web测试

    Nginx unexpected end of file 配置证书遇到问题,如何解决?

    程序员泥瓦匠

    nginx

    Nostr 协议详解(科普篇)

    Rayjun

    分布式 nostr

    设计模式之模板模式

    程序员大彬

    设计模式

    后GameFi时代下的新宠Umi'Friends,能否成为下一个Axie Infinity?

    股市老人

    为什么字节跳动选择使用 Go 语言?

    Jackpop

    支持30+,这款文档提取工具太好用了!

    Jackpop

    下一代Jupyter Notebook?也太好用了吧!

    Jackpop

    软件测试/测试开发 | 测试环境搭建

    测试人

    软件测试 自动化测试 测试开发 测试环境

    毕业项目 - 设计电商秒杀系统

    in9

    20K+ Star!一款开源免费B站视频下载工具

    Jackpop

    Go应用服务疑似内存泄露问题排查

    SFLYQ

    Go 容器 内存溢出

    Java学习路线阅读计划时间线

    kcodez

    后端开发 Java 开发

    管理者既要安定内部,也要团结外部

    石云升

    极客时间 2月月更 技术领导力实战笔记

    基于Magma构建灵活、低成本无线接入网

    俞凡

    架构 网络 通信

    第九期-毕业设计

    wuli洋

    软件动力学:我理解的可演进架构

    agnostic

    可演进架构

    开源免费!一款性能和体验超棒的编程IDE

    Jackpop

    这才是机器学习正确高效的学习路线!

    Jackpop

    效率倍增!VS Code瞬间好用多了

    Jackpop

    parallels desktop18新许可证和升级

    茶色酒

    parallels desktop18

    寄存器和移位寄存器分析与建模

    timerring

    FPGA

    如何使用 Amazon Macie 创建自定义提醒_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章