ElasticSearch 7配置密码认证

我们直接安装的ES默认是没有账号与密码的,输入ES服务器的ip:端口,直接就能返回结果,非常不安全,因此选择设置密码

1.1 在ES节点上设置用户密码

1.1.1 在其中一个节点上生成认证文件

1.1.1.1 生成CA证书

$ cd /home/admin/local/elasticsearch

##生成 ca 证书

$ ./bin/elasticsearch-certutil ca

全部回车不用管密码

##用 ca 证书签发节点证书

$ ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

全部回车不用管密码

/*

在上面生成证书的时候设置了密码,会导致无法启动ES,报错:

ElasticsearchSecurityException[failed to load SSL configuration [xpack.security.transport.ssl]]; nested: ElasticsearchException[failed to create trust manager]; nested: ElasticsearchException[failed to initialize SSL TrustManager]; nested: IOException[keystore password was incorrect]; nested: UnrecoverableKeyException[failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption.];

Likely root cause: java.security.UnrecoverableKeyException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption.

*/

$ cd /home/admin/local/elasticsearch/config/

$ mkdir certs

$ mv /home/admin/local/elasticsearch/elastic-certificates.p12 config/certs/

$ mv /home/admin/local/elasticsearch/elastic-stack-ca.p12 config/certs/

并且将certs目录也复制到其他节点的对应目录里(所有节点都用同一份)

1.1.2 修改所有ES节点的配置文件
vi  /usr/local/ElasticSearch/config/elasticsearch.yml

添加:

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

1.1.3 重启各ES节点

启动命令:elasticsearch -d

1.1.4 设置密码

必须确保集群状态正常才行,否则密码设置会失败。

在其中一个节点上设置密码即可:

$ ./elasticsearch-setup-passwords interactive

$ Please confirm that you would like to continue [y/N] 输入y

下面是输入对应用户的密码

1.1.5  验证

http://IP:9200/_cat/nodes?pretty

输入用户elastic 和之前设置的密码 

1.2 配置kibana用户密码

由于ES设置了密码,kibana也无法无密码访问了,也需要对kibana进行相应设置。

2.2.1 修改配置文件

vi /usr/local/kibana/config/kibana.yml

添加:

elasticsearch.username: "kibana"

elasticsearch.password: "之前设置的密码"

2.2.2 重启kibana
#启动

/usr/local/kibana/bin/kibana &

2.2.3 登录验证

登录成功,但是,信息无法查看。权限没开通,返回如下信息。

{"statusCode":403,"error":"Forbidden","message":"Forbidden"}

用超级用户elastic用户可成功登录。

点击左下角的管理按钮->Security->Users,可以看到我们之前配置过密码的用户:

这些默认用户的角色无法修改,可自己新建角色和用户,来满足自己的使用需求。

2.3 在kibana里创建程序账号

想建一个有增删改查权限的程序账号,提供给程序使用。

2.3.1 创建角色

#给该角色授予操作所有索引的读写权限及创建索引的权限

 点击下面的'create role'创建角色。

 

2.3.2 创建用户

需要赋予该用户kibana_admin权限,否则新用户没权限登录,报错:

{"statusCode":403,"error":"Forbidden","message":"Forbidden"}

#不在页面配置的话,也可以直接用命令创建角色及账号。

#创建角色

curl  --user elastic:密码    -H "Content-Type: application/json" -XPUT http://172.18.252.101:10412/_security/role/DmlRole -d '{
"indices": [
    {
      "names": [
        "*"
      ],
      "privileges": [
        "read",
"write",
"create_index"
      ]
    }
  ]
}'


注释:

names:指定索引

privileges:权限类别

#创建账号

curl  --user elastic:密码   -H "Content-Type: application/json"  -XPOST http://172.18.252.101:10412/_security/user/ProgramUser -d '{

  "password" : "密码",

  "roles" : ["DmlRole","kibana_admin"]

}'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch是一个开源的分布式搜索与分析引擎,它提供了强大的搜索和近实时分析能力。在实际应用中,保护Elasticsearch集群和数据的安全性至关重要,用户认证就是其中一个重要的措施。 Elasticsearch用户认证主要是通过设置用户名和密码来限制对集群的访问。当一个用户想要连接到Elasticsearch集群时,需要提供正确的用户名和对应的密码才能被允许访问。用户认证可以有效防止未经授权的访问,提高集群的安全性。 要实现Elasticsearch的用户认证,首先需要在elasticsearch.yml配置文件中启用安全模块(x-pack.security.enabled: true)。然后,通过运行bin/elasticsearch-setup-passwords命令设置内置用户的密码。这些内置用户包括超级用户(superuser)、Kibana系统用户、和logstash系统用户。用户也可以自行创建新的用户,并为其分配特定的权限。 设置用户认证后,每次连接到Elasticsearch集群时都需要提供用户名和密码。可以通过使用HTTP基本身份验证或者通过在请求头中添加Authorization信息来进行身份验证。验证的用户将被授予相应的权限,然后可以进行索引、搜索和其他操作。 除了用户名和密码认证方式外,Elasticsearch还支持更高级的认证方式,如证书、Token等。可以根据具体情况选择最适合和安全的认证方式。 综上所述,Elasticsearch用户认证是保护集群和数据安全的重要措施。透过设置用户名和密码,限制对集群的访问,并赋予不同的权限,可以有效地防止未经授权的访问,提高集群的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值