AWS SSO を利用して Amazon Elasticsearch Service へログインしてみた
こんにちは、大前です。
Amazon Elasticsearch Service(以下 Amazon ES)では Kibana の SAML 認証が利用できます。
今回は上記を利用して、AWS Single Sign-On(以下 AWS SSO)を ID プロパイダとして利用した Amazon ES 上の Kibana へのログインを試みてみました。
やってみた
前提
前提として、AWS SSO が利用可能である事が必要です。
AWS SSO には利用にあたっての前提条件等がありますので、詳しくは以下ブログを参照ください。
1.Amazon ES ドメインの作成
まずは Amazon ES のドメインを作成します。
今回は検証用途ですので、デプロイタイプは "開発およびテスト" とし、インスタンスタイプは "t3.small.elasticsearch" にしました。 その他項目はデフォルトで進めます。
ネットワーク構成は "パブリックアクセス"。
「細かいアクセスコントロールを有効化」にチェックをいれ、「マスターユーザの作成」を設定します。また、今回のキモである SAML 認証を使用する為、SAML 認証を準備する
にチェックをいれます。
アクセスポリシーは自身の IP アドレスからアクセスを許可する様に設定しました。
一通り設定を行ったら、ドメインの作成を実行します。
ドメインが有効になったら、ドメインを選択した状態で「認証の変更」を開き、SAML 認証を有効化
をチェックします。その際、チェックした際に表示される サービスプロパイダエンティティ ID
と IdP によって開始された SSO URL
をコピーしておきます。
上記設定画面は開いたままにして、別のタブで次の手順を進めます。
2.AWS SSO アプリケーションの設定
続いて、AWS SSO 側でアプリケーション設定を行います。
AWS SSO の画面から、「アプリケーション」>「新規アプリケーションの追加」をクリック。
"カスタム SAML 2.0 アプリケーションの追加" をクリック。
アプリケーション名は適当に入力します。
画面中ほどに下記の様な項目が表示されますので、AWS SSO SAML メタデータファイル
をダウンロードしておきます。これは後ほど利用します。
アプリケーション ACS URL
には手順1 にてコピーした IdP によって開始された SSO URL
を、アプリケーション SAML 対象者
には同じく手順1 にてコピーした サービスプロパイダエンティティ ID
を貼り付け、アプリケーションの作成を完了します。
アプリケーション設定の作成後、「属性マッピング」タブを開いて以下画像の様に項目を入力します。ここの値は How to Integrate AWS SSO with AWS Managed Elasticsearch Kibana Instance を参考にしました。
また、${user:groups}
は Supported AWS SSO attributes には確認出来ませんが、上記ブログによると入力値として有効であるとの事です。ここについては公式のソースが見つけられませんでしたので、何かわかり次第追記したいと思います。
アプリケーションのユーザー属性 | この文字列値または AWS SSO のユーザー属性にマッピング | 形式 |
---|---|---|
Subject | ${user:subject} | unspecified |
Role | ${user:groups} | unspecified |
続いて、「割り当て済みユーザー」タブより、アプリケーションへのユーザの割り当てを行います。「グループ」タブより、Kibana へのログインをさせたいユーザが含まれているグループを選択します。
また、ここで追加したグループの ID を後ほど利用する為、メモしておきます。
3.Amazon ES SAML 認証の設定
手順1 で開いておいた Amazon ES の設定画面に戻り、以下作業を実施します。
- 手順2 で DL した XML ファイルをインポート
- 「SAML マスターバックエンドロール(オプション)」に先ほどコピーした AWS SSO グループ ID を指定
- 「オプションの SAML 設定」>「ロールキー」に "Role" を指定
- 「オプションの SAML 設定」>「セッションの有効期限」に "60"(任意)
4.AWS SSO からのログイン確認
設定後、AWS SSO にログインすると、作成したアプリケーション(Kibana Login application)が表示されています。
上記クリックすると、Amazon ES にログイン出来ました。
また、ログインユーザはバックエンドロールとして AWS SSO のグループ ID が指定されていることも確認できます。
おわりに
Amazon ES Kibana の SAML 認証機能を利用して、AWS SSO からのログインを試してみました。SAML について理解が乏しいこともあり、完全に仕組みを理解出来ているわけではないので、引き続き色々と勉強していきたいと思います。
以上、AWS 事業本部の大前でした。