如何识别Elastic Search请求来源,判断请求是否来自指定Python服务
1 限制仅指定Python服务访问ES的配置方法
可以通过ES原生的安全配置实现请求识别与访问限制,常见方案如下:
- 账号鉴权:给该Python服务单独创建专属的ES账号,只分配对应索引的读写权限,其他账号不开放相关操作权限。ES的访问日志会自动记录请求所用的账号,可直接识别是否为该服务的请求,也能拦截未授权的其他请求。
- IP白名单限制:如果Python服务的部署IP固定,可在ES配置文件
elasticsearch.yml中配置xpack.security.http.filter规则,仅放行该服务的IP段,其余IP的访问请求会被直接拒绝。 - API Key鉴权:给该Python服务单独生成绑定了指定权限的API Key,所有携带该Key的请求都会被识别为该服务的请求,未携带合法Key的请求会被拦截。
2 请求追溯的实现方案
完全支持传入自定义字段用于日志追溯,推荐使用ES原生支持的追溯方案:
- 你可以要求Python服务的开发者在所有ES请求的Header中带上
X-Opaque-Id字段,字段值按你们约定的规则生成即可,比如拼接服务标识、请求唯一ID、调用链路ID等内容。 - 只需在ES配置中开启
X-Opaque-Id字段的日志记录开关,后续ES的访问日志、慢日志都会自动携带该字段内容,直接按字段值筛选即可追溯对应的请求来源与调用上下文。 - 如果需要更多自定义追溯字段,也可以配置ES的Ingest Pipeline,提取请求Header中的自定义字段写入日志或关联文档,满足更复杂的追溯需求。
内容的提问来源于stack exchange,提问作者CodeCool
相关产品推荐
相关产品推荐

