Amazon Cognito 認証を使用して、SSH トンネルで VPC 外部から OpenSearch Dashboards にアクセスするにはどうすればよいですか?

最終更新日: 2022 年 12 月 14 日

Amazon OpenSearch Service クラスターが仮想プライベートクラウド (VPC) 内にあります。Amazon Cognito 認証を使用して、SSH トンネルで VPC 外部から OpenSearch Dashboards にアクセスしたいと考えています。

簡単な説明

デフォルトでは、Amazon Cognito は OpenSearch Dashboards へのアクセスを VPC の AWS Identity and Access Management (IAM) ユーザーに制限します。OpenSearch Service が管理する VPC エンドポイント (AWS PrivateLink を使用) をセットアップすることで、別の VPC から Amazon OpenSearch Service ドメインにアクセスします。また、SSH トンネルを使用して VPC の外部から OpenSearch Dashboards にアクセスすることもできます。

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

SSH トンネルを使用して VPC の外部から Dashboards に次のようにアクセスします。

1.    Amazon Cognito ユーザープールと ID プールを作成します。

2.    Amazon Elastic Compute Cloud (Amazon EC2) のインスタンスをパブリックサブネットに作成します。このサブネットは、OpenSearch Service のドメインと同じ VPC にある必要があります。

3.    FoxyProxy などのブラウザアドオンを使用して、SOCKS プロキシを設定します。

4.    ローカルマシンから EC2 インスタンスへの SSH トンネルを作成します。

注: Amazon Cognito 認証で VPC の外部から Dashboards にアクセスするために、NGINX プロキシまたはクライアント VPN を使用することもできます。詳細については、 Amazon Cognito 認証を使用して VPC の外部から OpenSearch Dashboards にアクセスする方法を参照してください。

5.    (オプション) きめ細かなアクセスコントロール (FGAC) がオンになっている場合は、Amazon Cognito 認証ロールを追加します。

解決方法

Amazon Cognito ユーザープールと ID プールを作成します。

1.    Amazon Cognito のユーザープールを作成します

2.    ホストされたユーザープールドメインを設定します

3.    Amazon Cognito コンソールのナビゲーションペインで、ユーザーとグループを選択します。

4.    [Create user] (ユーザーの作成) を選択し、フィールドに入力します。E メールアドレスを入力していることを確認してください。次に、[Mark email as verified] (E-mail を確認済としてマーク) チェックボックスをオンにします。

5.    [Groups] (グループ) タブを選択し、[Create group] (グループの作成) を選択します。[Precedence] (優先順位) について、0 を入力します。詳細については、「AWS マネジメントコンソールでの新しいグループの作成」を参照してください。

6.    Amazon Cognito コンソール を開きます。

7.    [Manage Identity Pools] (ID プールの管理) を選択し、続いて [Create new identity pool] (新しい ID プールの作成) を選択します。

8.    ID プールの名前を入力し、[Enable access to unauthenticated identities] (認証されていない ID のアクセスを有効にする) チェックボックスを選択します。続いて、[Create Pool] (プールを作成) を選択します。

9.    AWS リソースへのアクセスを求めるメッセージが表示されたら、[Allow] (許可) を選択します。 これにより、ID プールに関連付けられた 2 つのデフォルトロールが作成されます。1 つは認証されていないユーザー用、もう 1 つは認証されたユーザー用です。

10.    OpenSearch Dashboards のために Amazon Cognito 認証を使用するように OpenSearch Service ドメインを設定します:
[Cognito User Pool] (Cognito ユーザープール) で、ステップ 1 で作成したユーザープールを選択します。
Cognito Identity Pool を選択し、ステップ 8 で作成した ID プールを選択します。

11.    OpenSearch Service ドメインを設定して、次のようなアクセスポリシーを使用します。これらの値を置き換えます。
account-id を、お客様の AWS アカウント IDで置き換えます
identity-name を、Amazon Cognito アイデンティティプールの名前で置き換えます
domain-name を、ドメインの名前で置き換えます
Region を、us-east-1 など、ドメインが存在するリージョンで置き換えます

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:sts::account-id:assumed-role/Cognito_identity-nameAuth_Role/CognitoIdentityCredentials"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:Region:account-id:domain/domain-name/*"
    }
  ]
}

例えば、次のアクセスポリシーでは、以下の値を使用します。

AWS アカウント ID: 111122223333
Amazon Cognito アイデンティティプール名: MyIdentityPool
ドメイン名: MyDomain
リージョン: us-east-1

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:sts::111122223333:assumed-role/Cognito_MyIdentityPoolAuth_Role/CognitoIdentityCredentials"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1:111122223333:domain/MyDomain/*"
    }
  ]
}

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

1.    OpenSearch Service ドメインがある VPC のパブリックサブネットの EC2 インスタンスを起動します[Configure Instance Details] (インスタンスの詳細の設定) ページで、[Auto-assign Public IP] (自動割り当てパブリック IP) が [Enable] (有効) に設定されていることを確認します。
注: 以下の手順では、EC2 インスタンスが tunnel_ec2 として参照されます。

2.    tunnel_ec2 インスタンスに関連付けられたセキュリティグループにインバウンドルールを追加します。これらのルールは、OpenSearch Service ダッシュボードへのアクセス元のマシンの IP アドレスからポート 8157 および 22 へのトラフィックを許可する必要があります。

3.    OpenSearch Service ドメインに関連するセキュリティグループにインバウンドルールを追加します。このルールは、tunnel_ec2 インスタンスのプライベート IP アドレスからのトラフィックを許可する必要があります。

SOCKS プロキシを設定する

1.    Google Chrome で FoxyProxy Standard を追加します。

2.    FoxyProxy を開き、[Options] (オプション) を選択します。

3.    Proxy mode ドロップダウンリストで、[Use proxies based on their pre-defined patterns and priorities] (事前定義されたパターンと優先順位に基づいてプロキシを使用) を選択します。

4.    [Add New Proxy] (新しいプロキシの追加) を選択します。

5.    [General] (一般) タブを選択し、「Dashboards Proxy」のような [Proxy Name] (プロキシ名) を入力します。

6.    [Proxy Details] (プロキシの詳細) タブで [Manual Proxy Configuration] (手動のプロキシ設定) が選択されていることを確認し、次のフィールドに入力します。
       [Host or IP Address] (ホストまたは IP アドレス) で、localhost を入力します。
       ポートには 8157 と入力します。
       SOCKS プロキシを選択します。
       SOCKS v5を選択します。

7.    [URL Patterns] (URL パターン) タブを選択します。

8.    [Add new pattern] (新規パターンを追加) を選択し、次のフィールドに入力します。
       [Pattern Name] (パターン名) に、「VPC Endpoint」などの名前を入力します。
       [URL pattern] (URL パターン) に、Dashboards の VPC エンドポイントを入力します。URL へのアクセスが許可されていることを確認してください。[Wildcards] (ワイルドカード) が選択されていることを確認してください。

9.     [Save] (保存) を選択します。

SSH トンネルを作成します。

1.    Dashboards ダッシュボードにアクセスするために使用するローカルマシンから次のコマンドを実行します。次の項目を置き換えます。
       mykeypair.pem: tunnel_ec2 EC2 インスタンスを起動したときに指定したキーペアの .pem ファイルの名前。
       public_dns_name: tunnel_ec2 EC2 インスタンスのパブリック DNS。詳細については、「EC2 インスタンスの DNS ホスト名を確認する」を参照してください。

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

2.    ブラウザで Dashboards エンドポイントを入力します。Dashboards のための Amazon Cognito のログインページが表示されます。

(オプション) FGAC がオンになっている場合は、Amazon Cognito 認証ロールを追加します

OpenSearch Service クラスターできめ細かなアクセスコントロール (FGAC) がオンになっている場合、「missing role」(ロールがありません) エラーが発生する可能性があります。「missing role」(ロールがありません) エラーを解決するには、次の手順を実行します。

1.    OpenSearch Service コンソールにサインインします。

2.    ナビゲーションペインの [Managed clusters] (マネージドクラスター) で、[Domains] (ドメイン) を選択します。

3.    [Actions] (アクション) をクリックします。

4.    [Modify master user] (マスターユーザーの変更) を選択します。

5.    [Set IAM ARN as your master user] (IAM ARN をマスターユーザーとして設定) を選択します。

6.    [IAM ARN] フィールドに、Amazon Cognito 認証済み ARN ロールを追加します。

7.    [Submit] (送信) を選択します。

きめ細かなアクセスコントロールの詳細については、「チュートリアル: IAM マスターユーザーと Amazon Cognito」を参照してください。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?