ablog

不器用で落着きのない技術者のメモ

Organization ID を利用してS3のクロスアカウントアクセスを許可する。

課題

S3 のバケットポリシーでクロスアカウントアクセスを許可する場合、Principal に指定するAWSアカウントIDの数が多くなると、バケットポリシーのサイズの上限に達してしまう。

解決策

{
    "Version": "2012-10-17",
    "Id": "Policy1543071477610",
    "Statement": [
        {
            "Sid": "AllowGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::orgid-test-bucket",
                "arn:aws:s3:::orgid-test-bucket/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalOrgID": [
                        "o-xxxxxxxxxx",
                        "o-yyyyyyyyyy",
                        "o-zzzzzzzzzz"
                    ]
                }
            }
        }
    ]
}
  • Organization ID はマスターアカウントで マネジメントコンソールにログインして、子アカウントを選択して[設定]をクリックして確認する。