LoginSignup
15
16

More than 5 years have passed since last update.

KibanaにCognito認証を追加する

Last updated at Posted at 2019-02-13

前提条件

※Amazon Elasticsearch Serviceの話です。
Elasticsearch バージョン 5.1 以降
今回はバージョン 6.3

概要

Amazon Elasticsearch ServiceでIP アドレスで制御だけでなくCognitoと連携することでユーザー認証・認可ができるのでセキュリティ対策やトラッキングなどに使えます。
今回は特に説明しませんがCognitoユーザープールでのSAMLやOpenID連携なども可能なようです。

Amazon Cognito のセットアップ

ユーザープールの作成

AWSのマネジメントコンソールからAmazon Cognitoを検索します。
スクリーンショット 2019-01-23 15.19.40.png
[ユーザープールの管理]を選択します。
スクリーンショット 2019-01-23 15.11.55.png
右上の[ユーザープールを作成する]ボタンを選択します。

ユーザープールに名前を付けます。
スクリーンショット 2019-01-23 15.12.35.png
デフォルトを確認するを選択し、[プールの作成] を選択します。

ドメイン作成

ユーザープールを選択して詳細を表示し、[ドメイン名] を選択します。
ドメインのプレフィックスを適当に決めます。一意にする必要があります。
スクリーンショット 2019-01-23 15.46.31.png
[変更の保存]を選択します。

IDプール作成

左上のフェデレーティッドアイデンティティを選択します。
IDプール名を適当に入力し、認証されていないIDに対してアクセスを有効にするにチェックを入れ、作成します。
スクリーンショット 2019-01-23 16.02.42.png

IDプールで利用する IAM ロール作成画面に遷移するので[許可]を選択して作成します。
スクリーンショット 2019-01-23 16.03.20.png
- Cognito_Auth_Role: ログインユーザーが利用する IAM ロール
- Cognito_UnAuth_Role: 未ログインユーザーが利用する IAM ロール
がそれぞれ作成されます。

Kibana認証の有効化設定

Elasticsearchドメインの画面から、[クラスタの設定]を選択します。
スクリーンショット 2019-01-23 16.40.48.png
認証用にAmazon Cognitoを有効化のチェックボックスをオンにし、作成したCognitoユーザープールとIDプールをそれぞれ選択し、[送信]を選択します。

Kibana認証
スクリーンショット 2019-01-23 16.41.27.png
ドメインのステータスが処理中になるので、終了まで待ちます。
10分程度かかるかと思います。

ユーザーとグループを作成する

ユーザーの作成

Amazon Cognito コンソールへ移動し、[ユーザープールの管理] を選択します。kibana_access を選択します。ナビゲーションペインで、[ユーザーとグループ] を選択します。次に、[ユーザーの作成] を選択します。
スクリーンショット 2019-01-23 18.32.12.png
[ユーザー名]、[仮パスワード]、[E メール] を入力します。[電話番号を検証済みにしますか?] チェックボックスをオフにします。

スクリーンショット 2019-01-23 18.35.18.png
[ユーザーの作成] を選択します。[ユーザーとグループ] ページに戻ります。

グループの作成

[グループ] を選択し、次に、[グループの作成] を選択します。
スクリーンショット 2019-01-23 18.37.17.png

[名前] と [説明] を適当に入力します。[IAM ロール] を空白のままにし、[優先順位] を 0 にします。次に、[グループの作成] を選択します。
スクリーンショット 2019-01-23 18.37.46.png
これで一旦Kibana にサインインできるようになりますが、Kibana をすべてロードするには設定した許可が不十分なため、Auth_Role にアクセスを提供するために、ドメインのポリシーを変更します。Amazon ESコンソールまで移動し、自分のドメインを選択してから [アクセスポリシーの変更] を選択します。

想定したAuthのため、[プリンシパル] を ARN に変更します。

"Principal": {
    "AWS": "arn:aws:sts::<your account id>:assumed-role/Cognito_<your identity pool name>Auth_Role/CognitoIdentityCredentials"
} 

次に、[送信] を選択します。[ドメインステータス] が [アクティブ] になるまで待ちます。

Kibana の認証の動作確認

Kibana の URL へアクセスします。
スクリーンショット 2019-01-23 16.47.41.png
成功していればこのログイン画面が出るので、先ほど作成したユーザー名、パスワードでログインします。

初回のみパスワード変更画面が表示されるので、適当に入力して[Send]します。
スクリーンショット 2019-01-23 16.48.27.png

問題がなければ、Kibana のトップページが表示されます。また、[Logout]ボタンが追加されていることを確認してください。
スクリーンショット 2019-01-23 16.53.06.png

IAM ポリシーとロールを作成する

IAMポリシーの作成

IAM コンソールの [ポリシー] を選択し、[ポリシーの作成] を選択します。

[JSON] タブを選択し、内容を次のポリシーに置き換えます。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "es:ESHttp*"
      ],
      "Resource": "arn:aws:es:region:123456789012:domain/domain-name/*"
    }
  ]
}

Resourceのドメイン ARN は以下のように自分の ARN に置き換えてください。

⚠ドメ️イン ARN をコピーして貼り付けるときは、ポリシーの最後の “/*” まですべてコピーするか、追加してください。

[ポリシーの確認] を選択します。続くページでポリシーの名前と説明を適当に入力します。[ポリシーの作成] を選択します。
スクリーンショット 2019-01-23 17.26.39.png

IAMロールの作成

IAM コンソールで[ロール] を選択します。[ロールの作成] を選択します。[このロールを使用するサービスを選択] の下で、[EC2] を選択します[次のステップ: アクセス許可] を選択します。
スクリーンショット 2019-01-23 17.38.31.png
[Attach アクセス許可ポリシー] ページで、[フィルタ] ボックスに前で作成したポリシーの名前を入力し、チェックし、次に進みます。
スクリーンショット 2019-01-23 17.38.51.png
ロールの [名前] と [説明] を入力します。ポリシーが 追加されていることを確認し、問題がなければ[ロールの作成] を選択します。
スクリーンショット 2019-01-23 17.42.00.png

IAM コンソールで[ロール] を選択します。[フィルタ] ボックスで、ロールの名前を入力し、編集するロールを選択します。[信頼関係] タブを選択し、[信頼関係の編集] を選択します。
スクリーンショット 2019-01-23 17.42.29.png
[信頼関係の編集]、[ポリシードキュメント] の内容を置き換えます。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "cognito-identity.amazonaws.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity"
    }
  ]
}

[信頼ポリシーの更新] します。

Amazon Cognito ユーザーのグループにロールを接続する

[ユーザーとグループ] を選択します。[グループ] タブを選択し、作成したグループを選択します。
スクリーンショット 2019-01-23 19.41.27.png

上部のセクションで、✏アイ️コンを選択してグループを編集します。
前に作成した IAM ロールを選択します。
[グループの更新] を選択します。
スクリーンショット 2019-01-23 17.44.01.png

[ユーザーを追加する] を選択します。
スクリーンショット 2019-01-23 19.56.12.png

kibana_user の横の➕を選択して、グループにユーザーを追加します。
スクリーンショット 2019-01-23 17.44.29.png
最後に ID プールの設定をデフォルトの Cognito_<user_pool>Auth_RoleCognito_<user_pool>Unauth_Roleから、自分のユーザープールからロールとポリシーを使用するようにします。

ページの上部で ID プールを表示するために、[フェデレーティッドアイデンティティ] を選択します。編集したい ID プール を選択し、IDプールの編集をします。
スクリーンショット 2019-01-23 20.03.04.png

[認証プロバイダー] 設定を表示します。[認証されたロールの選択] の下で、ドロップダウンリストを開き、[トークンからロールを選択する] を選択します。
スクリーンショット 2019-01-23 17.47.02.png
Amazon Cognito では認証に自分のグループに繋いだロールが使用されるようになります。[変更の保存] を選択します。

Kibana にサインインして、問題なくアクセスできていれば完了です。

15
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
16