🕌

【AWS】ELBのログをS3に転送する設定をしたところ、S3のバケットポリシーに謎のアカウントIDを発見したので調べてみた

2022/08/19に公開

ELBのログをS3へ転送する設定をした際に疑問に思った調べたことを備忘として残します。

ELBからS3へログを転送する方法(簡易的に)

  1. 有効化したいELBを選択して「属性の編集」をクリック
  2. 「アクセスログ」の「有効化」をチェックする
  3. 「S3 の場所」に転送したいバケット名を入力し、「この場所の作成」を選択
      ※ELBとS3は同一リージョンである必要があります
  4. 「保存」を選択
  5. S3バケットが新規作成されて、ログ転送が有効化される

上記はS3バケットを新規作成する方法ですが、既存のバケットに対しても可能です。
しかし、バケットポリシーを自分で設定しないといけないので少し手間がかかります。

参考:ALBのアクセスログをS3に保存して中身を読み解いてみる

バケットポリシーを確認

新規作成されたS3バケットのバケットポリシーの一部を抜粋します。
(ZZZZZZZZZZZZZはマスクしていますが数字です。)

バケットポリシー一部
{
    "Version": "2012-10-17",
    "Id": "AWSConsole-AccessLogs-Policy-ZZZZZZZZZZZZZ",
    "Statement": [
        {
            "Sid": "AWSConsoleStmt-ZZZZZZZZZZZZZ",
            "Effect": "Allow",
            "Principal": {"AWS": "arn:aws:iam::582318560864:root"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::my-alb/AWSLogs/my-account-id/*"
        },

謎のAWSアカウントID「582318560864」

上記の「582318560864」は自分のAWSアカウントIDではなく何のアカウントなんだろうと疑問に思って調べたところ、サービス側でELBを管理しているアカウントであることがわかりました。
各リージョンごとにアカウントは作成されていて、「582318560864」はap-northeast-1(東京リージョン)のアカウントでした。各リージョンごとのアカウントIDは以下の参考にまとめてありました。

参考:Application Load Balancer のアクセスログ

結論、サービス側で管理しているAWSアカウントからS3バケットへPutするために用意されているということでした。

最後までお読みいただきありがとうございました。

Discussion