如何通过Amplify限制Elastic Search集群的访问权限?
AWS OpenSearch(原Elasticsearch)集群访问控制方案选择
核心结论
你无需启用集群创建页面内置的Amazon Cognito认证配置,优先采用自定义JSON访问策略+网络层隔离的方案即可满足需求,同时避免ES被公开访问。
具体原因&配置说明
- 内置的Cognito认证能力仅适用于终端用户直接访问OpenSearch Dashboards(原Kibana)、或直接请求ES集群端点的场景。你的所有ES请求均由自定义Lambda代理转发,身份校验逻辑已经在Lambda层完成,启用该配置只会增加不必要的校验开销,没有实际收益。
- 首先做网络层隔离,从根源避免ES公开访问:将集群部署在VPC私有子网内,不分配公网IP,公网环境根本无法触达集群端点。
- 自定义JSON访问策略仅允许你的代理Lambda的执行角色访问ES集群,参考配置示例如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::[你的AWS账号ID]:role/[你的Lambda执行角色名]" }, "Action": ["es:ESHttpGet"], "Resource": "arn:aws:es:[集群部署区域]:[你的AWS账号ID]:domain/[你的集群名称]/*" } ] }
- 你现有Lambda层的Cognito用户校验、按用户过滤返回字段的逻辑无需修改,所有业务层的权限控制都可以在Lambda层完成,灵活度远高于ES侧的内置规则。
注意事项
- 任何场景下都不要给ES集群配置允许
0.0.0.0/0的访问规则,避免意外暴露到公网。 - 如果Lambda和ES集群部署在同一个VPC,需要为Lambda配置VPC访问权限,确保它可以正常访问私有子网内的ES端点。
内容的提问来源于stack exchange,提问作者Jonatan Tibarovsky
相关产品推荐
相关产品推荐

