Amazon OpenSearch ServiceのOpenSearch DashboardsにSAML連携でログインしてみる

2021.09.30

はじめに

こんにちは。大阪オフィスの林です。

Amazon OpenSearch ServiceでセットアップされたOpenSearch DashboardsにSAML連携でログインする検証を行う機会がありましたので内容をまとめておきたいと思います。今回のエントリではAzure Active DirectoryをIDプロバイダーとし、SAML認証を使ってOpenSearch Dashboardsにログインするところまでを見ていきたいと思います。執筆時点では、Azure Active Directoryのほか、次の外部IDプロバイダーのSAML認証がサポートされているようです。

  • Okta
  • Keycloak
  • Auth0

公式のドキュメントは下記を参考にしていただければと思います。

やってみた

Amazon OpenSearch Serviceのセットアップ

まずはAmazon OpenSearch Serviceでドメインをセットアップしていきます。Amazon OpenSearch Serviceのダッシュボードに移動し、「新しいドメインの作成」を選択します。

今回は検証のため「開発およびテスト」を選択し進めます。バージョンはOpenSearch 1.0を選択し「次へ」を選択します。

任意のドメイン名を入力します。

環境に応じたインスタンスタイプを選択します。

その他の設定はデフォルトとし「次へ」を選択します。

今回の検証ではネットワークの構成に「パブリックアクセス」を選択します。

SAML連携の機能を使用するには「細かいアクセスコントロールを有効化」にチェックを入れたままの状態とする必要があるのデフォルトのチェック有りのままの設定とします。

「SAML認証を準備する」にチェックを入れます。セットアップ時にできるSAML連携周りの設定はこのチェック項目しかありません。実際の設定はドメインの作成完了後に設定することとなります。

環境に応じたアクセスポリシーを設定します。今回の検証では「ドメインへのオープンアクセスを許可」を選択することとします。

その他はデフォルトとし「次へ」を選択します。

必要に応じてタグを追加し「次へ」を選択します。

設定した内容を確認し「確認」を選択します。

セットアップが完了するまでしばらく待ちます。

ドメインのステータスが「アクティブ」となりました。

対象のドメインから「アクション」-「認証を変更」を選択します。

「SAML認証を有効化」にチェックを入れます。「IDプロバイダー(IdP) を設定する」の以下2つのURLは、以降のIDプロバイダー(Azure Active Directory)側の設定で必要になりますのでコピーもしくはブラウザを表示したままとしてください。

  • サービスプロバイダエンティティID
  • SP によって開始された SSO URL

補足ですがIdP によって開始された SSO URLSP によって開始された SSO URLの使い分けがパッと分からなかったのですが以下のようなイメージで頭の中を整理しました。今回はOpenSearch Dashboards URLを介した認証を設定しようと思いますのでSP によって開始された SSO URLを使用することとしています。

IDプロバイダー(Azure Active Directory)側の作業

続いて、IDプロバイダー側の作業を進めていきます。今回の検証ではIDプロバイダーにAzure Active Directoryを使用しますので、Azureの管理画面にログインし「Azure Active Directory」を選択します。

左メニューから「エンタープライズアプリケーション」を選択します。

「新しいアプリケーション」を選択します。

「独自アプリケーションの作成」を選択します。

任意の名前を入力し「ギャラリーに見つからないその他のアプリケーションを統合します(ギャラリー以外)」が選択されている状態で「作成」を選択します。

作成が完了するまでしばらく待ちます。

作成したアプリケーションが追加されました。

左メニューから「シングルサインオン」-「SAML」を選択します。

「基本的なSAML構成」から「編集」を選択します。

先ほどコピーもしくはブラウザを表示したままとしているAmazon OpenSearch Serviceの情報をコピーしていきます。 識別子(エンティティID)サービスプロバイダエンティティID応答 URL (Assertion Consumer Service URL)SP によって開始された SSO URLを入力し、「保存」を選択します。

構成が完了するまでしばらく待ちます。

テストが求められますが、またユーザーをアタッチしていないので「いいえ、後でtestします」を選択します。

後程Amazon OpenSearch Serviceの設定で使用するため「SAML署名証明書」から「フェデレーションメタデータXML」をダウンロードしておきます。

左メニューから「ユーザーとグループ」を選択します。

「ユーザーまたはグループの追加」を選択します。予めAzure Active Directoryにはユーザーを作成しておく必要があります。

「選択されていません」のリンクを選択します。

対象のユーザーを選択し「選択」をクリックします。

「割り当て」を選択します。

アプリケーションにユーザーがアタッチされたことを確認します。

Amazon OpenSearch Service側の作業に戻る

「XMLファイルからインポート」を選択し、先ほどダウンロードした「フェデレーションメタデータXML」を指定しインポートします。

「送信」を選択します。本当であれば「SAML マスターユーザー名 (オプション)」を指定しOpenSearch Dashboardsの管理者を指定しますが、検証なので管理者を指定しない状態での挙動も見ていきたいと思います。

処理中となるので少し待ちます。

ドメインのステータスが「アクティブ」となりました。

「OpenSearch ダッシュボード」にアクセスしてみます。

IDプロバイダー側のアプリケーションにアタッチしたユーザーでサインインします。

Missing RoleNo roles available for this user, please contact your system administrator.と表示されました。先程の「SAML マスターユーザー名 (オプション)」を指定していないためです。

OpenSearch Dashboardsに対して管理者権限を付けていきます。対象のドメインから「アクション」-「認証を変更」を選択します。

「SAML マスターユーザー名 (オプション)」にIDプロバイダー側でアタッチしたユーザー名を入力し「送信」を選択します。

処理中となるので少し待ちます。

ドメインのステータスが「アクティブ」となりました。

再度ログインするとOpenSearch Dashboardsが閲覧できました。

まとめ

Amazon OpenSearch ServiceでセットアップされたOpenSearch DashboardsにSAML連携でログインする検証をやっていきました。個人的に、他のサービスでもSAML連携の検証を進めているお陰か、連携に掛かる設定についての難易度自体はそう高くないような印象を受けました。このエントリがどなたかの参考になりましたら幸いです。

以上、大阪オフィスの林がお送りしました!