AWS Load Balancer访问S3 Bucket Policy权限被拒绝问题咨询
问题原因
- Principal配置错误:你当前配置的授权主体是你自身AWS账号的root用户,但ELB写入访问日志时,使用的是对应AWS区域的ELB专属服务账号,而非你个人的账号主体,权限授予对象错误导致写入被拒绝。
- 桶名不匹配:系统报错的桶名称为
bucket2,但你提供的策略中资源ARN写的桶名为elb-bkt,要么是策略没有应用到正确的桶上,要么是资源路径中的桶名配置错误。 - 权限覆盖范围不足:你当前仅配置了桶内对象路径的权限,缺少ELB校验桶存在所需的桶级权限,同时缺少强制对象权限的条件配置,也会触发访问拒绝。
- 权限配置冗余且不符合要求:你授予了
s3:*全量S3权限,既存在安全风险,也不符合ELB日志写入的最小权限要求,实际仅需s3:PutObject和s3:GetBucketAcl两个权限即可。
修复步骤
- 先查询你的ELB所在AWS区域对应的ELB服务账号ID,不同区域的ELB服务账号是固定公开值。
- 将如下策略应用到你实际使用的
bucket2桶上,替换所有占位符内容:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::[对应区域ELB服务账号ID]:root" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::bucket2/logs/AWSLogs/[你的AWS账号ID]/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::[对应区域ELB服务账号ID]:root" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::bucket2" } ] }
- 额外校验项:
- 确认桶没有配置拒绝类的策略、S3对象锁规则,也没有组织层面的SCP策略限制S3写入操作
- 确认ELB和S3桶所在区域符合要求,跨区域写入日志需要额外适配配置
内容的提问来源于stack exchange,提问作者asd32324
相关产品推荐
相关产品推荐

