如何基于区域限制AWS访问?IAM策略配置后允许区域无法访问如何解决
问题根因分析
- 你当前配置的IAM策略仅包含Deny(拒绝)规则,缺失必要的Allow(允许)规则:AWS IAM权限体系遵循默认全拒绝原则,所有操作只有被显式Allow且未被Deny规则拦截时才会生效,仅配置Deny规则的情况下所有操作都会被默认拒绝,这是你无法访问允许列表内区域资源的核心原因。
- 你当前的Deny规则逻辑本身符合需求:它会拦截所有不属于
cloudfront/iam/route53三类全局服务、且请求区域不在你列出的4个欧洲区域的操作,刚好匹配你「仅允许访问指定区域、拒绝其他区域访问」的限制要求。
修复方案
你需要给对应的IAM身份(用户/角色/用户组)额外添加允许规则,授予你需要的访问权限,两种常见配置场景如下:
场景1:需要授予允许区域内所有资源的完全访问权限
可以直接在现有策略中新增Allow语句,修正后的完整策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAccessNotListedRegions", "Effect": "Deny", "NotAction": [ "cloudfront:*", "iam:*", "route53:*" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:RequestedRegion": [ "eu-central-1", "eu-west-3", "eu-west-2", "eu-west-1" ] } } }, { "Sid": "AllowAllActionsInApprovedRegions", "Effect": "Allow", "NotAction": [ "cloudfront:*", "iam:*", "route53:*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "eu-central-1", "eu-west-3", "eu-west-2", "eu-west-1" ] } } }, { "Sid": "AllowGlobalServicesAccess", "Effect": "Allow", "Action": [ "cloudfront:*", "iam:*", "route53:*" ], "Resource": "*" } ] }
场景2:已经绑定了其他权限策略(例如AdministratorAccess托管策略)
无需修改现有Deny策略,直接确认你绑定的其他策略已经授予了对应资源的访问权限即可,Deny规则会自动拦截非允许区域的请求。
验证说明
配置完成后访问eu-central-1的EC2控制台即可正常加载资源,访问ap-northeast-1等未允许区域的服务时会触发权限拒绝报错,符合预期目标。
内容的提问来源于stack exchange,提问作者Thiago Scodeler
相关产品推荐
相关产品推荐

