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 ダッシュボードにアクセスするには、次の手順を実行します。
- Amazon Cognito ユーザープールと ID プールを作成します。
- パブリックサブネット内に Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを作成します。
- ブラウザアドオンを使用して SOCKS プロキシを設定します。
- ローカルマシンから EC2 インスタンスへの SSH トンネルを作成します。
注: NGINX プロキシまたはクライアント VPN を使用しても、Amazon Cognito 認証を使用して VPC の外部から OpenSearch ダッシュボードにアクセスできます。
- (オプション) 詳細アクセスコントロールを有効にする場合は、Amazon Cognito 認証ロールを追加します。
解決策
Amazon Cognito ユーザープールと ID プールを作成する
次の手順を実行します。
- Amazon Cognito ユーザープールを作成します。次の設定を行います。
[アプリケーションの種類] で [従来のウェブアプリケーション] を選択します。
[アプリケーションに名前を付ける] にカスタムアプリケーション名を入力するか、デフォルトの名前をそのまま使用します。
[サインイン識別子のオプション] で [ユーザー名] を選択します。
[サインアップに必要な属性] で [電子メール] を選択します。
- Amazon Cognito コンソールを開きます。
- ナビゲーションペインで [ユーザープール] を選択します。
- 該当するユーザープールを選択します。
- ナビゲーションペインの [ブランディング] で [マネージドログイン] を選択します。次の設定を行います。
[マネージドログインのブランディングが設定されたドメイン] で [バージョンの更新] を選択します。
[ブランディングバージョン] で [ホステッド UI (Classic)] を選択します。
- ユーザーとグループを設定します。
- Amazon Cognito ID プールを作成します。次の設定を行います。
[ユーザーアクセス] で [認証されたアクセス] を選択します。
[認証された ID ソース] に Amazon Cognito ユーザープールを入力します。
[IAM ロール] で [新しい IAM ロールを作成] を選択し、ロール名を入力します。
[ユーザープールの詳細] で該当するユーザープール ID を選択し、[AppClient ID] を選択します。
[ロール設定] で [デフォルトの認証されたロールを使用] を選択します。
[クレームマッピング] で [非アクティブ] を選択します。
- Amazon Cognito 認証を使用するように OpenSearch Service ドメインを設定します。次の設定を行います。
[Cognito ユーザープール] で該当するユーザープールを選択します。
[Cognito ID プール] で該当する ID プールを選択します。
- [ドメイン] のアクセスポリシーに次のアクセスポリシーを入力します。
{
"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 内にある必要があります。
次の手順を実行します。
- OpenSearch Service ドメインが属する VPC のパブリックサブネットで インスタンスを起動します。
- [インスタンスの詳細の設定] ページで、[パブリック IP の自動割り当て] が Enabled になっていることを確認します。
- インスタンスに関連付けられているセキュリティグループにインバウンドルールを追加します。ローカルマシンの IP アドレスからポート 8157 と 22 へのトラフィックを許可します。
- OpenSearch Service ドメインに関連付けられているセキュリティグループにインバウンドルールを追加します。インスタンスのプライベート IP アドレスからのトラフィックを許可します。
SOCKS プロキシを設定する
注: 次の手順では、FoxyProxy を使用して SOCKS プロキシを設定しています。拡張機能をインストールするには、Chrome ウェブストアで FoxyProxy を参照してください。
次の手順を実行します。
- FoxyProxy を開き、[オプション] を選択します。
- [プロキシ] で [追加] を選択します。
- 次の設定を行います。
[タイトル] にプロキシ名を入力します。
[ホスト名] に localhost と入力します。
[ポート] に 8157 と入力します。
[タイプ] で [SOCKS5] を選択します。
- パターンを追加するには、プラス記号 (+) をクリックし、次の設定を行います。
最初のフィールドは空白のままにしておきます。
[タイトル] にパターンの名前を入力します。
[パターン] に OpenSearch ダッシュボードの VPC エンドポイント (例: https://vpc-mydomain-rg3abcdefghiflge.us-east-1.es.amazonaws.com/_dashboards) を入力します。
[タイプ] で [ワイルドカード] を選択します。
[これを含める] で [含める] を選択します。
- [保存] を選択します。
SSH トンネルを作成する
次の手順を実行します。
-
OpenSearch Dashboards へのアクセスに使用するローカルマシンから、次のコマンドを実行します。
ssh -i "mykeypair.pem" ec2-user@public_dns_name -ND 8157
注: mykeypair.pem は、インスタンスの起動時に指定したキーペアの .pem ファイル名に置き換えます。public_dns_name は、実際のインスタンスのパブリック DNS に置き換えます。詳細については、「VPC の DNS 属性」を参照してください。
-
ブラウザに OpenSearch ダッシュボードのエンドポイントを入力し、OpenSearch ダッシュボードの Amazon Cognito ログインページを開きます。
(オプション) Amazon Cognito ID プールロールを追加する (詳細アクセスコントロールを有効にする場合)
OpenSearch Service クラスターで詳細アクセス制御を有効にした場合、missing role エラーが発生する場合があります。
missing role エラーを解決するには、次の手順を実行します。
- OpenSearch Service コンソールを開きます。
- ナビゲーションペインの [マネージドクラスター] で [ドメイン] を選択します。
- 該当するドメインを選択し、[アクション] を選択します。
- [セキュリティ設定の編集] を選択します。
- [IAM の ARN をマスターユーザーとして設定] を選択します。
- [IAM の ARN] に Amazon Cognito ID プールロールの ARN を入力します。
- [保存] を選択します。
詳細アクセス制御の詳細については、「チュートリアル: IAM マスターユーザーと Amazon Cognito 認証を使用してドメインを設定する」を参照してください。
関連情報
OpenSearch ダッシュボードに Amazon Cognito 認証を設定する
VPC 内で Amazon OpenSearch Service ドメインを起動する