AWS WAF のログを Kinesis Firehose を使って別のアカウントに保存したい時の CloudFormation Templete です

クロスアカウントでのログ収集

監査目的などで、1つのアカウントに全て集約したい!という時にハマったところがあるのでメモを残しておきます

説明資料と問題点

何が問題だったかというと、「コンソールから別アカウントのS3を指定できない」ということでした。
設定した後のIAMロールもS3のバケットポリシーに書いてあげないといけないし。

CloudFormation 書いちゃおう!ということで書いてみました。

CloudFormation Templete がこちら

ロググループとかの名前の部分とかを入力に集約するべきな気がするけど、とりあえず使えるのでおっけー

(GitHubが具合悪そうなので、あとでリンク追加)

出力のところに今回のCloudFormationで作成したIAMロールのARNが出力されるので、そちらを保存したいアカウントでS3のバケットポリシーに追記しましょう。

バケットポリシーの追加

以下のXXXXXXXXXXXX には 適用した環境でのAWSアカウント12桁IDが入ります
arnごと出力されるはずなので、そちらをコピペしてください

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Kinesis Firehose to S3",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::XXXXXXXXXXXX:role/FirehoseToCrossAccountS3Role"
                    ]
                },
                "Action": [
                    "s3:AbortMultipartUpload",
                    "s3:GetBucketLocation",
                    "s3:GetObject",
                    "s3:ListBucket",
                    "s3:ListBucketMultipartUploads",
                    "s3:PutObject",
                    "s3:PutObjectAcl"
                ],
                "Resource": [
                    "arn:aws:s3:::your-bucket-name",
                    "arn:aws:s3:::your-bucket-name/*"
                ]
            }
    ]
}

参考リンク

以上、オープンレポートでした

技術的なことで調べたり勉強したことを残していきます。日報をブログでやってみています
きっとゆるめに脱線することもあると思いますが、ゆるめに見守っていただければと思います。


参考にさせてもらったみんなのアウトプットに最大限のリスペクトと感謝を。
そして、この記事が誰かの役に立つことを願って

1

この記事を書いたのは

三浦一樹

社外の勉強会コミュニティによく出没
コミュニティ活動が評価され AWS SAMURAI 2019 という称号を頂きました。
技術がみんなものになればいいな、と思っています。
保有資格・【第一級陸上無線技術士】 【AWS SAA】 ネットデジタル事業部 所属

合わせて読みたい