Ich wollte Boto (Python SDK von AWS) verwenden, um das Protokoll von CloudTrail in S3 zu analysieren, aber es gab einige süchtig machende Punkte und ein Beispiel des Anfangs, das für mich sehr hilfreich wäre. Ich konnte den Code nicht gut finden, daher werde ich den Code als Referenz auf die Rückseite der Broschüre setzen.
Darüber hinaus ähnelt das CloudTrail-Protokoll Die Verwendung von Loggly erleichtert die Analyse.
"aws_access_key_id", "aws_secret_access_key", "target_path", "proxy", "proxy_port" müssen einzeln festgelegt werden.
aws_access_key_id
und aws_secret_access_key
den Schlüssel des für den externen AWS-Zugriff erstellten IAM-Benutzers auf S3 (vergessen Sie nicht, dem erstellten IAM-Benutzer ReadAccess-Recht ( AmazonS3ReadOnlyAccess
) zu geben!)proxy
, proxy_port
sind Einstellungen des HTTP-Proxyserverstarget_bucket
ist der Name des Ziel-Buckets, target_path
ist der Pfad von S3, den Sie analysieren möchten. Hier haben wir nur das Protokoll von 2015/07 von us-west-2 als Ziel ausgewähltDer Verarbeitungsablauf ist wie folgt.
target_path
von target_bucket
Bucket auf und laden Sie sie herunter['eventSource'] == 'rds.amazonaws.com'
), geben Sie den Inhalt in die Standardausgabe aus.
import boto.s3.connection, gzip, StringIO, json
aws_access_key_id='AKKBUGOIU4434DDTT'
aws_secret_access_key='78oiupoiuh7++REugoiusGSEE'
target_bucket = 'your-backet-name'
target_path = 'CroudTrail/AWSLogs/1234567899999888/CloudTrail/us-west-2/2015/07'
def main():
s3Instance = boto.s3.connection.S3Connection \
(aws_access_key_id, aws_secret_access_key, proxy='your.proxy.server.com', proxy_port=8080)
s3Bucket = s3Instance.get_bucket(target_bucket)
bucketList = s3Bucket.list(prefix=target_path)
for count, itemOne in enumerate(bucketList):
s3BucketKey = s3Bucket.get_key(itemOne.name)
buffer_gz = s3BucketKey.get_contents_as_string()
stringBuffer = StringIO.StringIO(buffer_gz)
buffer_text = gzip.GzipFile(fileobj=stringBuffer)
try:
responseJSON = json.loads(buffer_text.read())
except Exception, e:
print e
else:
for count, itemTwo in enumerate(responseJSON['Records']):
if itemTwo['eventSource'] == 'rds.amazonaws.com':
print json.dumps(itemTwo, separators=(',', ':'), indent=2)
print 'Event name = %s' % (itemTwo['eventName'])
print '================================='
stringBuffer.close()
buffer_text.close()
if __name__ == '__main__':
main()