配置S3 Policy允许Application Load Balancer推送日志时报Invalid principal错误
配置错误点及修复方案
核心错误1:Principal字段配置不符合要求
你填入的arn:aws:iam:LoadBalancerId:root是无效主体:ALB推送访问日志时,使用的是AWS为每个区域分配的固定ELB服务账号作为授权主体,和你自身负载均衡器的ID无关,你不能直接用LoadBalancerID拼接成ARN作为Principal。
核心错误2:权限范围过大
你配置的s3:*全量S3权限存在严重安全风险,ALB仅需要s3:PutObject权限即可完成日志写入操作。
修复后的策略示例
你需要先查询你ALB所在区域对应的官方ELB服务账号ID,替换到下述策略的对应区域ELB服务账号ID位置,同时替换S3bucketname为你的实际桶名:
{ "Id": "Policy1629585161607", "Version": "2012-10-17", "Statement": [ { "Sid": "AllowALBPutLog", "Action": "s3:PutObject", "Effect": "Allow", "Resource": "arn:aws:s3:::S3bucketname/*", "Principal": { "AWS": "arn:aws:iam::对应区域ELB服务账号ID:root" } } ] }
注:如果你的ALB日志配置了自定义前缀,需要把Resource字段修改为arn:aws:s3:::S3bucketname/你的前缀/*
内容的提问来源于stack exchange,提问作者Jim_Mcdonalds
相关产品推荐
相关产品推荐

