Athena 查询安全组的变化

今天早上有个诊所无法连接他们的EC2 实例,简单的Troubleshoot了一下,发现安全组被人改动了,他们的IP subnet被移除了3389的访问权限,自然无法远程连接。把对应的子网加进去,就都okay了。

这个操作估计是某个管理员无意造成的。我们可以通过cloudtrail来进行删选。比如说我们可以查看revokesecuritygroupIngress 的操作,就可以知道谁进行了安全组inbound policy的删除

Athena 查询安全组的变化

如果想看细节,我们可以点进去查看Event Record

Athena 查询安全组的变化

当然,如果数据特别多,我们可以通过Athena进行查询,点击右上角的按钮 Create Athena Table, 选择对应的S3 Bucket,他会自动生成对应的数据

Athena 查询安全组的变化

之后打开Athena,他已经生成了一个表,我们可以通过SQL遇见进行查询,这个表的结构和我们上面看见的Event Record里面的JSON数据是相匹配的

Athena 查询安全组的变化

需要注意的是他的每一列的格式,有的是string,有的是 struct。而在真正的JSON数据里面,有的数据,比如useridenty和 requestparameters 看起来都是嵌套的JSON格式,但是Athena的数据表里面,他们显示的类型却不一样,这样一来,我们对不同类型的数据写SQL语句的时候语法完全不一样。

看看下面的例子, userIdentity里面的嵌套的键值对是可以像对象一样直接调用的,而我的requestparameters里面的键值对,我需要用 json_extract 的方式来获取

select userIdentity.username as username, eventTime,sourceIPAddress, json_extract(requestparameters,'$.groupId') as sg , requestparameters from cloudtrail_logs_vetpartners_ec2logging 
where (eventname='RevokeSecurityGroupIngress')  

过滤结果如下所示,XXX在什么时候对什么安全组做了怎样的删除操作,一目了然

Athena 查询安全组的变化

猜你喜欢

转载自blog.51cto.com/beanxyz/2587292