Search Guard 기반 Elasticsearch 보안 인증 및 인증 구성
31431 단어 elastic
기사 목록
Install the Search Guard Plugin for your Elasticsearch version
Disable shard allocation
curl -XPUT 'http://es1:9200/_cluster/settings?pretty' -H 'Content-Type: application/json' -d'
{
"persistent": {
"cluster.routing.allocation.enable": "none"
}
}
'
다음 명령을 실행하려면 설정이 적용되는지 확인하십시오.curl -XGET 'http://es1:9200/_cluster/settings?pretty'
다음 결과를 출력하면 구성이 성공했음을 나타냅니다.{
"persistent" : {
"cluster" : {
"routing" : {
"allocation" : {
"enable" : "none"
}
}
}
},
"transient" : { }
}
Stop all nodes
다음 명령을 사용하여 ES 서비스의 프로세스 번호를 조회합니다(9200 포트 및 9300 포트를 사용하는 프로세스).netstat -tnlp
kill -9
Download
Search Guard Plugin 버전과 Elasticsearch 버전 간의 대응 관계에 대해서는 다음을 참조하십시오.https://docs.search-guard.com/latest/search-guard-versions
여기는elasticsearch-6.6.1을 예로 들어 설명합니다. 생산 서버가 네트워크에 연결할 수 없기 때문에 여기는 오프라인 방식으로 설치하고 Search Guard Plugin을 다운로드합니다.
다운로드 주소:https://oss.sonatype.org/service/local/repositories/releases/content/com/floragunn/search-guard-6/6.6.1-24.3/search-guard-6-6.6.1-24.3.zip
Install
search-guard-6.6.1-24.3.zip는 es가 있는 서버 노드로 복사하여/bin 디렉터리에 들어가 다음 명령을 실행하여 설치합니다./elasticsearch-plugin install -b file:///usr/local/hadoop/elasticsearch/search-guard-6-6.6.1-24.3.zip
구체적인 설치 절차는 홈페이지를 참고할 수 있다.https://docs.search-guard.com/6.x-24/search-guard-installation#adding-the-tls-configuration
Generate all required TLS certificates
참조:https://docs.search-guard.com/6.x-24/offline-tls-tool
오프라인 TLS 도구 다운로드
다운로드 주소:https://search.maven.org/#search|ga|1|a%3A"search-guard-tlstool"
여기 다운로드된 건 Search-guard-tlstool-1.7.tar.gz tar -zxvf search-guard-tlstool-1.7.tar.gz -C search-guard-tlstool //
Config node- and certificate configuration settings
/config 디렉토리 가져오기cp example.yml tlsconfig.yml
vi tlsconfig.yml
Generate Root and Intermediate CA
수정된 Self-generated certificate authority 부분은 다음과 같습니다.ca:
root:
# The distinguished name of this CA. You must specify a distinguished name.
dn: CN=root.ca.tomas.com,OU=CA,O=tomas,DC=tomas,DC=com
# The size of the generated key in bits
keysize: 2048
# The validity of the generated certificate in days from now
validityDays: 3650
# Password for private key
# Possible values:
# - auto: automatically generated password, returned in config output;
# - none: unencrypted private key;
# - other values: other values are used directly as password
pkPassword: root-ca-password
# The name of the generated files can be changed here
file: root-ca.pem
# If you want to use an intermediate certificate as signing certificate,
# please specify its parameters here. This is optional. If you remove this section,
# the root certificate will be used for signing.
intermediate:
# The distinguished name of this CA. You must specify a distinguished name.
dn: CN=signing.ca.tomas.com,OU=CA,O=tomas,DC=tomas,DC=com
# The size of the generated key in bits
keysize: 2048
# The validity of the generated certificate in days from now
validityDays: 3650
pkPassword: intermediate-ca-password
file: intermediate-ca.pem
# If you have a certificate revocation list, you can specify its distribution points here
# crlDistributionPoints: URI:https://raw.githubusercontent.com/floragunncom/unittest-assets/master/revoked.crl
/tools 디렉터리에 들어가서 다음 명령을 실행하여 루트와 Intermediate 인증서를 생성합니다./sgtlstool.sh -c ../config/tlsconfig.yml -ca
다음과 같은 정보를 제시하면 Root와intermediate 인증서 생성이 성공했음을 나타냅니다.Root certificate and signing certificate have been sucessfully created.
생성된 인증서는 기본적으로/tools/out 디렉터리에 저장됩니다.
Generate Node and Client CA
수정된 Default values and global settings 부분은 다음과 같습니다.defaults:
# The validity of the generated certificate in days from now
validityDays: 3650
# Password for private key
# Possible values:
# - auto: automatically generated password, returned in config output;
# - none: unencrypted private key;
# - other values: other values are used directly as password
pkPassword: auto
# Specifies to recognize legitimate nodes by the distinguished names
# of the certificates. This can be a list of DNs, which can contain wildcards.
# Furthermore, it is possible to specify regular expressions by
# enclosing the DN in //.
# Specification of this is optional. The tool will always include
# the DNs of the nodes specified in the nodes section.
nodesDn:
- "CN=*.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com"
# - 'CN=node.other.com,OU=SSL,O=Test,L=Test,C=DE'
# - 'CN=*.example.com,OU=SSL,O=Test,L=Test,C=DE'
# - 'CN=elk-devcluster*'
# - '/CN=.*regex/'
# If you want to use OIDs to mark legitimate node certificates,
# the OID can be included in the certificates by specifying the following
# attribute
nodeOid: "1.2.3.4.5.5"
# The length of auto generated passwords
generatedPasswordLength: 12
# Set this to true in order to generate config and certificates for
# the HTTP interface of nodes
httpsEnabled: true
# Set this to true in order to re-use the node transport certificates
# for the HTTP interfaces. Only recognized if httpsEnabled is true
reuseTransportCertificatesForHttp: false
# Set this to true to enable hostname verification
#verifyHostnames: false
# Set this to true to resolve hostnames
#resolveHostnames: false
수정된 Nodes 섹션은 다음과 같이 구성됩니다.nodes:
- name: es1
dn: CN=es1.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
dns: es1
- name: es2
dn: CN=es2.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
dns: es2
- name: es3
dn: CN=es3.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
dns: es3
- name: es4
dn: CN=es4.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
dns: es4
수정된 Clients 섹션은 다음과 같이 구성됩니다.clients:
- name: spock
dn: CN=spock.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
- name: kirk
dn: CN=kirk.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
admin: true
/tools 디렉터리에 들어가서 다음 명령을 실행하여 node와client 인증서를 생성합니다./sgtlstool.sh -c ../config/tlsconfig.yml -crt
다음과 같은 알림 정보를 보면 node와client 인증서 생성이 성공했음을 증명합니다Using signing certificate: /usr/local/hadoop/elasticsearch/search-guard-tlstool/tools/out/intermediate-ca.pem
Created 4 node certificates.
Passwords for the private keys of the node certificates have been auto-generated. The passwords are stored in the config snippet files.
Created 2 client certificates.
Passwords for the private keys of the client certificates have been auto-generated. The passwords are stored in the file "client-certificates.readme"
Config SSL
ElasticSearch 노드 간의 통신 묵값이 암호화되지 않아 데이터가 안전하지 않기 때문에 Search Guard는 ElasticSearch 노드 간의 통신을 암호화 방식으로 강제합니다.
distribute cetificates
상기 생성된 관련 인증서를 해당 ES 노드의/config 디렉터리로 복사합니다. 예를 들어 다음 파일을 hostname이 es1인 노드로 복사합니다.root-ca.pem
root-ca.key
intermediate-ca.pem
intermediate-ca.key
es1.pem
es1.key
es1_http.pem
es1_http.key
es1_elasticsearch_config_snippet.yml
kirk.pem
kirk.key
spock.pem
spock.key
다음 명령을 사용하여 상기 파일의 권한을 0600으로 변경합니다chmod 600 root* intermediate* kirk* spock* es1*
다음 파일을hostname이es2의 노드로 복사합니다root-ca.pem
root-ca.key
intermediate-ca.pem
intermediate-ca.key
es2.pem
es2.key
es2_http.pem
es2_http.key
es2_elasticsearch_config_snippet.yml
kirk.pem
kirk.key
spock.pem
spock.key
상기 파일의 권한을 0600, 이상, 기타 노드로 변경하려면 다음과 같은 명령을 사용하십시오.chmod 600 root-ca.* intermediate-ca.* es1* spock.* kirk.*
Change the permission on directory of /config
다음 명령을 사용하여 ES 클러스터 노드의/config 디렉토리 권한을 0700으로 변경합니다.chmod 700 <ES_HOME>/config
Disable X-Pack security
6.3.0 버전부터 Elasticsearch와 Kibana는 X-Pack과 OSS를 연결합니다. 만약에 Elasticsearch가 6.3.0 이상의 버전을 사용한다면 X-Pack security, 즉 ES 군집 각 노드의/config/elasticsearch를 닫아야 합니다.yml 파일에 다음과 같은 설정이 추가되었습니다.xpack.security.enabled: false
Adding the TLS configuration
장es1_elasticsearch_config_snippet.yml 파일의 내용은hostname이es1인 노드/config/elasticsearch에 추가되었습니다.yml 파일# This is a configuration snippet for the node es1
# This snippet needs to be inserted into the file config/elasticsearch.yml of the respective node.
# If the config file already contains SearchGuard configuration, this needs to be replaced.
# Furthermore, you need to copy the files referenced below into the same directory.
# Please refer to http://docs.search-guard.com/latest/configuring-tls for further configuration of your installation.
searchguard.ssl.transport.pemcert_filepath: es1.pem
searchguard.ssl.transport.pemkey_filepath: es1.key
searchguard.ssl.transport.pemkey_password: lZoD27XLoBry
searchguard.ssl.transport.pemtrustedcas_filepath: root-ca.pem
searchguard.ssl.transport.enforce_hostname_verification: false
searchguard.ssl.transport.resolve_hostname: false
searchguard.ssl.http.enabled: true
searchguard.ssl.http.pemcert_filepath: es1_http.pem
searchguard.ssl.http.pemkey_filepath: es1_http.key
searchguard.ssl.http.pemkey_password: sualxs42muY1
searchguard.ssl.http.pemtrustedcas_filepath: root-ca.pem
searchguard.authcz.admin_dn:
- CN=kirk.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
searchguard.cert.oid: 1.2.3.4.5.5
장es2_elasticsearch_config_snippet.yml 파일의 내용은hostname이es2인 노드/config/elasticsearch에 추가되었습니다.yml 파일# This is a configuration snippet for the node es2
# This snippet needs to be inserted into the file config/elasticsearch.yml of the respective node.
# If the config file already contains SearchGuard configuration, this needs to be replaced.
# Furthermore, you need to copy the files referenced below into the same directory.
# Please refer to http://docs.search-guard.com/latest/configuring-tls for further configuration of your installation.
searchguard.ssl.transport.pemcert_filepath: es2.pem
searchguard.ssl.transport.pemkey_filepath: es2.key
searchguard.ssl.transport.pemkey_password: d0aVkFO9ZW0W
searchguard.ssl.transport.pemtrustedcas_filepath: root-ca.pem
searchguard.ssl.transport.enforce_hostname_verification: false
searchguard.ssl.transport.resolve_hostname: false
searchguard.ssl.http.enabled: true
searchguard.ssl.http.pemcert_filepath: es2_http.pem
searchguard.ssl.http.pemkey_filepath: es2_http.key
searchguard.ssl.http.pemkey_password: 153IQlKc2bul
searchguard.ssl.http.pemtrustedcas_filepath: root-ca.pem
searchguard.authcz.admin_dn:
- CN=kirk.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
searchguard.cert.oid: 1.2.3.4.5.5
Enable the REST management API
ES 클러스터 각 노드의/config/elasticsearch.yml 파일에 다음과 같은 설정이 추가되었습니다.searchguard.restapi.roles_enabled: ["sg_all_access"]
ES 클러스터 모든 노드 구성 후 ES 클러스터 재시작
Restart Elasticsearch
다음 명령을 사용하여 ES 클러스터의 모든 노드를 시작합니다.cd /usr/local/hadoop/elasticsearch/
./bin/elasticsearch -d
Re-enable shard allocation by using sgadmin
admin 인증서, 루트 인증서를 사용하고 sgadmin 도구나curl을 결합하여shardallocation을 할 수 있습니다. 여기에서 sgadmin을 사용합니다. 구체적인 명령은 다음과 같습니다.cd /usr/local/hadoop/elasticsearch/plugins/search-guard-6/tools
chmod u+x sgadmin.sh // sgadmin.sh
./sgadmin.sh -icl -nhnv -h es1 --enable-shard-allocation -cacert ../../../config/root-ca.pem -cert ../../../config/kirk.pem -key ../../../config/kirk.key -keypass zNbkgrtwctow
그 중에서 zNbkgrtwctow는 관리자 인증서의 개인 키 비밀번호로client-certificates에 있습니다.readme 파일에서 찾기
Initializing Search Guard
참조:https://docs.search-guard.com/latest/sgadmin
Search Guard의 설정 (users,roles,permissions 포함) 은 모두 ES 그룹에 저장된 index입니다. 이렇게 하면 설정을 수정한 후에 바로 적용됩니다. 그룹을 다시 시작하지 않아도 됩니다.Search Guard의 설정 정보는 sgadmin 도구를 통해 ES의 한 index에 불러와야 하기 때문에 (기본적으로 이 index는 존재하지 않습니다.) sgadmin은 주로 index와 설정 인증과 권한 수여 방식을 초기화하는 데 사용됩니다.
Change the permissions on that script and give it execution rights
chmod +x plugins/search-guard-7/tools/sgadmin.sh
다음 명령을 실행하여 sgadmin을 볼 수 있음을 알립니다.sh 도구의 모든 명령줄 옵션./sgadmin.sh
Using sgadmin with PEM certificates
ES 클러스터의 모든 노드(es1 노드의 경우)에서 다음 명령을 실행합니다../sgadmin.sh -h es1 -cd ../sgconfig/ -icl -nhnv -cacert ../../../config/root-ca.pem -cert ../../../config/kirk.pem -key ../../../config/kirk.key -keypass zNbkgrtwctow
다음과 같은 알림 정보를 보면 그룹 초기화 성공 증명Search Guard Admin v6
Will connect to hadoopSvr3:9300 ... done
Elasticsearch Version: 6.6.1
Search Guard Version: 6.6.1-24.3
Connected as CN=kirk.wxtomas.com,OU=Ops,O=wxtomas Com\, Inc.,DC=wxtomas,DC=com
Contacting elasticsearch cluster 'elasticsearch' and wait for YELLOW clusterstate ...
Clustername: ES-cluster
Clusterstate: GREEN
Number of nodes: 2
Number of data nodes: 2
searchguard index does not exists, attempt to create it ... done (0-all replicas)
Populate config from /usr/local/elasticsearch-6.6.1/plugins/search-guard-6/sgconfig
Will update 'sg/config' with ../sgconfig/sg_config.yml
SUCC: Configuration for 'config' created or updated
Will update 'sg/roles' with ../sgconfig/sg_roles.yml
SUCC: Configuration for 'roles' created or updated
Will update 'sg/rolesmapping' with ../sgconfig/sg_roles_mapping.yml
SUCC: Configuration for 'rolesmapping' created or updated
Will update 'sg/internalusers' with ../sgconfig/sg_internal_users.yml
SUCC: Configuration for 'internalusers' created or updated
Will update 'sg/actiongroups' with ../sgconfig/sg_action_groups.yml
SUCC: Configuration for 'actiongroups' created or updated
Done with success
Test the installation
visiting https://es1:9200
사용자 이름과 암호를 입력해야 한다는 메시지가 나타나면 admin/admin 을 입력합니다.
Display information about the currently logged in user
visiting https://es1:9200/_searchguard/authinfo?pretty
Search Guard Health Check
Search Guard가 제대로 설치되어 있고 정상적으로 실행 중인지 확인하기 위해 Search Guard의 건강 상태를 확인하기 위해 브라우저 주소 표시줄에 아래 주소를 입력하십시오 https://:9200/_searchguard/health 출력 결과는 다음과 같습니다.{"message":null,"mode":"strict","status":"UP"}
Search Guard가 정상적으로 작동하고 있음을 나타냅니다.
Accessing data Check
curl -u admin:admin -k -XGET 'https://:9200/_cat?pretty'
이로써 Search Guard 인증은 기본적으로 완성되었습니다. 다음은 계정 권한의 창설과 관리에 관하여 Kibana에서 직접 조작할 수 있습니다.
Config Kibana
참조:https://docs.search-guard.com/6.x-24/kibana-plugin-installation
Installing the Search Guard Plugin
1. Kibana 버전과 일치하는 Search Guard Kibana Plugin 다운로드 주소:https://oss.sonatype.org/service/local/repositories/releases/content/com/floragunn/search-guard-kibana-plugin/6.6.1-18.4/search-guard-kibana-plugin-6.6.1-18.4.zip
2. Kibana 닫기
3. 다운로드한 플러그인search-guard-kibana-plugin-6.6.1-18.4.zip을 Kibana의 설치 디렉터리에 업로드하고 다음 명령을 실행하여 플러그인을 설치합니다bin/kibana-plugin install file:////usr/local/kibana-6.6.1-linux-x86_64/search-guard-kibana-plugin-6.6.1-18.4.zip
다음과 같은 정보를 제시하면 설치가 성공했음을 나타냅니다.Attempting to transfer from file:////usr/local/kibana-6.6.1-linux-x86_64/search-guard-kibana-plugin-6.6.1-18.4.zip
Transferring 1046761 bytes....................
Transfer complete
Retrieving metadata from plugin archive
Extracting plugin archive
Extraction complete
Optimizing and caching browser bundles...
Plugin installation complete
Disable X-Pack Security
kibana 설치 디렉터리에 있는config/kibana.yml 파일에서 수정 설정은 다음과 같습니다.xpack.security.enabled: false
Configuring the Kibana server user
kibana 설치 디렉터리에 있는config/kibana.yml 파일에서 수정 설정은 다음과 같습니다.elasticsearch.username: "kibanaserver"
elasticsearch.password: "kibanaserver"
Setting up SSL/TLS
Elasticsearch REST layer에서 TLS를 열었기 때문에 키바나가 Elasticsearch에 접근하는 프로토콜은 http에서 https로 바뀌어야 합니다. config/kibana에서.yml 파일에서 수정 설정은 다음과 같습니다.elasticsearch.hosts: ["https://ip:9200"]
Configuring the Root CA
두 가지 설정이 있습니다. 하나는 인증서 검증을 닫는 것입니다. config/kibana에서.yml 파일에서 수정 설정은 다음과 같습니다.elasticsearch.ssl.verificationMode: none
둘째, 루트 CA를 제공합니다, config/kibana에서.yml 파일에서 수정 설정은 다음과 같습니다.elasticsearch.ssl.certificateAuthorities: "/path/to/your/root-ca.pem"
elasticsearch.ssl.verificationMode: certificate
그리고 키바나를 시작합니다.
Config logstash
참조:https://docs.search-guard.com/6.x-24/elasticsearch-logstash-search-guard
Check permissions for the logstash user
Search Guard secured cluster에서 logstash user를 기본적으로 설정합니다. Search Guard에 logstash 사용자가 포함되어 있기 때문에 여기서 따로 설정하지 않습니다./plugins/search-guard-6/sgconfig/sg_roles.yml 파일에서 sg_ 보기logstash 사용자의 권한은 다음과 같습니다.# For logstash and beats
sg_logstash:
cluster:
- CLUSTER_MONITOR
- CLUSTER_COMPOSITE_OPS
- indices:admin/template/get
- indices:admin/template/put
indices:
'logstash-*':
'*':
- CRUD
- CREATE_INDEX
'*beat*':
'*':
- CRUD
- CREATE_INDEX
관리자 계정으로 키바나에 로그인하여 Search Guard 메뉴에 들어가 Permissions and Roles 섹션의 Search Guard Roles에서 볼 수도 있습니다.
set up a logstash user
logstash 사용자를logstash의 프로필logstash에 설정합니다.conf에서elasticsearch 출력 부분은 구체적으로 다음과 같습니다.output {
elasticsearch {
user => logstash
password => logstash
...
}
}
Setting up TLS/SSL
앞에서 ES에서 REST 층을 시작하는 TLS를 설정했기 때문에 logstash를 설정하여 https를 사용하여elasticsearch와 통신하고 루트 인증서를 logstash-6.4.2/config 디렉터리에 복사하고 logstash의 프로필 logstash를 설정해야 합니다.conf에서elasticsearch 출력 부분 설정은 다음과 같습니다. ssl => true
ssl_certificate_verification => false
cacert => "/usr/local/logstash-6.4.2/config/root-ca.pem"
index => "logstash-rs1_26_mongodlog"
주의: 사용자 정의 색인 이름이라면, 색인 이름은'logstash-*'시작 또는'beat'와 일치해야 합니다. 그렇지 않으면logstash 사용자는 권한이 없습니다.그리고logstash를 다시 시작합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Elasticsearch의 중첩 조회 소개 및 실례
업무상 특정한 유사한 상품을 하나의 관련 그룹으로 집합시켜야 한다.
특정한 상품의 특징에 따라 자신이 있는 관련 그룹을 조회할 수 있도록 지원해야 한다.es의 저장 구조는 다음과 같다.
만약memberGoods가 일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
curl -XPUT 'http://es1:9200/_cluster/settings?pretty' -H 'Content-Type: application/json' -d'
{
"persistent": {
"cluster.routing.allocation.enable": "none"
}
}
'
curl -XGET 'http://es1:9200/_cluster/settings?pretty'
{
"persistent" : {
"cluster" : {
"routing" : {
"allocation" : {
"enable" : "none"
}
}
}
},
"transient" : { }
}
netstat -tnlp
kill -9
./elasticsearch-plugin install -b file:///usr/local/hadoop/elasticsearch/search-guard-6-6.6.1-24.3.zip
참조:https://docs.search-guard.com/6.x-24/offline-tls-tool
오프라인 TLS 도구 다운로드
다운로드 주소:https://search.maven.org/#search|ga|1|a%3A"search-guard-tlstool"
여기 다운로드된 건 Search-guard-tlstool-1.7.tar.gz
tar -zxvf search-guard-tlstool-1.7.tar.gz -C search-guard-tlstool //
Config node- and certificate configuration settings
/config 디렉토리 가져오기
cp example.yml tlsconfig.yml
vi tlsconfig.yml
Generate Root and Intermediate CA
수정된 Self-generated certificate authority 부분은 다음과 같습니다.
ca:
root:
# The distinguished name of this CA. You must specify a distinguished name.
dn: CN=root.ca.tomas.com,OU=CA,O=tomas,DC=tomas,DC=com
# The size of the generated key in bits
keysize: 2048
# The validity of the generated certificate in days from now
validityDays: 3650
# Password for private key
# Possible values:
# - auto: automatically generated password, returned in config output;
# - none: unencrypted private key;
# - other values: other values are used directly as password
pkPassword: root-ca-password
# The name of the generated files can be changed here
file: root-ca.pem
# If you want to use an intermediate certificate as signing certificate,
# please specify its parameters here. This is optional. If you remove this section,
# the root certificate will be used for signing.
intermediate:
# The distinguished name of this CA. You must specify a distinguished name.
dn: CN=signing.ca.tomas.com,OU=CA,O=tomas,DC=tomas,DC=com
# The size of the generated key in bits
keysize: 2048
# The validity of the generated certificate in days from now
validityDays: 3650
pkPassword: intermediate-ca-password
file: intermediate-ca.pem
# If you have a certificate revocation list, you can specify its distribution points here
# crlDistributionPoints: URI:https://raw.githubusercontent.com/floragunncom/unittest-assets/master/revoked.crl
/tools 디렉터리에 들어가서 다음 명령을 실행하여 루트와 Intermediate 인증서를 생성합니다
./sgtlstool.sh -c ../config/tlsconfig.yml -ca
다음과 같은 정보를 제시하면 Root와intermediate 인증서 생성이 성공했음을 나타냅니다.
Root certificate and signing certificate have been sucessfully created.
생성된 인증서는 기본적으로/tools/out 디렉터리에 저장됩니다.
Generate Node and Client CA
수정된 Default values and global settings 부분은 다음과 같습니다.
defaults:
# The validity of the generated certificate in days from now
validityDays: 3650
# Password for private key
# Possible values:
# - auto: automatically generated password, returned in config output;
# - none: unencrypted private key;
# - other values: other values are used directly as password
pkPassword: auto
# Specifies to recognize legitimate nodes by the distinguished names
# of the certificates. This can be a list of DNs, which can contain wildcards.
# Furthermore, it is possible to specify regular expressions by
# enclosing the DN in //.
# Specification of this is optional. The tool will always include
# the DNs of the nodes specified in the nodes section.
nodesDn:
- "CN=*.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com"
# - 'CN=node.other.com,OU=SSL,O=Test,L=Test,C=DE'
# - 'CN=*.example.com,OU=SSL,O=Test,L=Test,C=DE'
# - 'CN=elk-devcluster*'
# - '/CN=.*regex/'
# If you want to use OIDs to mark legitimate node certificates,
# the OID can be included in the certificates by specifying the following
# attribute
nodeOid: "1.2.3.4.5.5"
# The length of auto generated passwords
generatedPasswordLength: 12
# Set this to true in order to generate config and certificates for
# the HTTP interface of nodes
httpsEnabled: true
# Set this to true in order to re-use the node transport certificates
# for the HTTP interfaces. Only recognized if httpsEnabled is true
reuseTransportCertificatesForHttp: false
# Set this to true to enable hostname verification
#verifyHostnames: false
# Set this to true to resolve hostnames
#resolveHostnames: false
수정된 Nodes 섹션은 다음과 같이 구성됩니다.
nodes:
- name: es1
dn: CN=es1.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
dns: es1
- name: es2
dn: CN=es2.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
dns: es2
- name: es3
dn: CN=es3.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
dns: es3
- name: es4
dn: CN=es4.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
dns: es4
수정된 Clients 섹션은 다음과 같이 구성됩니다.
clients:
- name: spock
dn: CN=spock.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
- name: kirk
dn: CN=kirk.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
admin: true
/tools 디렉터리에 들어가서 다음 명령을 실행하여 node와client 인증서를 생성합니다
./sgtlstool.sh -c ../config/tlsconfig.yml -crt
다음과 같은 알림 정보를 보면 node와client 인증서 생성이 성공했음을 증명합니다
Using signing certificate: /usr/local/hadoop/elasticsearch/search-guard-tlstool/tools/out/intermediate-ca.pem
Created 4 node certificates.
Passwords for the private keys of the node certificates have been auto-generated. The passwords are stored in the config snippet files.
Created 2 client certificates.
Passwords for the private keys of the client certificates have been auto-generated. The passwords are stored in the file "client-certificates.readme"
Config SSL
ElasticSearch 노드 간의 통신 묵값이 암호화되지 않아 데이터가 안전하지 않기 때문에 Search Guard는 ElasticSearch 노드 간의 통신을 암호화 방식으로 강제합니다.
distribute cetificates
상기 생성된 관련 인증서를 해당 ES 노드의/config 디렉터리로 복사합니다. 예를 들어 다음 파일을 hostname이 es1인 노드로 복사합니다.root-ca.pem
root-ca.key
intermediate-ca.pem
intermediate-ca.key
es1.pem
es1.key
es1_http.pem
es1_http.key
es1_elasticsearch_config_snippet.yml
kirk.pem
kirk.key
spock.pem
spock.key
다음 명령을 사용하여 상기 파일의 권한을 0600으로 변경합니다chmod 600 root* intermediate* kirk* spock* es1*
다음 파일을hostname이es2의 노드로 복사합니다root-ca.pem
root-ca.key
intermediate-ca.pem
intermediate-ca.key
es2.pem
es2.key
es2_http.pem
es2_http.key
es2_elasticsearch_config_snippet.yml
kirk.pem
kirk.key
spock.pem
spock.key
상기 파일의 권한을 0600, 이상, 기타 노드로 변경하려면 다음과 같은 명령을 사용하십시오.chmod 600 root-ca.* intermediate-ca.* es1* spock.* kirk.*
Change the permission on directory of /config
다음 명령을 사용하여 ES 클러스터 노드의/config 디렉토리 권한을 0700으로 변경합니다.chmod 700 <ES_HOME>/config
Disable X-Pack security
6.3.0 버전부터 Elasticsearch와 Kibana는 X-Pack과 OSS를 연결합니다. 만약에 Elasticsearch가 6.3.0 이상의 버전을 사용한다면 X-Pack security, 즉 ES 군집 각 노드의/config/elasticsearch를 닫아야 합니다.yml 파일에 다음과 같은 설정이 추가되었습니다.xpack.security.enabled: false
Adding the TLS configuration
장es1_elasticsearch_config_snippet.yml 파일의 내용은hostname이es1인 노드/config/elasticsearch에 추가되었습니다.yml 파일# This is a configuration snippet for the node es1
# This snippet needs to be inserted into the file config/elasticsearch.yml of the respective node.
# If the config file already contains SearchGuard configuration, this needs to be replaced.
# Furthermore, you need to copy the files referenced below into the same directory.
# Please refer to http://docs.search-guard.com/latest/configuring-tls for further configuration of your installation.
searchguard.ssl.transport.pemcert_filepath: es1.pem
searchguard.ssl.transport.pemkey_filepath: es1.key
searchguard.ssl.transport.pemkey_password: lZoD27XLoBry
searchguard.ssl.transport.pemtrustedcas_filepath: root-ca.pem
searchguard.ssl.transport.enforce_hostname_verification: false
searchguard.ssl.transport.resolve_hostname: false
searchguard.ssl.http.enabled: true
searchguard.ssl.http.pemcert_filepath: es1_http.pem
searchguard.ssl.http.pemkey_filepath: es1_http.key
searchguard.ssl.http.pemkey_password: sualxs42muY1
searchguard.ssl.http.pemtrustedcas_filepath: root-ca.pem
searchguard.authcz.admin_dn:
- CN=kirk.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
searchguard.cert.oid: 1.2.3.4.5.5
장es2_elasticsearch_config_snippet.yml 파일의 내용은hostname이es2인 노드/config/elasticsearch에 추가되었습니다.yml 파일# This is a configuration snippet for the node es2
# This snippet needs to be inserted into the file config/elasticsearch.yml of the respective node.
# If the config file already contains SearchGuard configuration, this needs to be replaced.
# Furthermore, you need to copy the files referenced below into the same directory.
# Please refer to http://docs.search-guard.com/latest/configuring-tls for further configuration of your installation.
searchguard.ssl.transport.pemcert_filepath: es2.pem
searchguard.ssl.transport.pemkey_filepath: es2.key
searchguard.ssl.transport.pemkey_password: d0aVkFO9ZW0W
searchguard.ssl.transport.pemtrustedcas_filepath: root-ca.pem
searchguard.ssl.transport.enforce_hostname_verification: false
searchguard.ssl.transport.resolve_hostname: false
searchguard.ssl.http.enabled: true
searchguard.ssl.http.pemcert_filepath: es2_http.pem
searchguard.ssl.http.pemkey_filepath: es2_http.key
searchguard.ssl.http.pemkey_password: 153IQlKc2bul
searchguard.ssl.http.pemtrustedcas_filepath: root-ca.pem
searchguard.authcz.admin_dn:
- CN=kirk.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
searchguard.cert.oid: 1.2.3.4.5.5
Enable the REST management API
ES 클러스터 각 노드의/config/elasticsearch.yml 파일에 다음과 같은 설정이 추가되었습니다.searchguard.restapi.roles_enabled: ["sg_all_access"]
ES 클러스터 모든 노드 구성 후 ES 클러스터 재시작
Restart Elasticsearch
다음 명령을 사용하여 ES 클러스터의 모든 노드를 시작합니다.cd /usr/local/hadoop/elasticsearch/
./bin/elasticsearch -d
Re-enable shard allocation by using sgadmin
admin 인증서, 루트 인증서를 사용하고 sgadmin 도구나curl을 결합하여shardallocation을 할 수 있습니다. 여기에서 sgadmin을 사용합니다. 구체적인 명령은 다음과 같습니다.cd /usr/local/hadoop/elasticsearch/plugins/search-guard-6/tools
chmod u+x sgadmin.sh // sgadmin.sh
./sgadmin.sh -icl -nhnv -h es1 --enable-shard-allocation -cacert ../../../config/root-ca.pem -cert ../../../config/kirk.pem -key ../../../config/kirk.key -keypass zNbkgrtwctow
그 중에서 zNbkgrtwctow는 관리자 인증서의 개인 키 비밀번호로client-certificates에 있습니다.readme 파일에서 찾기
Initializing Search Guard
참조:https://docs.search-guard.com/latest/sgadmin
Search Guard의 설정 (users,roles,permissions 포함) 은 모두 ES 그룹에 저장된 index입니다. 이렇게 하면 설정을 수정한 후에 바로 적용됩니다. 그룹을 다시 시작하지 않아도 됩니다.Search Guard의 설정 정보는 sgadmin 도구를 통해 ES의 한 index에 불러와야 하기 때문에 (기본적으로 이 index는 존재하지 않습니다.) sgadmin은 주로 index와 설정 인증과 권한 수여 방식을 초기화하는 데 사용됩니다.
Change the permissions on that script and give it execution rights
chmod +x plugins/search-guard-7/tools/sgadmin.sh
다음 명령을 실행하여 sgadmin을 볼 수 있음을 알립니다.sh 도구의 모든 명령줄 옵션./sgadmin.sh
Using sgadmin with PEM certificates
ES 클러스터의 모든 노드(es1 노드의 경우)에서 다음 명령을 실행합니다../sgadmin.sh -h es1 -cd ../sgconfig/ -icl -nhnv -cacert ../../../config/root-ca.pem -cert ../../../config/kirk.pem -key ../../../config/kirk.key -keypass zNbkgrtwctow
다음과 같은 알림 정보를 보면 그룹 초기화 성공 증명Search Guard Admin v6
Will connect to hadoopSvr3:9300 ... done
Elasticsearch Version: 6.6.1
Search Guard Version: 6.6.1-24.3
Connected as CN=kirk.wxtomas.com,OU=Ops,O=wxtomas Com\, Inc.,DC=wxtomas,DC=com
Contacting elasticsearch cluster 'elasticsearch' and wait for YELLOW clusterstate ...
Clustername: ES-cluster
Clusterstate: GREEN
Number of nodes: 2
Number of data nodes: 2
searchguard index does not exists, attempt to create it ... done (0-all replicas)
Populate config from /usr/local/elasticsearch-6.6.1/plugins/search-guard-6/sgconfig
Will update 'sg/config' with ../sgconfig/sg_config.yml
SUCC: Configuration for 'config' created or updated
Will update 'sg/roles' with ../sgconfig/sg_roles.yml
SUCC: Configuration for 'roles' created or updated
Will update 'sg/rolesmapping' with ../sgconfig/sg_roles_mapping.yml
SUCC: Configuration for 'rolesmapping' created or updated
Will update 'sg/internalusers' with ../sgconfig/sg_internal_users.yml
SUCC: Configuration for 'internalusers' created or updated
Will update 'sg/actiongroups' with ../sgconfig/sg_action_groups.yml
SUCC: Configuration for 'actiongroups' created or updated
Done with success
Test the installation
visiting https://es1:9200
사용자 이름과 암호를 입력해야 한다는 메시지가 나타나면 admin/admin 을 입력합니다.
Display information about the currently logged in user
visiting https://es1:9200/_searchguard/authinfo?pretty
Search Guard Health Check
Search Guard가 제대로 설치되어 있고 정상적으로 실행 중인지 확인하기 위해 Search Guard의 건강 상태를 확인하기 위해 브라우저 주소 표시줄에 아래 주소를 입력하십시오 https://:9200/_searchguard/health 출력 결과는 다음과 같습니다.{"message":null,"mode":"strict","status":"UP"}
Search Guard가 정상적으로 작동하고 있음을 나타냅니다.
Accessing data Check
curl -u admin:admin -k -XGET 'https://:9200/_cat?pretty'
이로써 Search Guard 인증은 기본적으로 완성되었습니다. 다음은 계정 권한의 창설과 관리에 관하여 Kibana에서 직접 조작할 수 있습니다.
Config Kibana
참조:https://docs.search-guard.com/6.x-24/kibana-plugin-installation
Installing the Search Guard Plugin
1. Kibana 버전과 일치하는 Search Guard Kibana Plugin 다운로드 주소:https://oss.sonatype.org/service/local/repositories/releases/content/com/floragunn/search-guard-kibana-plugin/6.6.1-18.4/search-guard-kibana-plugin-6.6.1-18.4.zip
2. Kibana 닫기
3. 다운로드한 플러그인search-guard-kibana-plugin-6.6.1-18.4.zip을 Kibana의 설치 디렉터리에 업로드하고 다음 명령을 실행하여 플러그인을 설치합니다bin/kibana-plugin install file:////usr/local/kibana-6.6.1-linux-x86_64/search-guard-kibana-plugin-6.6.1-18.4.zip
다음과 같은 정보를 제시하면 설치가 성공했음을 나타냅니다.Attempting to transfer from file:////usr/local/kibana-6.6.1-linux-x86_64/search-guard-kibana-plugin-6.6.1-18.4.zip
Transferring 1046761 bytes....................
Transfer complete
Retrieving metadata from plugin archive
Extracting plugin archive
Extraction complete
Optimizing and caching browser bundles...
Plugin installation complete
Disable X-Pack Security
kibana 설치 디렉터리에 있는config/kibana.yml 파일에서 수정 설정은 다음과 같습니다.xpack.security.enabled: false
Configuring the Kibana server user
kibana 설치 디렉터리에 있는config/kibana.yml 파일에서 수정 설정은 다음과 같습니다.elasticsearch.username: "kibanaserver"
elasticsearch.password: "kibanaserver"
Setting up SSL/TLS
Elasticsearch REST layer에서 TLS를 열었기 때문에 키바나가 Elasticsearch에 접근하는 프로토콜은 http에서 https로 바뀌어야 합니다. config/kibana에서.yml 파일에서 수정 설정은 다음과 같습니다.elasticsearch.hosts: ["https://ip:9200"]
Configuring the Root CA
두 가지 설정이 있습니다. 하나는 인증서 검증을 닫는 것입니다. config/kibana에서.yml 파일에서 수정 설정은 다음과 같습니다.elasticsearch.ssl.verificationMode: none
둘째, 루트 CA를 제공합니다, config/kibana에서.yml 파일에서 수정 설정은 다음과 같습니다.elasticsearch.ssl.certificateAuthorities: "/path/to/your/root-ca.pem"
elasticsearch.ssl.verificationMode: certificate
그리고 키바나를 시작합니다.
Config logstash
참조:https://docs.search-guard.com/6.x-24/elasticsearch-logstash-search-guard
Check permissions for the logstash user
Search Guard secured cluster에서 logstash user를 기본적으로 설정합니다. Search Guard에 logstash 사용자가 포함되어 있기 때문에 여기서 따로 설정하지 않습니다./plugins/search-guard-6/sgconfig/sg_roles.yml 파일에서 sg_ 보기logstash 사용자의 권한은 다음과 같습니다.# For logstash and beats
sg_logstash:
cluster:
- CLUSTER_MONITOR
- CLUSTER_COMPOSITE_OPS
- indices:admin/template/get
- indices:admin/template/put
indices:
'logstash-*':
'*':
- CRUD
- CREATE_INDEX
'*beat*':
'*':
- CRUD
- CREATE_INDEX
관리자 계정으로 키바나에 로그인하여 Search Guard 메뉴에 들어가 Permissions and Roles 섹션의 Search Guard Roles에서 볼 수도 있습니다.
set up a logstash user
logstash 사용자를logstash의 프로필logstash에 설정합니다.conf에서elasticsearch 출력 부분은 구체적으로 다음과 같습니다.output {
elasticsearch {
user => logstash
password => logstash
...
}
}
Setting up TLS/SSL
앞에서 ES에서 REST 층을 시작하는 TLS를 설정했기 때문에 logstash를 설정하여 https를 사용하여elasticsearch와 통신하고 루트 인증서를 logstash-6.4.2/config 디렉터리에 복사하고 logstash의 프로필 logstash를 설정해야 합니다.conf에서elasticsearch 출력 부분 설정은 다음과 같습니다. ssl => true
ssl_certificate_verification => false
cacert => "/usr/local/logstash-6.4.2/config/root-ca.pem"
index => "logstash-rs1_26_mongodlog"
주의: 사용자 정의 색인 이름이라면, 색인 이름은'logstash-*'시작 또는'beat'와 일치해야 합니다. 그렇지 않으면logstash 사용자는 권한이 없습니다.그리고logstash를 다시 시작합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Elasticsearch의 중첩 조회 소개 및 실례
업무상 특정한 유사한 상품을 하나의 관련 그룹으로 집합시켜야 한다.
특정한 상품의 특징에 따라 자신이 있는 관련 그룹을 조회할 수 있도록 지원해야 한다.es의 저장 구조는 다음과 같다.
만약memberGoods가 일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
root-ca.pem
root-ca.key
intermediate-ca.pem
intermediate-ca.key
es1.pem
es1.key
es1_http.pem
es1_http.key
es1_elasticsearch_config_snippet.yml
kirk.pem
kirk.key
spock.pem
spock.key
chmod 600 root* intermediate* kirk* spock* es1*
root-ca.pem
root-ca.key
intermediate-ca.pem
intermediate-ca.key
es2.pem
es2.key
es2_http.pem
es2_http.key
es2_elasticsearch_config_snippet.yml
kirk.pem
kirk.key
spock.pem
spock.key
chmod 600 root-ca.* intermediate-ca.* es1* spock.* kirk.*
chmod 700 <ES_HOME>/config
xpack.security.enabled: false
# This is a configuration snippet for the node es1
# This snippet needs to be inserted into the file config/elasticsearch.yml of the respective node.
# If the config file already contains SearchGuard configuration, this needs to be replaced.
# Furthermore, you need to copy the files referenced below into the same directory.
# Please refer to http://docs.search-guard.com/latest/configuring-tls for further configuration of your installation.
searchguard.ssl.transport.pemcert_filepath: es1.pem
searchguard.ssl.transport.pemkey_filepath: es1.key
searchguard.ssl.transport.pemkey_password: lZoD27XLoBry
searchguard.ssl.transport.pemtrustedcas_filepath: root-ca.pem
searchguard.ssl.transport.enforce_hostname_verification: false
searchguard.ssl.transport.resolve_hostname: false
searchguard.ssl.http.enabled: true
searchguard.ssl.http.pemcert_filepath: es1_http.pem
searchguard.ssl.http.pemkey_filepath: es1_http.key
searchguard.ssl.http.pemkey_password: sualxs42muY1
searchguard.ssl.http.pemtrustedcas_filepath: root-ca.pem
searchguard.authcz.admin_dn:
- CN=kirk.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
searchguard.cert.oid: 1.2.3.4.5.5
# This is a configuration snippet for the node es2
# This snippet needs to be inserted into the file config/elasticsearch.yml of the respective node.
# If the config file already contains SearchGuard configuration, this needs to be replaced.
# Furthermore, you need to copy the files referenced below into the same directory.
# Please refer to http://docs.search-guard.com/latest/configuring-tls for further configuration of your installation.
searchguard.ssl.transport.pemcert_filepath: es2.pem
searchguard.ssl.transport.pemkey_filepath: es2.key
searchguard.ssl.transport.pemkey_password: d0aVkFO9ZW0W
searchguard.ssl.transport.pemtrustedcas_filepath: root-ca.pem
searchguard.ssl.transport.enforce_hostname_verification: false
searchguard.ssl.transport.resolve_hostname: false
searchguard.ssl.http.enabled: true
searchguard.ssl.http.pemcert_filepath: es2_http.pem
searchguard.ssl.http.pemkey_filepath: es2_http.key
searchguard.ssl.http.pemkey_password: 153IQlKc2bul
searchguard.ssl.http.pemtrustedcas_filepath: root-ca.pem
searchguard.authcz.admin_dn:
- CN=kirk.tomas.com,OU=Ops,O=tomas,DC=tomas,DC=com
searchguard.cert.oid: 1.2.3.4.5.5
searchguard.restapi.roles_enabled: ["sg_all_access"]
다음 명령을 사용하여 ES 클러스터의 모든 노드를 시작합니다.
cd /usr/local/hadoop/elasticsearch/
./bin/elasticsearch -d
Re-enable shard allocation by using sgadmin
admin 인증서, 루트 인증서를 사용하고 sgadmin 도구나curl을 결합하여shardallocation을 할 수 있습니다. 여기에서 sgadmin을 사용합니다. 구체적인 명령은 다음과 같습니다.cd /usr/local/hadoop/elasticsearch/plugins/search-guard-6/tools
chmod u+x sgadmin.sh // sgadmin.sh
./sgadmin.sh -icl -nhnv -h es1 --enable-shard-allocation -cacert ../../../config/root-ca.pem -cert ../../../config/kirk.pem -key ../../../config/kirk.key -keypass zNbkgrtwctow
그 중에서 zNbkgrtwctow는 관리자 인증서의 개인 키 비밀번호로client-certificates에 있습니다.readme 파일에서 찾기
Initializing Search Guard
참조:https://docs.search-guard.com/latest/sgadmin
Search Guard의 설정 (users,roles,permissions 포함) 은 모두 ES 그룹에 저장된 index입니다. 이렇게 하면 설정을 수정한 후에 바로 적용됩니다. 그룹을 다시 시작하지 않아도 됩니다.Search Guard의 설정 정보는 sgadmin 도구를 통해 ES의 한 index에 불러와야 하기 때문에 (기본적으로 이 index는 존재하지 않습니다.) sgadmin은 주로 index와 설정 인증과 권한 수여 방식을 초기화하는 데 사용됩니다.
Change the permissions on that script and give it execution rights
chmod +x plugins/search-guard-7/tools/sgadmin.sh
다음 명령을 실행하여 sgadmin을 볼 수 있음을 알립니다.sh 도구의 모든 명령줄 옵션./sgadmin.sh
Using sgadmin with PEM certificates
ES 클러스터의 모든 노드(es1 노드의 경우)에서 다음 명령을 실행합니다../sgadmin.sh -h es1 -cd ../sgconfig/ -icl -nhnv -cacert ../../../config/root-ca.pem -cert ../../../config/kirk.pem -key ../../../config/kirk.key -keypass zNbkgrtwctow
다음과 같은 알림 정보를 보면 그룹 초기화 성공 증명Search Guard Admin v6
Will connect to hadoopSvr3:9300 ... done
Elasticsearch Version: 6.6.1
Search Guard Version: 6.6.1-24.3
Connected as CN=kirk.wxtomas.com,OU=Ops,O=wxtomas Com\, Inc.,DC=wxtomas,DC=com
Contacting elasticsearch cluster 'elasticsearch' and wait for YELLOW clusterstate ...
Clustername: ES-cluster
Clusterstate: GREEN
Number of nodes: 2
Number of data nodes: 2
searchguard index does not exists, attempt to create it ... done (0-all replicas)
Populate config from /usr/local/elasticsearch-6.6.1/plugins/search-guard-6/sgconfig
Will update 'sg/config' with ../sgconfig/sg_config.yml
SUCC: Configuration for 'config' created or updated
Will update 'sg/roles' with ../sgconfig/sg_roles.yml
SUCC: Configuration for 'roles' created or updated
Will update 'sg/rolesmapping' with ../sgconfig/sg_roles_mapping.yml
SUCC: Configuration for 'rolesmapping' created or updated
Will update 'sg/internalusers' with ../sgconfig/sg_internal_users.yml
SUCC: Configuration for 'internalusers' created or updated
Will update 'sg/actiongroups' with ../sgconfig/sg_action_groups.yml
SUCC: Configuration for 'actiongroups' created or updated
Done with success
Test the installation
visiting https://es1:9200
사용자 이름과 암호를 입력해야 한다는 메시지가 나타나면 admin/admin 을 입력합니다.
Display information about the currently logged in user
visiting https://es1:9200/_searchguard/authinfo?pretty
Search Guard Health Check
Search Guard가 제대로 설치되어 있고 정상적으로 실행 중인지 확인하기 위해 Search Guard의 건강 상태를 확인하기 위해 브라우저 주소 표시줄에 아래 주소를 입력하십시오 https://:9200/_searchguard/health 출력 결과는 다음과 같습니다.{"message":null,"mode":"strict","status":"UP"}
Search Guard가 정상적으로 작동하고 있음을 나타냅니다.
Accessing data Check
curl -u admin:admin -k -XGET 'https://:9200/_cat?pretty'
이로써 Search Guard 인증은 기본적으로 완성되었습니다. 다음은 계정 권한의 창설과 관리에 관하여 Kibana에서 직접 조작할 수 있습니다.
Config Kibana
참조:https://docs.search-guard.com/6.x-24/kibana-plugin-installation
Installing the Search Guard Plugin
1. Kibana 버전과 일치하는 Search Guard Kibana Plugin 다운로드 주소:https://oss.sonatype.org/service/local/repositories/releases/content/com/floragunn/search-guard-kibana-plugin/6.6.1-18.4/search-guard-kibana-plugin-6.6.1-18.4.zip
2. Kibana 닫기
3. 다운로드한 플러그인search-guard-kibana-plugin-6.6.1-18.4.zip을 Kibana의 설치 디렉터리에 업로드하고 다음 명령을 실행하여 플러그인을 설치합니다bin/kibana-plugin install file:////usr/local/kibana-6.6.1-linux-x86_64/search-guard-kibana-plugin-6.6.1-18.4.zip
다음과 같은 정보를 제시하면 설치가 성공했음을 나타냅니다.Attempting to transfer from file:////usr/local/kibana-6.6.1-linux-x86_64/search-guard-kibana-plugin-6.6.1-18.4.zip
Transferring 1046761 bytes....................
Transfer complete
Retrieving metadata from plugin archive
Extracting plugin archive
Extraction complete
Optimizing and caching browser bundles...
Plugin installation complete
Disable X-Pack Security
kibana 설치 디렉터리에 있는config/kibana.yml 파일에서 수정 설정은 다음과 같습니다.xpack.security.enabled: false
Configuring the Kibana server user
kibana 설치 디렉터리에 있는config/kibana.yml 파일에서 수정 설정은 다음과 같습니다.elasticsearch.username: "kibanaserver"
elasticsearch.password: "kibanaserver"
Setting up SSL/TLS
Elasticsearch REST layer에서 TLS를 열었기 때문에 키바나가 Elasticsearch에 접근하는 프로토콜은 http에서 https로 바뀌어야 합니다. config/kibana에서.yml 파일에서 수정 설정은 다음과 같습니다.elasticsearch.hosts: ["https://ip:9200"]
Configuring the Root CA
두 가지 설정이 있습니다. 하나는 인증서 검증을 닫는 것입니다. config/kibana에서.yml 파일에서 수정 설정은 다음과 같습니다.elasticsearch.ssl.verificationMode: none
둘째, 루트 CA를 제공합니다, config/kibana에서.yml 파일에서 수정 설정은 다음과 같습니다.elasticsearch.ssl.certificateAuthorities: "/path/to/your/root-ca.pem"
elasticsearch.ssl.verificationMode: certificate
그리고 키바나를 시작합니다.
Config logstash
참조:https://docs.search-guard.com/6.x-24/elasticsearch-logstash-search-guard
Check permissions for the logstash user
Search Guard secured cluster에서 logstash user를 기본적으로 설정합니다. Search Guard에 logstash 사용자가 포함되어 있기 때문에 여기서 따로 설정하지 않습니다./plugins/search-guard-6/sgconfig/sg_roles.yml 파일에서 sg_ 보기logstash 사용자의 권한은 다음과 같습니다.# For logstash and beats
sg_logstash:
cluster:
- CLUSTER_MONITOR
- CLUSTER_COMPOSITE_OPS
- indices:admin/template/get
- indices:admin/template/put
indices:
'logstash-*':
'*':
- CRUD
- CREATE_INDEX
'*beat*':
'*':
- CRUD
- CREATE_INDEX
관리자 계정으로 키바나에 로그인하여 Search Guard 메뉴에 들어가 Permissions and Roles 섹션의 Search Guard Roles에서 볼 수도 있습니다.
set up a logstash user
logstash 사용자를logstash의 프로필logstash에 설정합니다.conf에서elasticsearch 출력 부분은 구체적으로 다음과 같습니다.output {
elasticsearch {
user => logstash
password => logstash
...
}
}
Setting up TLS/SSL
앞에서 ES에서 REST 층을 시작하는 TLS를 설정했기 때문에 logstash를 설정하여 https를 사용하여elasticsearch와 통신하고 루트 인증서를 logstash-6.4.2/config 디렉터리에 복사하고 logstash의 프로필 logstash를 설정해야 합니다.conf에서elasticsearch 출력 부분 설정은 다음과 같습니다. ssl => true
ssl_certificate_verification => false
cacert => "/usr/local/logstash-6.4.2/config/root-ca.pem"
index => "logstash-rs1_26_mongodlog"
주의: 사용자 정의 색인 이름이라면, 색인 이름은'logstash-*'시작 또는'beat'와 일치해야 합니다. 그렇지 않으면logstash 사용자는 권한이 없습니다.그리고logstash를 다시 시작합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Elasticsearch의 중첩 조회 소개 및 실례
업무상 특정한 유사한 상품을 하나의 관련 그룹으로 집합시켜야 한다.
특정한 상품의 특징에 따라 자신이 있는 관련 그룹을 조회할 수 있도록 지원해야 한다.es의 저장 구조는 다음과 같다.
만약memberGoods가 일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
cd /usr/local/hadoop/elasticsearch/plugins/search-guard-6/tools
chmod u+x sgadmin.sh // sgadmin.sh
./sgadmin.sh -icl -nhnv -h es1 --enable-shard-allocation -cacert ../../../config/root-ca.pem -cert ../../../config/kirk.pem -key ../../../config/kirk.key -keypass zNbkgrtwctow
참조:https://docs.search-guard.com/latest/sgadmin
Search Guard의 설정 (users,roles,permissions 포함) 은 모두 ES 그룹에 저장된 index입니다. 이렇게 하면 설정을 수정한 후에 바로 적용됩니다. 그룹을 다시 시작하지 않아도 됩니다.Search Guard의 설정 정보는 sgadmin 도구를 통해 ES의 한 index에 불러와야 하기 때문에 (기본적으로 이 index는 존재하지 않습니다.) sgadmin은 주로 index와 설정 인증과 권한 수여 방식을 초기화하는 데 사용됩니다.
Change the permissions on that script and give it execution rights
chmod +x plugins/search-guard-7/tools/sgadmin.sh
다음 명령을 실행하여 sgadmin을 볼 수 있음을 알립니다.sh 도구의 모든 명령줄 옵션
./sgadmin.sh
Using sgadmin with PEM certificates
ES 클러스터의 모든 노드(es1 노드의 경우)에서 다음 명령을 실행합니다.
./sgadmin.sh -h es1 -cd ../sgconfig/ -icl -nhnv -cacert ../../../config/root-ca.pem -cert ../../../config/kirk.pem -key ../../../config/kirk.key -keypass zNbkgrtwctow
다음과 같은 알림 정보를 보면 그룹 초기화 성공 증명
Search Guard Admin v6
Will connect to hadoopSvr3:9300 ... done
Elasticsearch Version: 6.6.1
Search Guard Version: 6.6.1-24.3
Connected as CN=kirk.wxtomas.com,OU=Ops,O=wxtomas Com\, Inc.,DC=wxtomas,DC=com
Contacting elasticsearch cluster 'elasticsearch' and wait for YELLOW clusterstate ...
Clustername: ES-cluster
Clusterstate: GREEN
Number of nodes: 2
Number of data nodes: 2
searchguard index does not exists, attempt to create it ... done (0-all replicas)
Populate config from /usr/local/elasticsearch-6.6.1/plugins/search-guard-6/sgconfig
Will update 'sg/config' with ../sgconfig/sg_config.yml
SUCC: Configuration for 'config' created or updated
Will update 'sg/roles' with ../sgconfig/sg_roles.yml
SUCC: Configuration for 'roles' created or updated
Will update 'sg/rolesmapping' with ../sgconfig/sg_roles_mapping.yml
SUCC: Configuration for 'rolesmapping' created or updated
Will update 'sg/internalusers' with ../sgconfig/sg_internal_users.yml
SUCC: Configuration for 'internalusers' created or updated
Will update 'sg/actiongroups' with ../sgconfig/sg_action_groups.yml
SUCC: Configuration for 'actiongroups' created or updated
Done with success
Test the installation
visiting https://es1:9200
사용자 이름과 암호를 입력해야 한다는 메시지가 나타나면 admin/admin 을 입력합니다.
Display information about the currently logged in user
visiting https://es1:9200/_searchguard/authinfo?pretty
Search Guard Health Check
Search Guard가 제대로 설치되어 있고 정상적으로 실행 중인지 확인하기 위해 Search Guard의 건강 상태를 확인하기 위해 브라우저 주소 표시줄에 아래 주소를 입력하십시오 https://:9200/_searchguard/health 출력 결과는 다음과 같습니다.{"message":null,"mode":"strict","status":"UP"}
Search Guard가 정상적으로 작동하고 있음을 나타냅니다.
Accessing data Check
curl -u admin:admin -k -XGET 'https://:9200/_cat?pretty'
이로써 Search Guard 인증은 기본적으로 완성되었습니다. 다음은 계정 권한의 창설과 관리에 관하여 Kibana에서 직접 조작할 수 있습니다.
Config Kibana
참조:https://docs.search-guard.com/6.x-24/kibana-plugin-installation
Installing the Search Guard Plugin
1. Kibana 버전과 일치하는 Search Guard Kibana Plugin 다운로드 주소:https://oss.sonatype.org/service/local/repositories/releases/content/com/floragunn/search-guard-kibana-plugin/6.6.1-18.4/search-guard-kibana-plugin-6.6.1-18.4.zip
2. Kibana 닫기
3. 다운로드한 플러그인search-guard-kibana-plugin-6.6.1-18.4.zip을 Kibana의 설치 디렉터리에 업로드하고 다음 명령을 실행하여 플러그인을 설치합니다bin/kibana-plugin install file:////usr/local/kibana-6.6.1-linux-x86_64/search-guard-kibana-plugin-6.6.1-18.4.zip
다음과 같은 정보를 제시하면 설치가 성공했음을 나타냅니다.Attempting to transfer from file:////usr/local/kibana-6.6.1-linux-x86_64/search-guard-kibana-plugin-6.6.1-18.4.zip
Transferring 1046761 bytes....................
Transfer complete
Retrieving metadata from plugin archive
Extracting plugin archive
Extraction complete
Optimizing and caching browser bundles...
Plugin installation complete
Disable X-Pack Security
kibana 설치 디렉터리에 있는config/kibana.yml 파일에서 수정 설정은 다음과 같습니다.xpack.security.enabled: false
Configuring the Kibana server user
kibana 설치 디렉터리에 있는config/kibana.yml 파일에서 수정 설정은 다음과 같습니다.elasticsearch.username: "kibanaserver"
elasticsearch.password: "kibanaserver"
Setting up SSL/TLS
Elasticsearch REST layer에서 TLS를 열었기 때문에 키바나가 Elasticsearch에 접근하는 프로토콜은 http에서 https로 바뀌어야 합니다. config/kibana에서.yml 파일에서 수정 설정은 다음과 같습니다.elasticsearch.hosts: ["https://ip:9200"]
Configuring the Root CA
두 가지 설정이 있습니다. 하나는 인증서 검증을 닫는 것입니다. config/kibana에서.yml 파일에서 수정 설정은 다음과 같습니다.elasticsearch.ssl.verificationMode: none
둘째, 루트 CA를 제공합니다, config/kibana에서.yml 파일에서 수정 설정은 다음과 같습니다.elasticsearch.ssl.certificateAuthorities: "/path/to/your/root-ca.pem"
elasticsearch.ssl.verificationMode: certificate
그리고 키바나를 시작합니다.
Config logstash
참조:https://docs.search-guard.com/6.x-24/elasticsearch-logstash-search-guard
Check permissions for the logstash user
Search Guard secured cluster에서 logstash user를 기본적으로 설정합니다. Search Guard에 logstash 사용자가 포함되어 있기 때문에 여기서 따로 설정하지 않습니다./plugins/search-guard-6/sgconfig/sg_roles.yml 파일에서 sg_ 보기logstash 사용자의 권한은 다음과 같습니다.# For logstash and beats
sg_logstash:
cluster:
- CLUSTER_MONITOR
- CLUSTER_COMPOSITE_OPS
- indices:admin/template/get
- indices:admin/template/put
indices:
'logstash-*':
'*':
- CRUD
- CREATE_INDEX
'*beat*':
'*':
- CRUD
- CREATE_INDEX
관리자 계정으로 키바나에 로그인하여 Search Guard 메뉴에 들어가 Permissions and Roles 섹션의 Search Guard Roles에서 볼 수도 있습니다.
set up a logstash user
logstash 사용자를logstash의 프로필logstash에 설정합니다.conf에서elasticsearch 출력 부분은 구체적으로 다음과 같습니다.output {
elasticsearch {
user => logstash
password => logstash
...
}
}
Setting up TLS/SSL
앞에서 ES에서 REST 층을 시작하는 TLS를 설정했기 때문에 logstash를 설정하여 https를 사용하여elasticsearch와 통신하고 루트 인증서를 logstash-6.4.2/config 디렉터리에 복사하고 logstash의 프로필 logstash를 설정해야 합니다.conf에서elasticsearch 출력 부분 설정은 다음과 같습니다. ssl => true
ssl_certificate_verification => false
cacert => "/usr/local/logstash-6.4.2/config/root-ca.pem"
index => "logstash-rs1_26_mongodlog"
주의: 사용자 정의 색인 이름이라면, 색인 이름은'logstash-*'시작 또는'beat'와 일치해야 합니다. 그렇지 않으면logstash 사용자는 권한이 없습니다.그리고logstash를 다시 시작합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Elasticsearch의 중첩 조회 소개 및 실례
업무상 특정한 유사한 상품을 하나의 관련 그룹으로 집합시켜야 한다.
특정한 상품의 특징에 따라 자신이 있는 관련 그룹을 조회할 수 있도록 지원해야 한다.es의 저장 구조는 다음과 같다.
만약memberGoods가 일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
{"message":null,"mode":"strict","status":"UP"}
curl -u admin:admin -k -XGET 'https://:9200/_cat?pretty'
참조:https://docs.search-guard.com/6.x-24/kibana-plugin-installation
Installing the Search Guard Plugin
1. Kibana 버전과 일치하는 Search Guard Kibana Plugin 다운로드 주소:https://oss.sonatype.org/service/local/repositories/releases/content/com/floragunn/search-guard-kibana-plugin/6.6.1-18.4/search-guard-kibana-plugin-6.6.1-18.4.zip
2. Kibana 닫기
3. 다운로드한 플러그인search-guard-kibana-plugin-6.6.1-18.4.zip을 Kibana의 설치 디렉터리에 업로드하고 다음 명령을 실행하여 플러그인을 설치합니다
bin/kibana-plugin install file:////usr/local/kibana-6.6.1-linux-x86_64/search-guard-kibana-plugin-6.6.1-18.4.zip
다음과 같은 정보를 제시하면 설치가 성공했음을 나타냅니다.
Attempting to transfer from file:////usr/local/kibana-6.6.1-linux-x86_64/search-guard-kibana-plugin-6.6.1-18.4.zip
Transferring 1046761 bytes....................
Transfer complete
Retrieving metadata from plugin archive
Extracting plugin archive
Extraction complete
Optimizing and caching browser bundles...
Plugin installation complete
Disable X-Pack Security
kibana 설치 디렉터리에 있는config/kibana.yml 파일에서 수정 설정은 다음과 같습니다.
xpack.security.enabled: false
Configuring the Kibana server user
kibana 설치 디렉터리에 있는config/kibana.yml 파일에서 수정 설정은 다음과 같습니다.
elasticsearch.username: "kibanaserver"
elasticsearch.password: "kibanaserver"
Setting up SSL/TLS
Elasticsearch REST layer에서 TLS를 열었기 때문에 키바나가 Elasticsearch에 접근하는 프로토콜은 http에서 https로 바뀌어야 합니다. config/kibana에서.yml 파일에서 수정 설정은 다음과 같습니다.
elasticsearch.hosts: ["https://ip:9200"]
Configuring the Root CA
두 가지 설정이 있습니다. 하나는 인증서 검증을 닫는 것입니다. config/kibana에서.yml 파일에서 수정 설정은 다음과 같습니다.
elasticsearch.ssl.verificationMode: none
둘째, 루트 CA를 제공합니다, config/kibana에서.yml 파일에서 수정 설정은 다음과 같습니다.
elasticsearch.ssl.certificateAuthorities: "/path/to/your/root-ca.pem"
elasticsearch.ssl.verificationMode: certificate
그리고 키바나를 시작합니다.
Config logstash
참조:https://docs.search-guard.com/6.x-24/elasticsearch-logstash-search-guard
Check permissions for the logstash user
Search Guard secured cluster에서 logstash user를 기본적으로 설정합니다. Search Guard에 logstash 사용자가 포함되어 있기 때문에 여기서 따로 설정하지 않습니다./plugins/search-guard-6/sgconfig/sg_roles.yml 파일에서 sg_ 보기logstash 사용자의 권한은 다음과 같습니다.# For logstash and beats
sg_logstash:
cluster:
- CLUSTER_MONITOR
- CLUSTER_COMPOSITE_OPS
- indices:admin/template/get
- indices:admin/template/put
indices:
'logstash-*':
'*':
- CRUD
- CREATE_INDEX
'*beat*':
'*':
- CRUD
- CREATE_INDEX
관리자 계정으로 키바나에 로그인하여 Search Guard 메뉴에 들어가 Permissions and Roles 섹션의 Search Guard Roles에서 볼 수도 있습니다.
set up a logstash user
logstash 사용자를logstash의 프로필logstash에 설정합니다.conf에서elasticsearch 출력 부분은 구체적으로 다음과 같습니다.output {
elasticsearch {
user => logstash
password => logstash
...
}
}
Setting up TLS/SSL
앞에서 ES에서 REST 층을 시작하는 TLS를 설정했기 때문에 logstash를 설정하여 https를 사용하여elasticsearch와 통신하고 루트 인증서를 logstash-6.4.2/config 디렉터리에 복사하고 logstash의 프로필 logstash를 설정해야 합니다.conf에서elasticsearch 출력 부분 설정은 다음과 같습니다. ssl => true
ssl_certificate_verification => false
cacert => "/usr/local/logstash-6.4.2/config/root-ca.pem"
index => "logstash-rs1_26_mongodlog"
주의: 사용자 정의 색인 이름이라면, 색인 이름은'logstash-*'시작 또는'beat'와 일치해야 합니다. 그렇지 않으면logstash 사용자는 권한이 없습니다.그리고logstash를 다시 시작합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Elasticsearch의 중첩 조회 소개 및 실례
업무상 특정한 유사한 상품을 하나의 관련 그룹으로 집합시켜야 한다.
특정한 상품의 특징에 따라 자신이 있는 관련 그룹을 조회할 수 있도록 지원해야 한다.es의 저장 구조는 다음과 같다.
만약memberGoods가 일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
# For logstash and beats
sg_logstash:
cluster:
- CLUSTER_MONITOR
- CLUSTER_COMPOSITE_OPS
- indices:admin/template/get
- indices:admin/template/put
indices:
'logstash-*':
'*':
- CRUD
- CREATE_INDEX
'*beat*':
'*':
- CRUD
- CREATE_INDEX
output {
elasticsearch {
user => logstash
password => logstash
...
}
}
ssl => true
ssl_certificate_verification => false
cacert => "/usr/local/logstash-6.4.2/config/root-ca.pem"
index => "logstash-rs1_26_mongodlog"
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Elasticsearch의 중첩 조회 소개 및 실례업무상 특정한 유사한 상품을 하나의 관련 그룹으로 집합시켜야 한다. 특정한 상품의 특징에 따라 자신이 있는 관련 그룹을 조회할 수 있도록 지원해야 한다.es의 저장 구조는 다음과 같다. 만약memberGoods가 일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.