如何以只读权限在OpenSearch中成功清除Scroll上下文?
OpenSearch Scroll API 只读权限下清理滚动上下文的权限问题
问题详情
我需要通过Scroll API以只读权限从OpenSearch索引获取文档,先后尝试给角色配置以下权限:
indices:data/read/scroll/clear indices:data/read/scroll read
以及仅配置:
read
目前能正常获取目标文档,但执行滚动上下文清理操作时触发403权限错误,不想因未清理资源产生警告。使用版本:opensearch-py==2.2.0
执行代码
调用清理滚动上下文的Python代码:
self.client.clear_scroll(scroll_id=scroll_ids_str)
OpenSearch SDK底层发起的请求逻辑:
return self.transport.perform_request( "DELETE", "/_search/scroll", params=params, headers=headers, body=body )
权限错误信息
AuthorizationException(403, 'security_exception', {'error': {'root_cause': [ {'type': 'security_exception', 'reason': 'no permissions for [indices:data/read/scroll/clear] and User [name=arn:aws:iam::<AWSID>:user/<NAME>, backend_roles=[], requestedTenant=null]'}], 'type': 'security_exception', 'reason': 'no permissions for [indices:data/read/scroll/clear] and User [name=arn:aws:iam::<AWSID>:user/<NAME>, backend_roles=[], requestedTenant=null]'}, 'status': 403})
解决方法
- 明确权限的索引覆盖范围:
indices:data/read/scroll/clear权限需要指定正确的索引模式,若要清理全局滚动上下文,需配置为indices:data/read/scroll/clear:*;若仅针对特定索引,可设置为indices:data/read/scroll/clear:your-target-index-*,避免权限范围过窄。 - 确认权限生效状态:权限配置完成后,确保角色已正确关联到目标用户,部分环境需手动触发OpenSearch安全插件的权限刷新,保证新权限生效。
- AWS托管OpenSearch额外配置:如果使用AWS托管服务,除了OpenSearch内部角色权限,还需在IAM策略中添加允许
es:ESHttpDelete动作访问/_search/scroll资源的规则,示例策略:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "es:ESHttpDelete", "Resource": "arn:aws:es:<你的区域>:<AWS账号ID>:domain/<你的域名>/_search/scroll" } ] }
内容的提问来源于stack exchange,提问作者Rgkpdx
相关产品推荐
相关产品推荐

