运维开发网

Athena 查询安全组的变化

运维开发网 https://www.qedev.com 2021-01-12 11:21 出处:51CTO 作者:beanxyz
今天早上有个诊所无法连接他们的EC2实例,简单的Troubleshoot了一下,发现安全组被人改动了,他们的IPsubnet被移除了3389的访问权限,自然无法远程连接。把对应的子网加进去,就都okay了。这个操作估计是某个管理员无意造成的。我们可以通过cloudtrail来进行删选。比如说我们可以查看revokesecuritygroupIngress的操作,就可以知道谁进行了安全组inboun

今天早上有个诊所无法连接他们的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 查询安全组的变化

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号