ゼファーネットのロゴ

VPC 内で Amazon OpenSearch Service ドメインの SAML ID フェデレーションを構築する |アマゾン ウェブ サービス

日付:

AmazonOpenSearchサービス は、Apache Lucene 検索ライブラリを利用したフルマネージドの検索および分析サービスであり、Virtual Private Cloud (VPC) 内で操作できます。 VPC は、AWS アカウント専用の仮想ネットワークです。 AWS クラウド内の他の仮想ネットワークから論理的に分離されています。 VPC 内に OpenSearch Service ドメインを配置すると、インターネット ゲートウェイ、NAT デバイス、または VPN 接続を必要とせずに、OpenSearch Service と VPC 内の他のサービスとの間で安全な通信が可能になります。すべてのトラフィックは AWS クラウド内に安全に残り、データに安全な環境を提供します。プライベート VPC 内で実行されている OpenSearch Service ドメインに接続するには、企業顧客は 2 つの利用可能なオプションのいずれかを使用します。VPN を介して VPC を企業ネットワークと統合するか、または AWSダイレクトコネクトまたは、リバース プロキシ経由でクラスター エンドポイントにパブリックにアクセスできるようにします。参照する Amazon Cognito 認証を使用して VPC の外部から OpenSearch ダッシュボードにアクセスするにはどうすればよいですか 利用可能なオプションとそれに対応する長所と短所の詳細な評価については、こちらをご覧ください。

企業顧客の環境で OpenSearch ダッシュボードへのアクセスを管理するために、OpenSearch Service は、顧客の既存の ID プロバイダー (IdP) と Security Assertion Markup Language (SAML) の統合をサポートし、シングル サインオン (SSO) を提供します。パブリックにアクセス可能な OpenSearch ダッシュボードの SAML 統合はそのままで機能しますが、VPC 内で OpenSearch ダッシュボードの SAML を有効にするには、さまざまな構成で慎重に設計する必要があります。

この投稿では、VPC 内で実行されている OpenSearch Service ドメインの SAML 認証を統合するためのエンドツーエンドのソリューションの概要を説明します。段階的な導入ガイドラインを提供しており、以下のものが付属しています。 AWSクラウド開発キット (AWS CDK) アプリケーション。必要な設定をすべて自動化します。

ソリューションの概要

次の図は、SAML ID フェデレーションを使用した SSO 経由でプライベート OpenSearch Service ドメインにアクセスするための段階的な認証フローを示しています。アクセスは、パブリック インターネット上で実行されているプラ​​イベート NGINX リバース プロキシ サーバーを介して有効になります。 Amazon エラスティック コンテナ サービス (Amazon ECS) 高可用性を実現します。

ソリューションの概要

ワークフローは次の手順で構成されます。

  1. ユーザーはブラウザで OpenSearch ダッシュボード URL に移動します。
  2. ブラウザはドメイン IP アドレスを解決し、リクエストを送信します。
  3. AWS WAF ルールにより、許可リストにある IP アドレス範囲のみが許可されるようになります。
  4. Application Load Balancer はリクエストを NGINX リバース プロキシに転送します。
  5. NGINX は必要なヘッダーを追加し、リクエストを OpenSearch ダッシュボードに転送します。
  6. OpenSearch ダッシュボードは、リクエストが認証されていないことを検出します。これは、認証のために統合 SAML IdP へのリダイレクトで応答します。
  7. ユーザーは SSO ログイン ページにリダイレクトされます。
  8. IdP はユーザーの ID を検証し、SAML アサーション トークンを生成します。
  9. ユーザーは OpenSearch ダッシュボード URL にリダイレクトされます。
  10. リクエストは、OpenSearch に到達するまで、ステップ 1 ~ 5 を再度実行します。今回、OpenSearch ダッシュボードは、付随する SAML アサーションを検出し、リクエストを許可します。

次のセクションでは、プライベート サブネットに NGINX リバース プロキシを設定して、VPC プライベート サブネット内にデプロイされたドメインの OpenSearch ダッシュボードへのアクセスを提供します。次に、SAML 2.0 アプリケーションを使用して OpenSearch ダッシュボードの SAML 認証を有効にし、カスタム ドメイン エンドポイントを使用して OpenSearch ダッシュボードにアクセスし、SAML 認証が動作していることを確認します。

前提条件

始める前に、このセクションの前提条件の手順を完了してください。

必要なツールをインストールする

まず、AWS CDK をインストールします。詳細については、を参照してください。 AWS CDK v2 開発者ガイド.

必要な AWS リソースを準備する

AWS リソースを設定するには、次の手順を実行します。

  1. AWSアカウントを作成する.
  2. 作る アマゾンルート53 パブリックホストゾーンなど mydomain.com インターネット トラフィックをドメインにルーティングするために使用されます。手順については、を参照してください。 パブリックホストゾーンの作成.
  3. リクエストする AWS証明書マネージャー ホストゾーンの (ACM) パブリック証明書。手順については、を参照してください。 公開証明書のリクエスト.
  4. パブリックおよびプライベートサブネットを持つ VPC を作成する.
  5. 有効にします AWS IAM アイデンティティ センター。 手順については、を参照してください。 IAM アイデンティティ センターを有効にする.

OpenSearch サービス クラスターを準備する

この投稿には、スタンドアロンの AWS CDK アプリケーション (オープンサーチドメイン) サンプル OpenSearch Service ドメインをプライベート VPC サブネットにデプロイします。デプロイされたドメインはデモンストレーションのみを目的としており、オプションです。

VPC 内に SAML 統合に使用する既存の OpenSearch Service ドメインがある場合は、次の設定を適用します。

  1. ソフトウェア設定ページで、下図のように クラスタ構成 タブを選択 編集 をクリックして カスタムエンドポイントを有効にする セクションに カスタム エンドポイント のセクションから無料でダウンロードできます。
  2. カスタムホスト名、次のような完全修飾ドメイン名 (FQDN) を入力します。 opensearch.mydomain.com、クラスターへのアクセスに使用します。指定された FQDN のドメイン名 (例: mydomain.com) は、前に作成したパブリックホストゾーンと同じである必要があります。
  3. AWS証明書、前に作成した SSL 証明書を選択します。
  4. まとめ セクションで、オプションでドライラン分析を有効にし、 ドライラン または選択を解除して選択します 変更を保存します.

それ以外の場合は、付属のファイルをダウンロードしてください オープンサーチドメイン AWS CDK アプリケーションをダウンロードして解凍します。次に、 cdk.json 解凍されたフォルダーのルートにあるファイルを開き、必要なパラメーターを構成します。

  • vpc_cidr – VPC を作成する CIDR ブロック。デフォルトの 10.0.0.0/16 のままにすることができます。
  • opensearch_cluster_name – OpenSearch サービス クラスターの名前。デフォルト値のままにすることもできます opensearch。も併せて使用します。 hosted_zone_name パラメータを使用して、カスタム ドメイン URL の FQDN を構築します。
  • ホストゾーンID – Route 53 パブリックホストゾーン ID。
  • ホストゾーン名 – Route 53 パブリックホストゾーン名 (例: mydomain.com)。デフォルトの例の値を含む結果の FQDN は次のようになります。 opensearch.mydomain.com.

最後に、次のコマンドを実行して AWS CDK アプリケーションをデプロイします。

cd opensearch-domain

# Create a Python environment and install the reuired dependencies
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txt
pip install -r requirements.txt

# Deploy the CDK application
cdk deploy

前提条件が整ったら、このソリューションを展開するためのステップバイステップ ガイドについては、次のセクションを参照してください。

SAML 2.0 アプリケーションを作成する

SAML 統合の ID ソースとして IAM Identity Center を使用します。同じ構成を他の SAML 2.0 準拠の IdP に適用する必要があります。 IdP のドキュメントを参照してください。

  1. IAM Identity Center コンソールで、選択 グループ ナビゲーションペインに表示されます。
  2. という名前の新しいグループを作成します Opensearch Adminをクリックし、それにユーザーを追加します。
    これは、OpenSearch ダッシュボードで完全な権限を受け取る SAML グループになります。グループIDをメモしておきます。OpenSearch 管理者グループ
  3. 選択する アプリケーション ナビゲーションペインに表示されます。
  4. 新しいカスタム SAML 2.0 アプリケーションを作成します。SAMLアプリケーションの作成
  5. 後のステップで使用するために、IAM Identity Center SAML メタデータ ファイルをダウンロードします。IAM Identity Center SAML メタデータ
  6. アプリケーション開始URL、 入る [Custom Domain URL]/_dashboards/.
    カスタム ドメイン URL は、前提条件で OpenSearch サービス クラスターに使用した FQDN が続く通信プロトコル (https://) で構成されます (例: https://opensearch.mydomain.com)。疑わしい場合は、OpenSearch Service クラスター構成を確認してください。
  7. アプリケーションACSURL、 入る [Custom Domain URL]/_dashboards/_opendistro/_security/saml/acs.
  8. アプリケーションSAMLオーディエンス、 入る [Custom Domain URL] (末尾のスラッシュなし)。
    OpenSearch ドメインの SAML プロパティ
  9. 選択する 送信.
  10. 割り当てられたユーザー セクション、選択 オープンサーチ管理者 選択して ユーザーの割り当て.管理者グループを SAML アプリケーションに割り当てる
  11. ソフトウェア設定ページで、下図のように メニュー、選択 属性マッピングの編集.SAML アプリケーションの属性マッピングを編集する
  12. 次のスクリーンショットに示すように属性マッピングを定義し、選択します 変更を保存します.SAML アプリケーションの属性マッピングを構成する

AWS CDK アプリケーションをデプロイする

AWS CDK アプリケーションをデプロイするには、次の手順を実行します。

  1. ダウンロードして解凍します オープンサーチドメイン-saml-統合 AWS CDK アプリケーション。
  2. 秘密 SSL キーと証明書を AWSシークレットマネージャー & 2つの秘密を作成する 呼ばれます Key & Crt。 たとえば、次のコードを参照してください。
    KEY=$(cat private.key | base64) && aws secretsmanager create-secret --name Key --secret-string $KEY
    CRT=$(cat certificate.crt | base64) && aws secretsmanager create-secret --name Crt --secret-string $CRT

    次のコマンドを使用して、自己署名証明書を生成できます。これはテスト専用です。運用環境ではこれを使用しないでください。

    openssl req -new -newkey rsa:4096 -days 1095 -nodes -x509 -subj '/' -keyout private.key -out certificate.crt

  3. 編集 cdk.json ファイルを作成し、ネストされたファイル内に必要なパラメータを設定します。 config オブジェクト:
  • aws_region – デプロイメントのターゲット AWS リージョン (例: eu-central-1).
  • vpc_id – OpenSearch Service ドメインがデプロイされている VPC の ID。
  • opensearch_cluster_security_group_id – OpenSearch Service ドメインで使用されるセキュリティ グループ、またはポート 80 および 443 でそのドメインへの受信接続を許可するその他のセキュリティ グループの ID。このグループ ID は、OpenSearch Service ドメインにトラフィックを転送するために Application Load Balancer によって使用されます。 。
  • ホストゾーンID – Route 53 パブリックホストゾーン ID。
  • ホストゾーン – Route 53 パブリックホストゾーン名 (例: mydomain.com).
  • opensearch_custom_domain_name – 次のような FQDN opensearch.mydomain.com、クラスターへのアクセスに使用します。指定された FQDN のドメイン名 (mydomain.com) と同じである必要があります hosted_zone パラメータに一致する最初のデバイスのリモートコントロール URL を返します。
  • opensearch_custom_domain_certificate_arn – ACM に保存されている証明書の ARN。
  • opensearch_domain_endpoint – OpenSearch Service VPC ドメイン エンドポイント (例: vpc-opensearch-abc123.eu-central-1.es.amazonaws.com).
  • vpc_dns_resolver – これは 10.0.0 である必要があります。 VPC CIDR が 10.0.0.0/16 の場合。見る アマゾンDNSサーバー 詳細については、。
  • alb_waf_ip_whitelist_cidrs – これは、OpenSearch Service ドメインへのアクセスを許可するために AWS WAF に自動的に許可リストに追加される 0 個以上の IP CIDR 範囲のオプションのリストです。指定しない場合は、デプロイ後に、アクセスを許可するために関連する IP CIDR 範囲を AWS WAF IP セットに手動で追加する必要があります。例えば、 ["1.2.3.4/32", "5.6.7.0/24"].
  1. OpenSearch Service ドメイン SAML 統合 AWS CDK アプリケーションをデプロイします。
    cd opensearch-domain-saml-integration
    
    # Create a Python environment and install the required dependencies
    python3 -m venv .venv
    source .venv/bin/activate
    pip install -r requirements-dev.txt
    pip install -r requirements.txt
    
    # Deploy the CDK application
    cdk deploy

OpenSearch サービス クラスターの SAML 認証を有効にする

アプリケーションのデプロイが完了したら、クラスターの SAML 認証を有効にします。

  1. OpenSearch Service コンソールで、ドメインに移動します。
  2. ソフトウェア設定ページで、下図のように セキュリティ構成 タブを選択 編集.OpenSearch ドメインの SAML 認証を有効にする
  3. 選択 SAML 認証を有効にする.
  4. 選択する XMLファイルからインポート そして、前の手順でダウンロードした IAM Identity Center SAML メタデータ ファイルをインポートします。
  5. SAML マスター バックエンド ロール、前に保存したグループ ID を使用します。
  6. 拡大する その他の設定 セクションと 役割、AWS Identity Center で SAML 2.0 アプリケーションを作成したときにマッピングした SAML 2.0 属性名を入力します。
  7. ドメインアクセスポリシーを構成する SAML 統合用。
  8. 変更を送信し、OpenSearch Service が構成を適用するまで待ってから、次のセクションに進みます。

ソリューションをテストする

ソリューションの動作を確認するには、次の手順を実行します。

  1. IAM Identity Center コンソールで、選択 ダッシュボード ナビゲーションペインに表示されます。
  2. 設定概要 セクションで、下のリンクを選択します AWS アクセスポータル URL.IAMアイデンティティセンターにログイン
  3. ユーザー名とパスワードを使用してサインインします (初めてログインする場合は、パスワードを登録してください)。
    アカウントが管理者グループに正常に追加された場合は、SAML アプリケーションのロゴが表示されます。
  4. 選択する カスタム SAML 2.0 アプリケーション 追加のログイン試行なしで SSO 経由で OpenSearch サービス ダッシュボードにリダイレクトされます。SAML アプリケーションを開く
    あるいは、アクセス ポータルへのログインをスキップし、ブラウザで OpenSearch ダッシュボード URL を直接指定することもできます。その場合、OpenSearch ダッシュボードは、まずアクセス ポータルにリダイレクトしてログインし、ログインに成功すると OpenSearch ダッシュボード UI にリダイレクトされ、次のスクリーンショットに示すものと同じ結果になります。ログイン成功後の OpenSearch ダッシュボード UI

トラブルシューティング

公開 IP は AWS WAF ルールによって許可リストに登録されている必要があります。そうしないと、403 Forbidden エラーが返されます。 AWS CDK 経由で IP CIDR 範囲をホワイトリストに登録します alb_waf_ip_whitelist_cidrs インストールガイドの説明に従ってプロパティを変更し、AWS CDK アプリケーションを再デプロイして変更を有効にします。

クリーンアップ

この構成が完了したら、将来の料金が発生しないようにリソースをクリーンアップします。

  1. OpenSearch サービス コンソールで、次の場所に移動します。 セキュリティ構成 OpenSearch Service ドメインのタブをクリックして選択します 編集.
  2. 選択を解除 SAML 認証を有効にする 選択して 変更を保存します.
  3. Amazon SAML 統合を無効にした後、 opensearch-domain-saml-integration 使用してスタックする cdk destroy.
  4. オプションで、提供されている OpenSearch Service サンプル AWS CDK スタック (opensearch-domain)、使用して削除します cdk destroy.

まとめ

OpenSearch Service を使用すると、企業顧客は、AWS のベスト プラクティスに従って、プライベート VPC サブネット内で実行されているクラスターに対して IAM Identity Center を使用して、SAML などの優先フェデレーション IdP を使用できるようになります。

この投稿では、IAM Identity Center を使用して OpenSearch ダッシュボードに SSO アクセスするために、VPC 内の OpenSearch Service ドメインを既存の SAML IdP と統合する方法を説明しました。提供されるソリューションは、AWS WAF を使用してリソースへのネットワーク アクセスを安全に管理し、許可されたネットワーク セグメントまたは特定の IP アドレスのみにアクセスを制限します。

開始するには、を参照してください。 Amazon Cognito 認証を使用して VPC の外部から OpenSearch ダッシュボードにアクセスするにはどうすればよいですか プライベート VPC アクセス パターンにおける OpenSearch Service ドメインの詳細な比較については、


著者について

マフディ・エブラヒミ アマゾン ウェブ サービスのシニア クラウド インフラストラクチャ アーキテクトです。彼は、分散型の高可用性ソフトウェア システムの設計を得意としています。マハディは、自動車業界の急速に進化する状況において顧客が革新できるよう支援する最先端のソリューションを提供することに専念しています。

ドミトロ・プロツィフ アマゾン ウェブ サービスのクラウド アプリケーション アーキテクトです。彼は、顧客がアプリケーションの最新化に関するビジネス上の課題を解決できるよう支援することに情熱を注いでいます。

ルカ・メニケッティ アマゾン ウェブ サービスのビッグデータ アーキテクトです。彼は、顧客が大規模にデータを処理するためのパフォーマンスが高く再利用可能なソリューションを開発するのを支援します。 Luca は、組織のデータ アーキテクチャを管理し、データ分析と機械学習を可能にすることに情熱を注いでいます。 10 年間にわたって Hadoop エコシステムに取り組んできた彼は、NoSQL 環境の問題に取り組むことを心から楽しんでいます。

クリティバサン・バラスブラマニヤン アマゾン ウェブ サービスの主席コンサルタントです。彼は、グローバル企業顧客のデジタル変革の取り組みを支援し、クラウド ネイティブ ソリューションの構築を支援します。

ムトゥ・ピッチャイマニ Amazon OpenSearch Service の検索スペシャリストです。 彼は大規模な検索アプリケーションとソリューションを構築しています。 Muthu はネットワーキングとセキュリティのトピックに関心があり、テキサス州オースティンを拠点としています。

スポット画像

ホーム

最新のインテリジェンス

スポット画像