Elasticsearch ServiceのKibanaにログイン機能を追加するサンプルを試してみた
Elasticsearch ServiceのKibanaにはCognito等を利用して簡単に認証機能を追加できます。
詳しくはこちらの弊社ブログで紹介しているのでこちらを御覧ください。
この、KibanaにCognitoの認証機能を追加する環境を簡単に構築できるサンプルが aws-samples で公開されていたので試してみました。
- aws-samples/amazon-elasticsearch-service-with-cognito: Launch Amazon Elasticsearch Service with Amazon Cognito User Pools.
- Launch Amazon Elasticsearch Service with Amazon Cognito User Pools | AWS Field Notes
構成図
このサンプルではこんな感じの環境を構築します。
CognitoユーザープールとCognito IDプールを作成してElasticsearch Servicと認証連携し、Cognito IDプールの認証されたロールとしてKibanaへのアクセス権限をもつIAM Roleを設定することで、CognitoユーザーでログインしたユーザーがKibanaへアクセスできる環境を構築します。
構築してみた
構築自体はとても簡単です。次のGitHubリポジトリの Launch Stack をクリックするだけでほとんどの環境を自動で作ってくれます。
このまま Deploy ボタンを押すと、Lambdaの画面に飛びます。
適当なapplicationPrefixを入力し、IAMロールを作成することを承認して、デプロイします。
そうすると、後は十数分ほどでCloudFormationが環境を構築してくれます。
Kibanaにログインしてみる
CloudFormationの構築が終わったら、KibanaにログインするためのCognitoユーザーのユーザーを作成します。
Cognitoユーザープールの画面を見ると、新しいユーザープールができているのでここにユーザーを作成します。
ユーザーの作成は、次のとおりに入力して新しいユーザーを作成します。
- ユーザー名:E-mailアドレスを入力
- この新規ユーザーに素養帯を送信しますか?:オフ
- 仮パスワード:適当に入力
- 電話番号:(空白)
- 電話番号を検証済みにしますか?:オフ
- Eメール:E-mailアドレスを入力
- Eメールを検証済みにしますか?:オン
ユーザーが作成できたら、Kibanaにアクセスしてみます。 Elasticsearch Serviceのダッシュボード画面を開くと新しいドメインができているのでそのドメインの概要を開きます。 KibanaのURLが記載されているので、そのURLへアクセスします。
Cognitoのログイン画面が表示されるので、先ほど作成したユーザーのEmailとパスワードでログインします。
初回ログインのためパスワード変更画面が表示されます。 新しいパスワードを入力してSendをクリックします。
ログインが完了すると、Kibanaの画面が表示されました!
構築した環境を削除する
CloudFormationで構築されているため、CloudFormationのスタックを削除することで全ての環境を削除できます。
終わりに
aws-samplesを参考に、Elasticsearch ServiceのKibanaのCognitoログインを試してみました。
CloudFormationで簡単に構築できるので、Kibanaに認証機能をつけて使いたい方が最初にさわってみる教材として、とても役に立つと思います。