Elasticsearch の無償版でレルム認証を試す

# はじめに

Elasticsearch の無償版でセキュリティ機能をアップデートするというリリースがありました
https://www.elastic.co/jp/blog/security-for-elasticsearch-is-now-free?blade=tw&hulk=social
今まで、ずっと無償版を使ってきて、公式の認証機能とか使ったことがないので、使ってみたいと思います

# 環境準備

## 1. DockerImageをPull する

まずはElastic社公式から最新のDockerImageを落とします
7.1.0以降対応とのことなので、それ以降ですね
https://www.docker.elastic.co/#
![スクリーンショット 2019-05-22 10.50.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11006/6026b594-8cd2-7439-f3d0-3208582bcc2c.png)

なんでロゴが表示されないんだろう。。。

## 2. docker-compose を作る

まずは基本的な状態の復習から

```yml:docker-compose.yml
version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0
    container_name: es01
    environment:
      - node.name=es01
      - discovery.type=single-node
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    ports:
      - 9200:9200
      - 9300:9300
```

https://www.elastic.co/jp/blog/getting-started-with-security
こちらの参考にセキュリティ機能を *ON* します

```yml:docker-compose.yml
version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0
    container_name: es01
    environment:
      - node.name=es01
      - discovery.type=single-node
      - xpack.security.enabled=true
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    ports:
      - 9200:9200
      - 9300:9300
```

この状態でElasticsearchを開くと認証画面が出てくる！

![スクリーンショット 2019-05-22 10.54.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11006/0fad38b0-cec4-7260-1a55-d7571fd0a3b0.png)

さて、問題はユーザー名とパスワード

これは一旦コマンドで追加しようと思います
追加は `elasticsearch-users` ってコマンドで
ヘルプはこちら -> https://www.elastic.co/guide/en/elasticsearch/reference/current/users-command.html
roles の一覧が知りたければこちら -> https://www.elastic.co/guide/en/elastic-stack-overview/current/built-in-roles.html

とりあえず今回は `superuser` で追加

```bash

$ docker exec -i -t es01 bash
[root@85348ffa1c22 elasticsearch]# ls
LICENSE.txt  NOTICE.txt  README.textile  bin  config  data  jdk  lib  logs  modules  plugins
[root@85348ffa1c22 elasticsearch]# ./bin/elasticsearch-users list
No users found
[root@85348ffa1c22 elasticsearch]# ./bin/elasticsearch-users useradd gessy0129 -p elasticsearchpassword -r superuser
[root@85348ffa1c22 elasticsearch]# ./bin/elasticsearch-users list
gessy0129         : superuser
```

無事に認証突破できました！

![スクリーンショット 2019-05-22 11.17.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11006/65581050-36ad-1793-63e0-406834577c9b.png)

kibana も立ち上げようと思いますが、その前に kibana用のパスワードを設定

```bash
# bin/elasticsearch-setup-passwords auto
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
The passwords will be randomly generated and printed to the console.
Please confirm that you would like to continue [y/N]y


Changed password for user apm_system
PASSWORD apm_system = 6OwQOziAuOwP0wJWzh0r

Changed password for user kibana
PASSWORD kibana = 9t1W2rbdw37MDAdslnF3

Changed password for user logstash_system
PASSWORD logstash_system = qthwfaKCqOIBKk9ChBfX

Changed password for user beats_system
PASSWORD beats_system = LaObvuySUIg8Pqhg0gsh

Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = fizpyUp3ESkgWuReVmvj

Changed password for user elastic
PASSWORD elastic = AJg2zp3UF4VRZiAmBpes
```

とりあえず一旦ここまで！

__続編__

https://qiita.com/gessy0129/items/9396d2d0179bb27998f3