写点什么

如何使用 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:001254
    用户头像

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

    关注

    评论

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

    Beyond Compare 5 中文版|文件对比神器 Git集成+自动化脚本

    柠檬与橘子

    Dify发布V1.5.0:可视化故障排查!超实用

    王磊

    外包人员违规访问致使 4 万条数据泄露,金融机构如何实现访问可控、数据不裸奔?

    原点安全

    数据安全 金融外包 金融数据安全解决方案 数据安全厂商 一体化数据安全平台

    智源研究院与北大医院达成战略合作

    智源研究院

    AI时代的数据智能跃迁:数据、工具与组织的进化

    火山引擎开发者社区

    AI

    商品中心—商品溯源系统的技术文档

    量贩潮汐·WholesaleTide

    架构

    ERP、MES、PLM、CRM、OA等企业常用软件的区别与联系

    优秀

    ERP mes PLM

    如何通过ETL把StarRocks中的数据同步到数仓

    RestCloud

    数据库 数据同步 数仓 ETL StarRocks

    【KWDB创作者计划】实战指南:KWDB 2.2.0数据分析与性能调优深度对比

    KaiwuDB

    小团队如何选择远控方案?贝锐向日葵“团队版”优势分析

    科技热闻

    【7 月 5 日北京】2025 IoTDB 用户大会,科研学术分论坛深度解密!各大教授最新研究等你来听

    Apache IoTDB

    扣子企业交流日最全回顾|数万家企业都在怎么用扣子?

    火山引擎开发者社区

    AI 扣子

    Nacos 3.0 架构全景解读,AI 时代服务注册中心的演进

    阿里巴巴云原生

    阿里云 云原生 nacos

    打通数据孤岛:基于对象存储的多云可观测融合实战

    阿里巴巴云原生

    阿里云 云原生 日志服务

    Swift Publisher 5|2000+模板搞定印刷/电子出版

    柠檬与橘子

    接口设计的原则:构建优雅API的完整指南

    不在线第一只蜗牛

    接口 API

    低代码开发×物联网:技术融合下的智能系统架构设计与行业实践路径

    电子尖叫食人鱼

    低代码 物联网

    用 Trae 入门 CloudWeGo-Kitex,包教包会!

    火山引擎开发者社区

    #Trae

    Java中什么是类加载?类加载的过程?

    量贩潮汐·WholesaleTide

    Java

    6月27日-28日 AICon 北京站,我们在展位等您来!

    MatrixOrigin

    园区智变时刻,网络该如何为企业撑腰?

    脑极体

    AI

    九号电动联合宁波交警开展校园交通安全活动,助力大学生文明骑行

    科技热闻

    多模态数据湖焕新升级,企业新一代AI Native的数据基建

    火山引擎开发者社区

    人工智能

    零基础音视频入门:你所不知道的Web前端音视频知识

    JackJiang

    Illustrator 替代品!矢量/像素双模式切换 Affinity Designer中文版

    柠檬与橘子

    轻帆云ITSM智能知识库,助力企业运营创新与服务价值提升

    云智慧AIOps社区

    ITSM 工单系统 企业知识库

    未来工业4.0下的智能仓储物流

    优秀

    工业4.0 制造业

    如何通过ETL进行数据抽取工作

    RestCloud

    数据库 数据处理 ETL 数据集成 数据抽取

    在使用Flink CDC时,源表没有主键如何处理

    天翼云开发者社区

    PhotoMill X for Mac(图片批量处理工具)

    Geek贝

    100万QPS短链系统如何设计?

    不在线第一只蜗牛

    数据库

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