1. 程式人生 > >elasticsearch+logstash+kibana5.5.2整合searchguard實現使用者許可權管理(一)

elasticsearch+logstash+kibana5.5.2整合searchguard實現使用者許可權管理(一)

本文不講elk的安裝,只說如何在現有elk環境下新增searchguard功能。

bin/elasticsearch-plugin install -b com.floragunn:search-guard-5:5.5.2-16

線上安裝可能不成功,可以下載離線安裝包安裝
bin/elasticsearch-plugin install -b file:///path/to/search-guard-5-<version>.zip
安裝過程中,提示輸入y/n。按y通過即可
3.安裝完成後,更改elasticsearch.yml(每個節點)
(我們先按官方給的例子做一遍,第二章再將如何定義自己的證書)
停止 Elasticsearch
cd into <Elasticsearch directory>/plugins/search-guard-5/tools


執行./install_demo_configuration.sh, 這個指令碼幫我們在es的配置目錄生成了下面三個檔案:
truststore.jks—the root CA and intermediate/signing CA.
keystore.jks—the node certificate.
kirk.jks—the admin certificate required for running sgadmin
並且在elasticsearch.yml檔案中添加了以下類似內容(下面是我改過的了,先按預設就可以)

searchguard.ssl.transport.keystore_filepath:
CN=node1-keystore.jks searchguard.ssl.transport.keystore_password: d38bc22059de78ebd105 searchguard.ssl.transport.truststore_filepath: truststore.jks searchguard.ssl.transport.truststore_password: 62ef1c559f6ba96e4ca1 searchguard.ssl.transport.enforce_hostname_verification: false searchguard.ssl.http.enabled:
true searchguard.ssl.http.keystore_filepath: CN=node1-keystore.jks searchguard.ssl.http.keystore_password: d38bc22059de78ebd105 searchguard.ssl.http.truststore_filepath: truststore.jks searchguard.ssl.http.truststore_password: 62ef1c559f6ba96e4ca1 searchguard.authcz.admin_dn: - CN=sgadmin

其實還有兩行是配置叢集name和監聽地址的,因為我們已經配置過了,這裡又給加上了,直接刪掉就可以,否則會啟動失敗
4.初始化sg(es叢集中任意一臺即可)
確保整個叢集是正常的
進入cd <Elasticsearch directory>/plugins/search-guard-5/tools
執行./sgadmin_demo.sh(我們先按官方給的預設配置來做,但是這個檔案中指定的叢集名字跟我們es叢集的名字不一樣,就會報錯)
我們先把 -cn my-application改成自己的叢集名字再執行
看到下面資訊說明初始化成功了

WARNING: JAVA_HOME not set, will use 
/usr/bin/java
Search Guard Admin v5
Will connect to localhost:9300 ... done

### LICENSE NOTICE Search Guard ###

If you use one or more of the following features in production
make sure you have a valid Search Guard license
(See https://floragunn.com/searchguard-validate-license)

* Kibana Multitenancy
* LDAP authentication/authorization
* Active Directory authentication/authorization
* REST Management API
* JSON Web Token (JWT) authentication/authorization
* Kerberos authentication/authorization
* Document- and Fieldlevel Security (DLS/FLS)
* Auditlogging

In case of any doubt mail to <[email protected]>
###################################
Contacting elasticsearch cluster 'elasticsearch' and wait for YELLOW clusterstate ...
Clustername: my-application
Clusterstate: GREEN
Number of nodes: 3
Number of data nodes: 3
searchguard index already exists, so we do not need to create one.
Populate config from /usr/share/elasticsearch/plugins/search-guard-5/sgconfig
Will update 'config' with ../sgconfig/sg_config.yml
   SUCC: Configuration for 'config' created or updated
Will update 'roles' with ../sgconfig/sg_roles.yml
   SUCC: Configuration for 'roles' created or updated
Will update 'rolesmapping' with ../sgconfig/sg_roles_mapping.yml
   SUCC: Configuration for 'rolesmapping' created or updated
Will update 'internalusers' with ../sgconfig/sg_internal_users.yml
   SUCC: Configuration for 'internalusers' created or updated
Will update 'actiongroups' with ../sgconfig/sg_action_groups.yml
   SUCC: Configuration for 'actiongroups' created or updated
Done with success

如果是其他資訊,可能是叢集狀態還沒正常,稍等一會兒看看
5.驗證

Using curl
Execute curl --insecure -u admin:admin 'https://localhost:9200/_searchguard/authinfo?pretty'
This will print out information about the user admin in JSON format on the console.
Using a browser
Open https://<hostname>:9200/_searchguard/authinfo.
Accept the self-signed demo TLS certificate.
In the HTTP Basic Authentication dialogue, use admin as username and admin as password.我
This will print out information about the user admin in JSON format.

6.至此,es中安裝sg就全部完成了,現在es已經不能使用http訪問,必須使用https。使用者的配置資訊放在
/usr/share/elasticsearch/plugins/search-guard-5/sgconfig下
的sg_internal_users.yml中。使用者名稱密碼都在,密碼可以使用tools資料夾下的hash自己加密。更改sgconfig下的檔案,需要重新初始化sg。再次執行5中的命令即可

  cd into your Kibana installaton directory.

執行:

  bin/kibana-plugin install file:///path/to/searchguard-kibana-<version>.zip.

2.配置kibana連線es
如果你安裝了xpack,sg可能更xpack的report功能衝突,這裡直接禁用掉report

xpack.reporting.enabled: false
searchguard.basicauth.enabled: true
searchguard.cookie.secure: false
searchguard.cookie.name: "searchguard_authentication"
searchguard.cookie.password: "searchguard_cookie_default_password"
searchguard.session.keepalive: true

配置使用者名稱,密碼(這裡我們使用自帶的最高許可權連線es)
elasticsearch.username: “admin”
elasticsearch.password: “admin”
配置url:
elasticsearch.url: “https://localhost:9200
關閉證書驗證:
elasticsearch.ssl.verificationMode: none

3.啟動kinana沒有報錯,說明配置成功,可以在瀏覽器中看到
這裡寫圖片描述
使用者密碼還是sg_config中的,這裡使用不同使用者,可以訪問的許可權也就不同了。

3.logstash連線es
logstash並不需要安裝sg外掛,只是因為現在es只能使用https訪問,所以logstash output必須使用https連線,這裡也是最麻煩的地方。(還要再說一點,如果你在logstash也安裝了xpack,請在logstash.yml關掉xpack.monitoring.enabled: false)
首先看一下配置:

output {
     elasticsearch {
        user => admin
        password => admin
        ssl => true
        ssl_certificate_verification => true
        truststore => "/etc/logstash/truststore.jks"
        truststore_password => "62ef1c559f6ba96e4ca1"
        hosts => [ "node1:9200","node2:9200","node3:9200" ]
        index => "mysql-%{+YYYY.MM.dd}"
     }
}

user登入使用者名稱,這裡為了避免許可權問題,先一如既往的使用admin使用者
password:密碼
ssl 是否開啟ssl,我們要使用https,必須設為true
ssl_certificate_verification 這個引數設定我們想像kinana那樣設定成fasle是不行的,還是會報錯,也就是必須設定成true,這樣一來下面的truststore和truststore_password 必須配置(ps:這裡我去作者github上看過issue了,沒有解決辦法,而且作者在原始碼中的注視中已經說明這個引數一直不正常,所以遺棄。)

        truststore => "/etc/logstash/truststore.jks"
        truststore_password => "62ef1c559f6ba96e4ca1"

下面說一下truststore 和truststore_password 如何配置。
truststore 這裡我們還是先使用es下的這個truststore.jks,你可以向我一樣cp到logstash的目錄下,我這裡logstash和一臺es是在一臺機器上的。
truststore_password這個密碼是changeit,因為我們使用的官方給的預設的truststore.jks檔案。

到此還有最關鍵一步,連線的hosts
hosts => [ “node1:9200”,”node2:9200”,”node3:9200” ]
官方的授信檔案中只有一個主機名,也就是node-0.example.com
所以你只能配置成:
hosts => [ “node-0.example.com:9200”]
然後修改系統的/etc/hosts檔案指向具體的ip地址。也就是說只能有一臺es可以用,就是hosts檔案中對應node-0.example.com的這個。
啟動logstash,沒有報錯,顯示如下資訊說明成功

 [2017-09-13T15:17:51,166][INFO ][logstash.outputs.elasticsearch] Attempting to install template {:manage_template=>{"template"=>"logstash-*", "version"=>50001, "settings"=>{"index.refresh_interval"=>"5s"}, "mappings"=>{"_default_"=>{"_all"=>{"enabled"=>true, "norms"=>false}, "dynamic_templates"=>[{"message_field"=>{"path_match"=>"message", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false}}}, {"string_fields"=>{"match"=>"*", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false, "fields"=>{"keyword"=>{"type"=>"keyword", "ignore_above"=>256}}}}}], "properties"=>{"@timestamp"=>{"type"=>"date", "include_in_all"=>false}, "@version"=>{"type"=>"keyword", "include_in_all"=>false}, "geoip"=>{"dynamic"=>true, "properties"=>{"ip"=>{"type"=>"ip"}, "location"=>{"type"=>"geo_point"}, "latitude"=>{"type"=>"half_float"}, "longitude"=>{"type"=>"half_float"}}}}}}}}
[2017-09-13T15:17:51,176][INFO ][logstash.outputs.elasticsearch] New Elasticsearch output {:class=>"LogStash::Outputs::ElasticSearch", :hosts=>["//node1:9200", "//node2:9200", "//node3:9200"]}
[2017-09-13T15:17:51,288][INFO ][logstash.pipeline        ] Starting pipeline {"id"=>"main", "pipeline.workers"=>2, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>250}
[2017-09-13T15:17:52,314][INFO ][logstash.inputs.beats    ] Beats inputs: Starting input listener {:address=>"0.0.0.0:5044"}
[2017-09-13T15:17:52,378][INFO ][logstash.inputs.beats    ] Beats inputs: Starting input listener {:address=>"0.0.0.0:5045"}
[2017-09-13T15:17:52,390][INFO ][logstash.pipeline        ] Pipeline main started
[2017-09-13T15:17:52,488][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

現在,我們的elk整合sg就全部配置完成了,我們下一章再講如何配置自己的授權證書

相關推薦

elasticsearch+logstash+kibana5.5.2整合searchguard實現使用者許可權管理

本文不講elk的安裝,只說如何在現有elk環境下新增searchguard功能。 bin/elasticsearch-plugin install -b com.floragunn:search-guard-5:5.5.2-16 線上安裝可能不成功,可以

elasticsearch+logstash+kibana5.5.2整合searchguard實現使用者許可權管理

上一篇我們完成了elk整合sg的配置,但是,我們的logstash只能使用一臺es,這是遠遠不夠的,我們要重新制作自己的授信檔案,幸運的是官網給出了一個工具,並且還給出了一個線上製作的網站,支援10個es節點,這裡我們使用線上製作 url: https://f

[thinkphp 5.0源碼閱讀] 緩存

png log cache 表數據 path file類 type 源碼閱讀 mage 保存緩存: user表數據: cache()方法保存緩存: 訪問 http://mythinkphp.com/index/index/cache ,兩個緩存被保存(runtim

ASP.net core 2.0.0 中 asp.net identity 2.0.0 的基本使用

使用 相對路徑 註意 apps 模型視圖 hand getc 技術分享 star 開發環境:vs2017 版本:15.3.5 項目環境:.net framework 4.6.1 模板asp.net core 2.0 Web應用程序(模型視圖控制器) 身份

Spring整合Struts2和Hibernate+Maven之Maven專案建立

趁著畢設的功夫,寫一些東西。也算是記錄個人平時畢設完成的過程。 建立專案 工具:intellij idea+JDK1.6+Maven 第一步:New Project ->點選左側maven ->勾選Create fromarchetype 後選擇maven-archet

RxJava 2.x 教程及原始碼揭祕入門理解及基本操作符

目錄 前言 Rxjava的介紹 Rxjava的優勢 Rxjava是觀察者模式 Rxjava是裝飾者模式 Observable Rxjava的操作符 subScribeOn與observeOn切換執行緒 其他操作符 補充 前言   &nbs

Jenkins+Git+Gitlab+Ansible實現持續整合自動化部署靜態網站--技術流ken

  前言   在之前已經寫了關於Git,Gitlab以及Ansible的兩篇部落格《Git+Gitlab+Ansible劇本實現一鍵部署Nginx--技術流ken》,《Git+Gitlab+Ansible劇本實現一鍵部署動態網站(二)--技術流ken》,以及關於jenkins的簡單使

2章 C++的簡單程式設計

第2章 C++的簡單程式設計(一) C++語言概述 名稱空間 基本資料型別、常量、變數 程式舉例 讀入並顯示資料 運算與表示式 sizeof, 位運算

springboot整合redis進行資料操作

redis是一種常見的nosql,日常開發中,我們使用它的頻率比較高,因為它的多種資料介面,很多場景中我們都可以用到,並且redis對分散式這塊做的非常好。 springboot整合redis比較簡單,並且使用redistemplate可以讓我們更加方便的對資料進行操作。 1、新增依賴

Spring Boot 2.0幹貨系列:Spring Boot1.5X升級到2.0指南

大量 gist 博客 指南 gem follow ref contex str 前言Spring Boot已經發布2.0有滿久了,多了很多新特性,一些坑也慢慢被填上,最近有空,就把本博客中Spring Boot幹貨系列對應的源碼從1.5X升級到Spring Boot 2.0

vue 2.0 實戰 移動音樂app專案準備工作 別名踩坑

1.package.json中新增依賴,"dependencies","devDependencies" "dependencies": { "babel-runtime": "^6.0.0", "vue": "^2.5.2", "vue-rout

屬性動畫2:ValueAnimator高階進階

1. 概述 前面一篇屬性動畫1:基礎知識和ValueAnimator寫完,我對屬性動畫基礎知識和ValueAnimator的簡單用法有了一些瞭解。要想把屬性動畫吃透,我感覺需要更加深入的學習。現在,就從ValueAnimator的高階進階開始,繼續攻克

C++併發程式設計2——為保護資料加鎖

找到問題的解決辦法,而不是找蹩腳的介面。 在應屆生面試的時候,很多面試官都會問——“多執行緒如何共享資源”。在作業系統層面上可以給出若干關鍵詞答案,但是在語言層面,這個問題考慮的就沒有那麼簡單了。同時,很多人會將多執行緒資料共享和執行緒同步混淆。有關執行緒同步,我們

Android4.4.2原始碼分析之WiFi模組

已經寫了幾篇關於Android原始碼的,原始碼程式碼量太大,所以如果想分析某個模組可能不知如何下手,說一下思路 1,分析原始碼英文閱讀能力要夠,想要分析某個模組一般找模組對應的英文,就是模組 2,找到之後首先檢視清單配置檔案Androidmani.fest,找到程式主介面activity 3,通過檢視配置檔

2.APP歡迎頁面的設計

實現效如下所示 實現這樣的設計需要建立兩個活動以及一個CountDownTimer類,分別命名WelcomeActivity和MainActivity。 具體程式設計如下: WelcomeActivity.class package com.example.r.achat; i

在Android4.2中實現bluetooth A2dp Sink——移植Android5.0藍芽協議棧

    一直以來,Android對於藍芽的支援都很混亂,簡直可以說是一坨shit。各個版本的協議棧都不一樣,最早用的是bluez,進入4.x時代之後,換成了谷歌自己的bluedroid。換就換吧,至少等做完了再用吧,結果4.2、4.3、4.4的bluedroid全都不一樣。

應用TP3.2.3的一些小問題

好久沒寫部落格了,最近剛到青島這邊找工作,有一大堆的事情,加上第一個專案比較趕,一直也沒什麼時間更新下部落格。難得今天有時間,就把最近用TP3.2碰到的一些問題給總結一些,做個記錄吧。1、tp的<

每天5分鐘玩轉Docker容器技術

寫在最前面 《每天5分鐘玩轉Docker容器技術》是一個有關容器技術的教程,有下面兩個特點: 系統講解當前最流行的容器技術 從容器的整個生態環境到各種具體的技術,從整體到細節逐一討論。重實踐併兼顧理論 從實際操作的角度帶領大家學習容器技術。為什麼要寫這個 簡單回答是:容器技術非常熱門,但門檻高。 容器技

Mysql基礎2:SQL語句基本操作

1. DDL:庫操作、表操作和列操作等(使用的關鍵字:create、alter和drop) 1.1  庫操作 基本語法:create database 資料庫名字 [資料庫選項] 資料庫選項:主要是用來約束資料庫,可分為兩項: 1)字符集的設定:charset或者

Spring boot 2.0 結合常用框架搭建

Spring boot 2.0釋出有一段時間了,本文一系列主要是說自己在搭建框架時的一些心得體會,使用了Spring boot 2.0+Mybatis+MySql+redis+shiro等等一系列成熟框架吧!idea 建立新專案 選spring boot 2.0 ,這裡都不說