S3バケットのセキュリティをチェックするLambdaを実装してみた

やること

・S3バケットポリシーのチェック
ACLのチェック

今回はそれぞれ許す相手をDynamoDBに保存して、LambdaでDynamoDBにない項目にアクセス許可が出ていないかをチェックした。言語はPython3.6です。
DynamoDBのテーブルはそれぞれ項目が'account_id'でアクセスを許可するアカウント番号を、'grantee_id'でACLを許可するサービスのIDを入力しておきます。

コード

くそ長くて読みづら...(´・ω・`)
コードの置き場所はここです

S3PolicyCheck/S3PolicyCheck.py at master · rioner/S3PolicyCheck · GitHub

今回はテーブル名を分けて作成しましたが、一緒にしてしまってもよいでしょう。
バケットポリシーが無い場合にバケットポリシーを読み取ろうとするとエラーが発生するので処理必須です。
コード内では最終結果をprintしてますが本来はメールで運用者に投げる方式にしましょう。

以上です。
S3バケットのセキュリティはおろそかにしないでちゃんと管理しましょう!