首页 > 原创文章 > 软件开发 > 查看文章

Elasticsearch Entitlement warnings的解决方法

所属分类:软件开发 来源: 丁老师原创 更新时间:2026-02-07 10:43 浏览: 1653 IP属地: 深圳

有同学咨询,在使用Elasticsearch时,出现WARN提示信息的,如何解决这个问题?如果不影响使用的话,是否可以隐藏掉这个警告信息呢?
警告信息如下:

[WARN][org.elasticsearch.entitlement.runtime.policy.PolicyManager.repository-s3.ALL-UNNAMED.software.amazon.awssdk.profiles] [localhost] Not entitled: component [repository-s3], module [ALL-UNNAMED], class [class software.amazon.awssdk.profiles.ProfileFileLocation], entitlement [file], operation [read], path /home/<acct>/.aws/credentials
org.elasticsearch.entitlement.runtime.api.NotEntitledException: component [repository-s3], module [ALL-UNNAMED], class [class software.amazon.awssdk.profiles.ProfileFileLocation], entitlement [file], operation [read], path /home/<acct>/.aws/credentials

故障分析
经过丁老师分析,这个警告信息是Elasticsearch的权限管控(Entitlement)机制阻止了S3仓库插件读取亚马逊AWS凭证文件,原因是当ES检测到repository-s3组件后尝试读取 /home/<acct>/.aws/credentials 文件,但未授予文件读取权限,导致抛出NotEntitledException。由于Elasticsearch从8.x版本开始引入了Entitlement(权限授权) 机制,用于严格管控内置和第三方组件对系统资源的访问,目的是提升安全性。

问题解决
该故障有4种解决方式,具体如下:

解决方式一:通过ES配置放行S3凭证文件读取权限(推荐)
修改Elasticsearch的配置文件(elasticsearch.yml),授予repository-s3组件读取AWS凭证文件的权限:

# 1.放行repository-s3读取.aws/credentials文件的权限
entitlement:
repository-s3:
file:
read:
paths:
- "/home/<acct>/.aws/credentials" #替换为你的实际凭证文件路径
- "/home/<acct>/.aws/config" #可选:若用到 config 文件也放行

# 2.确保S3仓库插件已启用
plugin.mandatory: repository-s3

修改后重启Elasticsearch即可。

解决方式二:将AWS凭证配置到ES的S3仓库中,绕过文件读取
如果不想修改ES权限配置,可在创建S3仓库时指定AWS 凭证,避开文件读取权限问题:

#通过ES API创建S3仓库(替换为你的实际信息)
PUT /_snapshot/my_s3_repository
{
    "type": "s3",
    "settings": {
        "bucket": "your-s3-bucket-name", #你的S3桶名
        "region": "us-east-1", # 你的S3区域
        "access_key": "your-aws-access-key", #AWS AccessKey
        "secret_key": "your-aws-secret-key", #AWS SecretKey
        "base_path": "es-backups"  #可选:S3中的备份路径
    }
}

注意:这种方式会将AWS凭证明文存储在ES配置中,生产环境需配合ES的加密功能,避免凭证泄露。

解决方式三:使用IAM角色,无凭证文件,适合云环境
如果ES部署在亚马逊AWS EC2/EKS等云环境中,可给ES的实例绑定IAM角色,这样repository-s3插件会自动通过IAM角色获取权限,无需读取~/.aws/credentials 文件,从根源避免权限问题

实现方式:
1.在AWS IAM中创建角色,添加S3访问权限;
2.将角色绑定到ES所在的EC2实例/EKS Pod;
3.创建S3仓库时不指定access_key/secret_key,ES会自动使用IAM角色:

PUT /_snapshot/my_s3_repository
{
    "type": "s3",
        "settings": {
        "bucket": "your-s3-bucket-name",
        "region": "us-east-1",
        "base_path": "es-backups",
        "role_arn": "arn:aws:iam::123456789012:role/ES-S3-Access-Role"# 你的IAM角色ARN
    }
}

解决方式四:彻底隐藏WARN信息
在modules/repository-s3/src/main/config/log4j2.properties中设置

logger.entitlements_repository_s3.name = org.elasticsearch.entitlement.runtime.policy.PolicyManager.repository-s3.ALL-UNNAMED
logger.entitlements_repository_s3.level = error

就会隐藏该WARN信息,不影响基本功能的使用。

标签:

相关文章

软著申请需要哪些材料?费用多少钱?多久能办理...

经常有客户咨询丁老师,想对自己开发的软件申请软件著作权,都需要什么材料,需要多少钱,办理下来需要多久呢?今天丁老师就对这个问题进行统一解答。申请软著所需材料1.软件程序源码,要求前30页和后30页,每页不少于50行代码。2.软件用户手册...

微信小程序获取用户openid达到最高次数限...

有同学提问,他们公司的微信小程序,某个业务板块需要调用微信的openid,但是目前访问量巨大,已经突破了微信小程序对openid的最多次数限制,很多用户无法正常开展业务,该怎么办呢?经过丁老师分析和研究,发现该公司的小程序因访问量巨大,...

Telegram Mini小程序开发介绍

Telegram Mini小程序基于Javascript开发语言,是集成在Telegram应用内的轻量化网页应用。类似微信小程序,可以直接在Telegram对话或群组中运行而无需单独下载。Telegram小程序支持的应用程序:Teleg...

鸿蒙应用打包和发布的流程介绍

最近有个项目,是开发鸿蒙APP,涉及到鸿蒙应用的打包和发布的流程,特此开个文章做一下介绍。打包应用鸿蒙应用主要通过DevEco Studio进行打包,打包后生成的是HAP文件 (HarmonyOS Application Package...

推荐文章

Mysql导入文件,source命令/php...

用phpmyadmin导入大数据库文件时,容易502 bad gateway,可以直接在linux上用mysql原生命令导入。1.上传sql文件到目录用Xshell登录服务器,将迁移过来的 sql 文件移到 home 目录下,方便下一步的...

性价比最高的内网穿透方案

内网穿透,是指外网可以访问内网,没有固定IP的服务器,所以需要中间件来进行通讯,目前稳定成熟的中间件软件,要么价格太贵,要么就是只能使用标准服务,不能完全的定制化。那么,到底有没有一个性价比最优的方案呢?回答是肯定的,答案就是使用云服务器+...

宝塔面板phpmyadmin数据库表导航树禁...

宝塔面板的phpmyadmin,默认数据库表导航树是每30个一页,非常的不直观,可以通过修改宝塔phpmyadmin配置文件的方式来禁止他分页。修改方法:1.进入服务器/www/server/phpmyadmin/phpmyadmin_随机...

微信小程序从开发到实现微信支付的全过程

微信小程序部分一、完善小程序基本信息1.用管理员账号登录微信小程序(https://mp.weixin.qq.com/);2.左侧菜单选择首页;3.完善小程序的基本信息,包括小程序名称、小程序类目、微信认证、微信备案等。二、小程序开发配置1...