如何设置禁止通过AWS网页管理面板访问S3存储桶
解决方案
你可以通过配置S3桶策略,直接拦截所有来自AWS网页控制台的操作请求,仅放行业务逻辑层使用的IAM身份发起的请求,具体实现如下:
普通IAM身份限制配置
直接给目标存储桶添加如下桶策略即可:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::<替换为你的存储桶名>", "arn:aws:s3:::<替换为你的存储桶名>/*" ], "Condition": { "StringLike": { "aws:UserAgent": "*AWSConsole*" }, "StringNotEquals": { "aws:userId": [ "<替换为业务逻辑层使用的IAM用户ID>", "<替换为业务逻辑层使用的IAM角色ID>", "其他需要豁免的身份ID" ] } } } ] }
- 该策略会默认拒绝所有来自AWS网页控制台的S3操作,不影响API、SDK、CLI等非控制台渠道的请求
- 你可以在
aws:userId列表中添加需要豁免的身份ID,避免拦截合法的业务请求 - 如果不需要任何豁免,直接删掉
StringNotEquals的条件块即可
根用户权限限制
默认IAM策略无法限制根用户操作,如果需要限制根用户通过控制台访问S3,需要先启用AWS Organizations,在组织层面配置服务控制策略(SCP),添加拒绝根用户发起S3操作的规则即可。
配套校验
你可以通过CloudTrail日志查看所有S3请求的UserAgent字段,确认控制台请求被正常拦截,也可以根据日志调整匹配规则适配特殊场景。
内容的提问来源于stack exchange,提问作者workwise
相关产品推荐
相关产品推荐

