最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

【焦点热闻】使用python对AWS-CloudTrail-Json-日志文件key字段名称的提取

来源:博客园

关于AWSCloudTrail - 在Console界面,默认只能看到最近90天的数据

如果需要追踪更早的操作记录,得需要配置CloudTrail 日志 输出保存到s3

在s3上不同的region位于不同的目录,最后会将某一天的日志,存放到那一天的目录/文件夹中,


(资料图)

目录路径格式(部分)如:aws-account-xxx/CloudTrail/cn-north-1/2023/06/01/ 然后目录中的文件全部是.gz格式的压缩文件

于是解压后,就全部是json格式的文件了,json文件,内容只有一行,所以的内容都写在一行中,可以通过Records键得到一个包含所有的事件列表List

这里笔者是想要了解 每一个事件的key字段名称信息,需要知道,每个事件的key字段可能是不一样的,有多有少,但也有一些key字段是所有的事件都有的

于是这里,笔者写了如下脚本、通过多个CloudTrail日志文件,提取出所有的key字段名称,及共有通用的key字段名称,python代码如下:

#!/usr/bin/env python3 ## Author:QQ-5201351#import osimport jsondef JsonFile2Dict(FileName):    with open(FileName) as f:        DictContent = json.load(f)        return DictContentCloudTrailAllKeys=[]AllEventKeyLists=[]CommonKey=[]if __name__=="__main__":    # 如下方式也会将指定目录下的目录条目也进行列出,os.listdir("xxx")返回的是一个字符串列表    # 因此这里需要保存目录中全部都是json格式的文件,不要混入其他文件或者目录    for file in os.listdir("aa"):        CloudTrail=JsonFile2Dict("aa/"+file)        for EventItem in CloudTrail["Records"]:            for key in list(EventItem.keys()):                if key not in CloudTrailAllKeys:                    CloudTrailAllKeys.append(key)                        AllEventKeyLists.append(list(EventItem.keys()))    for key in CloudTrailAllKeys:        flag=False        for EventKeyList in AllEventKeyLists:              if key not in EventKeyList:                flag=True                break                        if flag==True:            break        else:            CommonKey.append(key)        print(len(CloudTrailAllKeys),CloudTrailAllKeys)    print(len(CommonKey),CommonKey)

代码的一些说明:

1、指定的目录中只能有CloudTrail的json格式的日志文件,不要混入其他文件或者目录,否则程序都会异常

2、使用到了break跳出两层的技巧

3、本代码只是为了实现功能,没有作太多的优化,如果文件太多,可能执行的时间会长一点

最后的执行结果(笔者只选用了3天多,共2689个文件做的测试),一共27个key 和 10个 Common key,如下:

27 ["eventVersion", "userIdentity", "eventTime", "eventSource", "eventName", "awsRegion", "sourceIPAddress", "userAgent", "requestParameters", "responseElements", "requestID", "eventID", "readOnly", "resources", "eventType", "managementEvent", "recipientAccountId", "eventCategory", "tlsDetails", "additionalEventData", "sharedEventID", "vpcEndpointId", "apiVersion", "errorCode", "errorMessage", "serviceEventDetails", "sessionCredentialFromConsole"]

10 ["eventVersion", "userIdentity", "eventTime", "eventSource", "eventName", "awsRegion", "sourceIPAddress", "userAgent", "requestParameters", "responseElements"]

如果后续在实际工作中,有发现其他的,将会继续更新到另一篇文章中,链接如下:

《关于aws-CloudTrail-操作日志的解析-审计-说明》:https://www.cnblogs.com/5201351/p/17493086.html

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17494409.html

关键词: