Elasticsearch基础


    

当前直接使用ElasticSearch以及通过Kibana访问时,没有做任何限制,没有做用户和权限的控制,安全性上有一定风险,因此通过ES提供的X-PACK来实现这一需求。同样是基于ES5.5版本。官网简介如下:X-Pack是一种Elastic Stack扩展,可将安全性,警报,监控,报告和图形功能捆绑到一个易于安装的软件包中。 虽然X-Pack组件可以无缝协同工作,但您可以轻松地启用或禁用要使用的功能。可见,本文所述的相关功能只是这个扩展包的一小部分功能。

  1. ElasticSearch安装X-Pack,通过执行ES_HOME下的bin/elasticsearch-plugin install 命令安装,注意要使用启动es的用户,不要用root用户,集群中的每一个节点都需要执行: 
    bin/elasticsearch-plugin install x-pack

    官网还介绍了其他的安装方式,点这里。安装完成后,重启ES,启动日志中能看到x-pack:

    通过浏览器,再次访问时,会弹出提示输入用户名密码,输入默认的用户名/密码:elastic/changeme,即可。

  2. Kibanna安装X-Pack,和es安装类似,通过执行KIBANA_HOME下的bin/kibana-plugin install 命令安装,也有其他安装方式
  3. 用户管理
    x-pack提供了标准的rest api用于个用户、角色、权限等管理。详见
    (1)查看所有用户:curl -XGET -u elastic 'localhost:9200/_xpack/security/user',结果如下:
    {	"elastic": {		"username": "elastic",		"roles": ["superuser"],		"full_name": null,		"email": null,		"metadata": {			"_reserved": true
    		},		"enabled": true
    	},	"kibana": {		"username": "kibana",		"roles": ["kibana_system"],		"full_name": null,		"email": null,		"metadata": {			"_reserved": true
    		},		"enabled": true
    	},	"logstash_system": {		"username": "logstash_system",		"roles": ["logstash_system"],		"full_name": null,		"email": null,		"metadata": {			"_reserved": true
    		},		"enabled": true
    	}
    }

    可见,有三个默认用户,分别对应elastic,kibana,logstash三个系统,用户拥有不同的角色组。
    (2)查看某一用户:curl -XGET -u elastic 'localhost:9200/_xpack/security/user/elastic'
    (3)删除某一用户:curl -XDELETE -u elastic 'localhost:9200/_xpack/security/user/userName'
    (4)创建用户:见5

  4. 角色管理
    (1)查看所有角色:curl -XGET -u elastic 'localhost:9200/_xpack/security/role'
    (2)查看某一角色:curl -XGET -u elastic 'localhost:9200/_xpack/security/role/superuser'
    (3)删除某一角色:curl -XDELETE -u elastic 'localhost:9200/_xpack/security/role/roleName'
    (4)创建角色:见5
  5. 添加自己的用户
    创建用户需要指定其拥有的权限,可以使用系统默认的角色,也可以自己创建角色,如下:
    curl -XPOST -u elastic 'localhost:9200/_xpack/security/role/testRole' -H "Content-Type: application/json" -d '{"cluster":["all"],"indices":[{"names":["*"],"privileges":["all"]}]}'

    然后:

    curl -XPOST -u elastic 'localhost:9200/_xpack/security/user/testUser' -H "Content-Type: application/json" -d '{  "password" : "test",  "full_name" : "test user",  "email" : "test@test",  "roles" : [ "testRole" ],  "metadata" : {    "intelligence" : 7
      }
    }'

    testUser是创建的用户名。用户名必须至少为1个字符且不得超过30个字符。 第一个字符必须是字母(a-z或A-Z)或下划线(_)。 后续字符可以是字母,下划线(_),数字(0-9)或以下任何符号@, - ,。 或$。

    其中password和roles是必填字段,其余三个可选。

    创建结果如下,如果用户已存在,则会更新,结果中的created为false。

    {  "user": {    "created" : true 
      }
    }


    注意:上文提到的三个默认用户,是系统保留用户,不允许创建或修改,它们默认的角色亦是如此。
     

  6. 在代码中使用es用户管理
    如果对es开启了用户管理,而代码服务没有使用用户,会报如下错:
    Invocation of init method failed; nested exception is NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{dBISQCNcS4qAzYgKerYURA}{localhost}{localhost:9300}]]
    需要在代码中指定用户。
    首先引入依赖包:
    <dependencies>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>x-pack-transport</artifactId>
            <version>5.5.0</version>
        </dependency></dependencies>

    代码示例如下:
    import org.elasticsearch.xpack.client.PreBuiltXPackTransportClient;
    ...
    
    TransportClient client = new PreBuiltXPackTransportClient(Settings.builder()
            .put("cluster.name", "myClusterName")
            .put("xpack.security.user", "userName:password")
            ...
            .build())
        .addTransportAddress(new InetSocketTransportAddress("localhost", 9300))
        .addTransportAddress(new InetSocketTransportAddress("localhost", 9301));

    详见官网

    本文只列了一些基础的功能,具体参见官网。



微蓝网际编程论坛- 版权声明 1、本主题所有言论和图片纯属会员个人意见,与微蓝网际编程论坛立场无关。
2、本站所有主题由该帖子作者发表,该帖子作者admin微蓝网际编程论坛享有帖子相关版权。
3、微蓝网际编程论坛管理员和版主有权不事先通知发贴者而删除本文。
4、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者admin微蓝网际编程论坛的同意。
5、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任。
6、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
7、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意。


上一篇:Elasticsearch 运行状态检查
下一篇:Elasticsearch管理bin/elasticsearch-plugin install x-pack
快速回复
站长:秋枫雁飞 AI微蓝网管理员!有问题请发消息给我!
最新回复 (0)
只看楼主
全部楼主
    • 微蓝网际编程论坛
      2
          
返回
免责声明:本站部分内容来源于网络,若有侵权请及时通知(aiweline@qq.com),我们会及时处理。