AWS Elasticsearch IAM用户无法访问es域及dashboard问题咨询
问题原因
- 资源匹配范围不符合接口要求:AWS ES控制台加载仪表盘时,会默认调用
es:DescribeReservedElasticsearchInstances这类全局列表类接口,该类接口要求授权的作用资源为arn:aws:es:us-east-2:999999999999:domain/*(覆盖当前区域所有ES域)。但你当前配置的ES域访问策略中,仅给该用户开放了单个特定域的子资源权限arn:aws:es:us-east-2:999999999999:domain/xxxxxxx/*,无法匹配接口要求的资源范围,所以授权不生效。 - 存在显式拒绝规则:报错明确提示存在
explicit deny(显式拒绝),AWS权限体系中显式拒绝优先级高于所有允许规则,说明该IAM用户本身、所属用户组、绑定的角色或者权限边界中,存在针对es:DescribeReservedElasticsearchInstances操作的拒绝策略,直接拦截了请求。
解决方法
- 调整ES域访问策略,新增一条授权规则给对应用户放开控制台所需的全局操作权限,参考修改后的完整策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::999999999999:user/username" }, "Action": [ "es:DescribeReservedElasticsearchInstances", "es:ListDomainNames", "es:DescribeElasticsearchDomains" ], "Resource": "arn:aws:es:us-east-2:999999999999:domain/*" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::999999999999:user/username" }, "Action": "es:*", "Resource": "arn:aws:es:us-east-2:999999999999:domain/xxxxxxx/*" }, { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:*", "Resource": "arn:aws:es:us-east-2:999999999999:domain/xxxxxxx/*", "Condition": { "IpAddress": { "aws:SourceIp": "92.116.64.341" } } } ] }
- 排查该IAM用户的所有关联权限(包括用户自身附加策略、所属用户组策略、绑定角色策略、权限边界),删除其中针对ES相关操作的显式拒绝规则。
- 如果你不需要通过AWS控制台访问ES仪表盘,也可以直接使用该ES域的独立访问地址打开仪表盘,无需调用
domain/*级别的全局接口,也可正常使用。
内容的提问来源于stack exchange,提问作者stanvooz
相关产品推荐
相关产品推荐

