创建AWS Elasticsearch不启用细粒度访问控制无法完成创建怎么办
问题根因
AWS OpenSearch(原Elasticsearch Service)在公共访问模式+未启用细粒度访问控制的组合场景下,对访问策略有强制校验要求,不符合规则就会阻断创建流程,常见触发报错的原因如下:
- 策略中存在仅允许细粒度访问控制生效的权限配置,比如针对内部用户、角色的权限声明
- 策略未明确限定允许访问的主体,比如配置了
"Principal": "*"同时没有搭配IP条件限制,存在公开裸奔风险,AWS会强制拦截 - JSON格式语法错误,比如括号不闭合、逗号缺失、字段名拼写错误
- 策略中引用了不存在的IAM实体、ARN格式错误
正确配置示例
你可以参考以下符合规则的访问策略模板,替换其中的IP段、IAM ARN为你自己的资源即可:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:*", "Resource": "arn:aws:es:区域:你的账号ID:domain/你的实例名/*", "Condition": { "IpAddress": { "aws:SourceIp": [ "你要允许的公网IP1/32", "你要允许的公网IP2/32" ] } } } ] }
如果你仅允许特定IAM用户/角色访问,也可以用如下模板,不需要配IP限制:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam:你的账号ID:用户/角色名" }, "Action": "es:*", "Resource": "arn:aws:es:区域:你的账号ID:domain/你的实例名/*" } ] }
排查步骤
- 先复制你的JSON策略到JSON校验工具检查语法是否正确
- 确认策略没有包含任何和细粒度访问控制相关的权限字段
- 确认策略没有同时配置
Principal: "*"且没有IP限制/访问条件,这种配置AWS会直接判定为不安全触发报错 - 确认所有ARN字段的区域、账号ID、实例名称和你当前创建的实例配置一致
内容的提问来源于stack exchange,提问作者neda javaheri
相关产品推荐
相关产品推荐

