環境
以下を参考に環境構築を行う。
【Elasticsearch】DockerでElasticsearchを使えるようにする
ユーザーについて
自身で作成するユーザーの他に、ElasticStackではデプロイメント作成時にデフォルトで(既存で作成されている)ユーザーがいくつか存在します。
Built-in usersに詳細は纏められています。
それぞれの用途について別の機会に纏めます。
curlでのユーザー追加
下記のコマンドを利用してjacknich
という名前のユーザーを作成します。
curl -u 'user:password' -X POST "localhost:9200/_security/user/jacknich?pretty" -H 'Content-Type: application/json' -d'
{
"password" : "l0ng-r4nd0m-p@ssw0rd",
"roles" : [ "admin", "other_role1" ],
"full_name" : "Jack Nicholson",
"email" : "jacknich@example.com",
"metadata" : {
"intelligence" : 7
}
}
'
{
"created" : true
}
確認方法は下記のコマンドを実行します。
?pretty
はレスポンスを見やすく整形するためにつけてます。
curl -u 'user:password' GET 'localhost:9200/_security/user/jacknich?pretty'
curl: (6) Could not resolve host: GET
{
"jacknich" : {
"username" : "jacknich",
"roles" : [
"admin",
"other_role1"
],
"full_name" : "Jack Nicholson",
"email" : "jacknich@example.com",
"metadata" : {
"intelligence" : 7
},
"enabled" : true
}
}
Kibanaでのユーザー追加(Kibana→Dev Tools→Console)
KibanaのConsoleにて下記を実行する。
POST /_security/user/jacknich
{
"password" : "l0ng-r4nd0m-p@ssw0rd",
"roles" : [ "admin", "other_role1" ],
"full_name" : "Jack Nicholson",
"email" : "jacknich@example.com",
"metadata" : {
"intelligence" : 7
}
}
実行して問題なければ下記のようなレスポンスが返ってくる
{
"created": true
}
確認方法は下記を実行する
GET /_security/user/jacknich
下記のようなレスポンスが返ってくる
{
"jacknich": {
"username": "jacknich",
"roles": [
"admin",
"other_role1"
],
"full_name": "Jack Nicholson",
"email": "jacknich@example.com",
"metadata": {
"intelligence": 7
},
"enabled": true
}
}
【おまけ】更新する場合
curl、Consoleどちらも同じ対応となります。
具体的には、同じコマンドで更新箇所だけを変更して叩きます。
例えば下記のユーザーを作ります。
POST /_security/user/jacknich
{
"password" : "l0ng-r4nd0m-p@ssw0rd",
"roles" : [ "admin", "other_role1" ],
"full_name" : "Jack Nicholson",
"email" : "jacknich@example.com",
"metadata" : {
"intelligence" : 7
}
}
やっぱりother_role1
の権限は不要だとなった場合には下記を実行する
POST /_security/user/jacknich
{
"password" : "l0ng-r4nd0m-p@ssw0rd",
"roles" : [ "admin" ],
"full_name" : "Jack Nicholson",
"email" : "jacknich@example.com",
"metadata" : {
"intelligence" : 7
}
}
レスポンスにother_role1
が無いことを確認
{
"jacknich": {
"username": "jacknich",
"roles": [
"admin"
],
"full_name": "Jack Nicholson",
"email": "jacknich@example.com",
"metadata": {
"intelligence": 7
},
"enabled": true
}
}
参考
Create or update users API
Get users API
Enable users API
Disable users API