SSH トンネルを使用して、VPC の外部から Amazon Cognito 認証で OpenSearch ダッシュボードにアクセスする方法を教えてください。

所要時間3分
0

Amazon OpenSearch サービスドメインを仮想プライベートクラウド (VPC) に配置しています。SSH トンネルを使用して、VPC の外部から Amazon Cognito 認証で OpenSearch ダッシュボードにアクセスしようとしています。

簡単な説明

デフォルトでは、Amazon Cognito は OpenSearch ダッシュボードへのアクセスを VPC 内の AWS Identity and Access Management (IAM) ユーザーのみに制限しています。別の VPC から OpenSearch Service ドメインにアクセスするには、OpenSearch Service 用のインターフェイス VPC エンドポイントを作成します。ダッシュボード URL へのパブリックアクセスには、SSH トンネルを使用します。

重要: VPC 外からの OpenSearch Dashboards へのアクセスが、組織のセキュリティ要件に準拠していることを確認してください。

SSH トンネルを使用して VPC の外部から OpenSearch ダッシュボードにアクセスするには、次の手順を実行します。

  1. Amazon Cognito ユーザープールと ID プールを作成します。
  2. パブリックサブネット内に Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを作成します。
  3. ブラウザアドオンを使用して SOCKS プロキシを設定します。
  4. ローカルマシンから EC2 インスタンスへの SSH トンネルを作成します。
    注: NGINX プロキシまたはクライアント VPN を使用しても、Amazon Cognito 認証を使用して VPC の外部から OpenSearch ダッシュボードにアクセスできます。
  5. (オプション) 詳細アクセスコントロールを有効にする場合は、Amazon Cognito 認証ロールを追加します。

解決策

Amazon Cognito ユーザープールと ID プールを作成する

次の手順を実行します。

  1. Amazon Cognito ユーザープールを作成します。次の設定を行います。
    [アプリケーションの種類][従来のウェブアプリケーション] を選択します。
    [アプリケーションに名前を付ける] にカスタムアプリケーション名を入力するか、デフォルトの名前をそのまま使用します。
    [サインイン識別子のオプション][ユーザー名] を選択します。
    [サインアップに必要な属性][電子メール] を選択します。
  2. Amazon Cognito コンソールを開きます。
  3. ナビゲーションペインで [ユーザープール] を選択します。
  4. 該当するユーザープールを選択します。
  5. ナビゲーションペインの [ブランディング][マネージドログイン] を選択します。次の設定を行います。
    [マネージドログインのブランディングが設定されたドメイン][バージョンの更新] を選択します。
    [ブランディングバージョン][ホステッド UI (Classic)] を選択します。
  6. ユーザーとグループを設定します。
  7. Amazon Cognito ID プールを作成します。次の設定を行います。
    [ユーザーアクセス][認証されたアクセス] を選択します。
    [認証された ID ソース]Amazon Cognito ユーザープールを入力します。
    [IAM ロール][新しい IAM ロールを作成] を選択し、ロール名を入力します。
    [ユーザープールの詳細] で該当するユーザープール ID を選択し、[AppClient ID] を選択します。
    [ロール設定][デフォルトの認証されたロールを使用] を選択します。
    [クレームマッピング][非アクティブ] を選択します。
  8. Amazon Cognito 認証を使用するように OpenSearch Service ドメインを設定します。次の設定を行います。
    [Cognito ユーザープール] で該当するユーザープールを選択します。
    [Cognito ID プール] で該当する ID プールを選択します。
  9. [ドメイン] のアクセスポリシーに次のアクセスポリシーを入力します。
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::account-id:role/service-role/identitypool-role"
          },
          "Action": "es:*",
          "Resource": "arn:aws:es:region:account-id:domain/domain-name/*"
        }
      ]
    }
    注: 実際のものでそれぞれ、account-id を AWS アカウント ID に、identitypool-role を ID プールロールの名前に置き換えます。domain-name を実際の OpenSearch Service ドメインに、region をお使いのドメインの AWS リージョンに置き換えます。

EC2 インスタンスを作成し、セキュリティグループルールを設定する

**重要:**インスタンスのサブネットは OpenSearch Service ドメインと同じ VPC 内にある必要があります。

次の手順を実行します。

  1. OpenSearch Service ドメインが属する VPC のパブリックサブネットで インスタンスを起動します。
  2. [インスタンスの詳細の設定] ページで、[パブリック IP の自動割り当て]Enabled になっていることを確認します。
  3. インスタンスに関連付けられているセキュリティグループにインバウンドルールを追加します。ローカルマシンの IP アドレスからポート 8157 と 22 へのトラフィックを許可します。
  4. OpenSearch Service ドメインに関連付けられているセキュリティグループにインバウンドルールを追加します。インスタンスのプライベート IP アドレスからのトラフィックを許可します。

SOCKS プロキシを設定する

注: 次の手順では、FoxyProxy を使用して SOCKS プロキシを設定しています。拡張機能をインストールするには、Chrome ウェブストアで FoxyProxy を参照してください。

次の手順を実行します。

  1. FoxyProxy を開き、[オプション] を選択します。
  2. [プロキシ][追加] を選択します。
  3. 次の設定を行います。
    [タイトル] にプロキシ名を入力します。
    [ホスト名]localhost と入力します。
    [ポート]8157 と入力します。
    [タイプ][SOCKS5] を選択します。
  4. パターンを追加するには、プラス記号 (+) をクリックし、次の設定を行います。
    最初のフィールドは空白のままにしておきます。
    [タイトル] にパターンの名前を入力します。
    [パターン] に OpenSearch ダッシュボードの VPC エンドポイント (例: https://vpc-mydomain-rg3abcdefghiflge.us-east-1.es.amazonaws.com/_dashboards) を入力します。
    [タイプ][ワイルドカード] を選択します。
    [これを含める][含める] を選択します。
  5. [保存] を選択します。

SSH トンネルを作成する

次の手順を実行します。

  1. OpenSearch Dashboards へのアクセスに使用するローカルマシンから、次のコマンドを実行します。

    ssh -i "mykeypair.pem"  ec2-user@public_dns_name -ND 8157

    注: mykeypair.pem は、インスタンスの起動時に指定したキーペアの .pem ファイル名に置き換えます。public_dns_name は、実際のインスタンスのパブリック DNS に置き換えます。詳細については、「VPC の DNS 属性」を参照してください。

  2. ブラウザに OpenSearch ダッシュボードのエンドポイントを入力し、OpenSearch ダッシュボードの Amazon Cognito ログインページを開きます。

(オプション) Amazon Cognito ID プールロールを追加する (詳細アクセスコントロールを有効にする場合)

OpenSearch Service クラスターで詳細アクセス制御を有効にした場合、missing role エラーが発生する場合があります。

missing role エラーを解決するには、次の手順を実行します。

  1. OpenSearch Service コンソールを開きます。
  2. ナビゲーションペインの [マネージドクラスター][ドメイン] を選択します。
  3. 該当するドメインを選択し、[アクション] を選択します。
  4. [セキュリティ設定の編集] を選択します。
  5. [IAM の ARN をマスターユーザーとして設定] を選択します。
  6. [IAM の ARN] に Amazon Cognito ID プールロールの ARN を入力します。
  7. [保存] を選択します。

詳細アクセス制御の詳細については、「チュートリアル: IAM マスターユーザーと Amazon Cognito 認証を使用してドメインを設定する」を参照してください。

関連情報

OpenSearch ダッシュボードに Amazon Cognito 認証を設定する

VPC 内で Amazon OpenSearch Service ドメインを起動する

AWS公式
AWS公式更新しました 2ヶ月前
コメントはありません

関連するコンテンツ