HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

    发布了 1848 篇内容, 共 114.2 次阅读, 收获喜欢 78 次。

    关注

    评论

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

    深入理解 SQL 中的 Grouping Sets 语句

    元闰子

    sql spark spark SQL

    今晚要修稿子準備發佈。但是,仍卡在這裡,也許你需要的是一個段子。

    叶小鍵

    rxjs Observable filter Operator 的实现原理介绍

    汪子熙

    typescript 响应式编程 angular RXJS 7月月更

    OpenHarmony应用开发之ETS开发方式中的Image组件

    坚果

    HarmonyOS Open Harmony OpenHarmony 3.1 Release 7月月更 harmony

    最全SQL与NoSQL优缺点对比

    雨果

    sql NoSQL 数据库

    「Docker 那些事儿」还不会安装Docker?建议看这篇就够了

    Albert Edison

    7月月更

    x86汇编语言-从实模式到保护模式 笔记

    贾献华

    7月月更

    远程办公之大家一同实现合作编辑资料和开发文档 | 社区征文

    Tech技术攻关

    远程办公 协同办公 7月日更 初夏征文

    远程办公之如何推进跨部门项目协作 | 社区征文

    Tech技术攻关

    远程办公 7月日更 项目协调 初夏征文 工作协调

    封装一个koa分布式锁中间件来解决幂等或重复请求的问题

    程序知音

    编程 程序员 后端

    Python|函数和模块

    AXYZdong

    7月月更

    cgroup简介

    总想做点什么

    Cgroups

    架构实战营 - 第 6 期 毕业总结

    乐邦

    「架构实战营」

    为什么说数据服务化是下一代数据中台的方向?

    雨果

    数据中台 数字化转型 DaaS数据即服务

    ORACLE进阶(一) 通过EXPDP IMPDP命令实现导dmp

    No Silver Bullet

    oracle DMP 7月月更

    NFT新的契机,多媒体NFT聚合平台OKALEIDO即将上线

    小哈区块

    项目协作的进度如何推进| 社区征文

    卢卡多多

    初夏征文

    疫情常态化大背景下,关于远程办公的思考|社区征文

    如浴春风

    初夏征文

    Spring Boot应用在kubernetes的sidecar设计与实战

    程序员欣宸

    Java Kubernetes Sidecar 7月月更

    Hive的UDF

    怀瑾握瑜的嘉与嘉

    hive 7月月更

    聊聊Flink框架中的状态管理机制

    百思不得小赵

    大数据 flink 状态 7月月更

    疫情当头,作为Leader如何进行代码版本和需求开发管控?| 社区征文

    洛神灬殇

    团队管理 远程办公 7月日更 远程开发 初夏征文

    你开发数据API最快多长时间?我1分钟就足够了

    雨果

    API API开发

    TCP拥塞控制详解 | 3. 设计空间

    俞凡

    算法 网络 TCP拥塞控制

    CSRF

    急需上岸的小谢

    7月月更

    TOGAF认证自学宝典V2.0

    涛哥 数字产品和业务架构

    企业架构 TOGAF

    NFT新的契机,多媒体NFT聚合平台OKALEIDO即将上线

    西柚子

    Vuex(二)

    小恺

    7月月更

    Flutter 退出当前操作二次确认怎么做才更优雅?

    岛上码农

    flutter ios 安卓 移动端开发 7月月更

    『快速入门electron』之实现窗口拖拽

    是乃德也是Ned

    Electron electron实战 7月月更

    Jenkins抛弃Java 8拥抱Java 11

    FunTester

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