RedPlug's Tory

Redplug입니다.

 

Elasticsearch 사용 시 LDAP연동을 통한 권한 관리를 하기 위한 LDAP 연동 테스트 진행

 

Open Distro for Elasticsearch는 하기 4가지 케이스에 사용된다고 합니다.

- Log analytics

- Real-time application monitoring

- Clickstream analytics

- Search backend

 

설치 참고한 가이드

https://opendistro.github.io/for-elasticsearch-docs/docs/install/rpm/

 

OS는 CentOS7입니다.

 

 

 

1. repository 추가

cd /etc/yum.repos.d/

sudo curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o opendistroforelasticsearch-artifacts.repo

 

 

2 JAVA 설치 (1.8설치)

sudo yum install java-1.8.0-openjdk-devel

 

3. 사용 가능한 Open Distro for Elasticsearch 버젼 확인

sudo yum list opendistroforelasticsearch --showduplicates

 

4. Open Distro for Elasticsearch 설치 진행

   설치 시점엔 1.1.0-1로 해당 버젼 설치

   Elasticsearch + Open Distor for Elasticsearch 같이 설치 됩니다. (..이걸 몰라서 좀 삽질했습니다.)
   이미 Elasticsearch가 설치 되있을 경우 Standalone Elasticsearch Plugin Install 사용하여 설치 진행

sudo yum install opendistroforelasticsearch-1.1.0-1

 

5. 심볼릭 링크 생성 (JAVA 8일경우)

sudo ln -s /usr/lib/jvm/java-1.8.0/lib/tools.jar /usr/share/elasticsearch/lib/

 

6. Elasticsearch 서비스 시작

sudo systemctl start elasticsearch.service

 

7. Elasticsearch 테스트

curl -XGET https://localhost:9200 -u admin:admin --insecure
curl -XGET https://localhost:9200/_cat/nodes?v -u admin:admin --insecure
curl -XGET https://localhost:9200/_cat/plugins?v -u admin:admin --insecure

하기와 같이 노출되면 Running중
[redplug@localhost ~]$ curl -XGET https://localhost:9200 -u admin:admin --insecure
{
  "name" : "localhost.localdomain",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "52rlltm7QPyrLkj0vjfhMQ",
  "version" : {
    "number" : "7.1.1",
    "build_flavor" : "oss",
    "build_type" : "rpm",
    "build_hash" : "7a013de",
    "build_date" : "2019-05-23T14:04:00.380842Z",
    "build_snapshot" : false,
    "lucene_version" : "8.0.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

 

8. LDAP 연동

https://opendistro.github.io/for-elasticsearch-docs/docs/security-configuration/ldap/

plugins/opendistro_security/securityconfig/config.yml 파일 수정

기본주소

/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/config.yml

 

config 파일은 authc부분과 authz로 부분으로 이루어져 있으며,

authc는 인증, authz는 권한 관련된 사항을 정의 합니다.

인증 테스트 이기 때문에 authc 부분만 설정합니다.

 

샘플파일

authc:
      ldap:
        description: "Authenticate via LDAP or Active Directory"
        http_enabled: true 
        transport_enabled: true
        order: 5
        http_authenticator:
          type: "basic"
          challenge: true
        authentication_backend:
          # LDAP authentication backend (authenticate users against a LDAP or Active Directory)
          type: "ldap"
          config:
            # enable ldaps
            enable_ssl: false
            # enable start tls, enable_ssl should be false
            enable_start_tls: false
            # send client certificate
            enable_ssl_client_auth: false
            # verify ldap hostname
            verify_hostnames: true
            hosts:
            - "ad01.tmoncorp.com:389"
            bind_dn: CN=redplug,OU=REDPLUG,DC=REDPLUG,DC=com
            password: "패스워드"
            userbase: "OU=Users,OU=REDPLUG,DC=REDPLUG,DC=com"
            # Filter to search for users (currently in the whole subtree beneath userbase)
            # {0} is substituted with the username
            usersearch: "(sAMAccountName={0})"
            # Use this attribute from the user as username (if not set then DN is used)
            username_attribute: "cn"

설정 후 Security 적용

https://opendistro.github.io/for-elasticsearch-docs/docs/security-configuration/security-admin/

sudo /usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh -cacert /etc/elasticsearch/root-ca.pem -cert /etc/elasticsearch/kirk.pem -key /etc/elasticsearch/kirk-key.pem -cd /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/

 

로그인 시도 화면

로그인 성공 확인