ShieldによるAD連携


#1

ご教示お願い致します。

Shieldの認証でAD連携を試みているのですが、一通り設定した後Kibanaにアクセスすると「plugin:elasticsearch Authentication Exception」と出てきます。

KibanaとElasticsearchがうまく連携できてないとは思うのですが・・・

以下、各設定ファイル名とその内容でございます。

----elasticsearch.yml----
shield:
authc:
realms:
active_directory:
type: active_directory
order: 0
domain_name: example.local
url: ldaps://***.***.***.***:389
unmapped_groups_as_roles: true

--------kibana.yml--------
elasticsearch.username: "kibana4_server"
elasticsearch.password: "hoge"

--------role_mapping.yml--------
#roles.ymlで定義したadminユーザ
admin:

  • "cn=taro.tanaka,dc=example,dc=local"

#roles.ymlで定義した読み取り用ユーザ
readuser:

  • "cn=ziro.suzuki,dc=example,dc=local"
  • "cn=tosio.satou,dc=example,dc=local"

#ElasticとKibanaを連携する用のアカウント
kibana4_server:

  • "cn=Administrator,cn=KibanaServer,dc=example,dc=local"

------------roles.yml------------

adminロール

admin:
cluster:
- all
indices:
- names: '*'
privileges:
- all

read only のユーザロール

readuser:
indices:
- names: 'active-'
privileges:
- read
- names: '.kibana
'
privileges:
- manage
- read

The required permissions for the kibana 4 server

kibana4_server:
cluster:
- monitor
indices:
- names: '.kibana'
privileges:
- all

以下、参考ドキュメント
【Shield [2.3] > User Authentication > Active Directory User Authentication】
https://www.elastic.co/guide/en/shield/current/active-directory-realm.html

【Shield [2.3] > Configuring Clients and Integrations > Using Kibana with Shield】
https://www.elastic.co/guide/en/shield/current/kibana.html

今回のエラーとは関係ないと思いますが一応ELKサーバとADはPing疎通OKです。

よろしくお願い致します。


(Jun Ohtani) #2

まずは、Kibanaからではなく、Elasticsearchで連携できているかをcurlコマンドなどで確認してはどうでしょうか?

参考:
https://www.elastic.co/guide/en/shield/current/enable-basic-auth.html


#3

改修点
・AD側でkibana4_serverというsAMAccount (ユーザ) を作成、パスワードはhoge
kibana.ymlの内容でelasticsearch.name: kibana4_server
elasticsearch.password: hoge に変更
・elasticsearch.ymlの内容でunmapped_groups_as_roles: trueをコメントアウト
・role.mapping.ymlの内容でkibana4_server
- "cn=kibana4_server,dc=example,dc=local" に変更

以下、確認内容です

[root@elk ~]# curl -u kibana4_server:hoge -XGET 'http://localhost:9200/'
{"error":{"root_cause":[{"type":"security_exception","reason":"unable to authenticate user [kibana4_server] for REST request [/]","header":{"WWW-Authenticate":"Basic realm="shield""}}],"type":"security_exception","reason":"unable to authenticate user [kibana4_server] for REST request [/]","header":{"WWW-Authenticate":"Basic realm="shield""}},"status":401}

ユーザを認証する事ができないという事は、ElasticSearchとADが連携できていなそうですね。
elasticsearch.ymlのshield: 部分がおかしいのでしょうか・・・?


(Jun Ohtani) #4

Elasticsearchのログには何か出てないでしょうか?


#5

elasticsearch.logの内容

[2016-05-23 19:45:23,573][INFO ][gateway ] [Lupa] recovered [3] indices into cluster_state
[2016-05-23 19:45:24,484][INFO ][cluster.routing.allocation] [Lupa] Cluster health status changed from [RED] to [YELLOW] (reason: [shards started [[.kibana][0]] ...]).

ブラウザでIPを入力しKibanaを開くと以下エラー
[security_exception] action [cluster:monitor/nodes/info] is unauthorized for user [<ユーザ名>]

shieldを使う場合、kibanaへのアクセスをhttpsにしないとダメでしたっけ。


(Jun Ohtani) #6

いえ、そんなことはありません。
curlでアクセスした時にログは出てないでしょうか?
ただ、curlコマンドのレスポンスを見ると、認証に失敗しているので、ADでの認証に失敗しているのではないかと。


#7

SecurityExceptionでunable to authenticateが出ます。ADと上手く連携できていなそうです。

各種ymlとconfigがぐちゃぐちゃしているのでキレイに整理してみます。

shieldを一旦止める場合はどのような作業が必要か教えて頂けますでしょうか。


(Jun Ohtani) #8

url: ldaps://***...***:389

に関してですが、ドキュメントでは、ldapとなっていますが、そこが間違っている可能性はないでしょうか?

If you don’t specify the URL, it defaults to ldap:<domain_name>:389.

あと、オフにする場合はAnonymousでのアクセスを設定したり、
一旦、アンインストールしていただいたり、くのが良いかと。

あと、設定ファイルやExceptionなどのログに関しては、全体(ログはExceptionの部分を全部とその前後)を提示していただかないと助言がしにくいです。
次回からは、ログを貼り付けたりしていただけますでしょうか?


(system) #9