AWS Elasticsearch访问策略权限优先级疑问及配置解析
AWS Elasticsearch访问策略权限优先级解析
问题核心
你配置的策略里,6个IP通过第一条Allow语句已经获得了es:*的全权限(包含es:ESHttpDelete删除操作),第二条Allow仅对120.450.780.235重复授权删除操作,但整个策略没有任何Deny语句,所以其余5个IP的删除权限不会被限制——这就是你预期和实际不符的根本原因。
权限判断核心规则(遵循IAM核心逻辑,适配ES访问策略)
- 默认拒绝:所有未被显式
Allow的操作,默认都会被拒绝。 - 显式拒绝优先:如果存在
Effect: Deny的语句,且匹配请求的主体、操作、资源、条件,那么无论有多少Allow语句,该请求都会被拒绝(Deny优先级高于Allow)。 - 多Allow语句叠加:如果多条
Allow语句都匹配请求,权限会叠加,不会互相覆盖。
你的策略问题分析
看你提供的策略代码:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:*", "Resource": "arn:region:id:domain/domainname/*", "Condition": { "IpAddress": { "aws:SourceIp": [ "120.450.780.230", "120.450.780.231", "120.450.780.232", "120.450.780.233", "120.450.780.234", "120.450.780.235" ] } } }, { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESHttpDelete", "Resource": "arn:region:id:domain/domainname*", "Condition": { "IpAddress": { "aws:SourceIp": [ "120.450.780.235" ] } } } ] }
- 第一条语句已经允许6个IP执行所有ES操作,包括删除;
- 第二条语句只是给235这个IP再单独开一次删除权限,属于重复授权,对其他IP没有任何限制作用;
- 要实现“仅允许235执行删除,其余5个IP不能删”,必须添加显式Deny语句,拒绝这5个IP的
es:ESHttpDelete操作。
修正后的策略示例
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:*", "Resource": "arn:region:id:domain/domainname/*", "Condition": { "IpAddress": { "aws:SourceIp": [ "120.450.780.230", "120.450.780.231", "120.450.780.232", "120.450.780.233", "120.450.780.234", "120.450.780.235" ] } } }, { "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": "es:ESHttpDelete", "Resource": "arn:region:id:domain/domainname*", "Condition": { "IpAddress": { "aws:SourceIp": [ "120.450.780.230", "120.450.780.231", "120.450.780.232", "120.450.780.233", "120.450.780.234" ] } } } ] }
这个修正后的策略中:
- 先通过Allow给6个IP全权限;
- 再通过Deny拒绝其中5个IP的删除操作,Deny会覆盖之前的Allow,完全符合你的预期需求。
内容的提问来源于stack exchange,提问作者Jennifer Crosby
相关产品推荐
相关产品推荐

