OpenSearch ダッシュボードにアクセスし、Amazon OpenSearch Service ドメインで Amazon Cognito 認証を使用したいのですが、エラーやログインの問題が発生します。
解決策
OpenSearch ダッシュボードの URL を入力してもログインページが表示されない
次の理由により、ログインページが表示されない場合があります。
- 使用する IP ベースのドメインアクセスポリシーが、ローカルマシンの IP アドレスからダッシュボードにアクセスできるようになっている。この問題を解決するには、ドメインアクセスポリシーに Amazon Cognito 認証ロールを追加します。
- リクエストに署名するアクセス許可を持つ AWS Identity and Access Management (IAM) ロールを使用している。この問題を解決するには、リクエストの署名にプロキシメソッドを使用しないでください。
- OpenSearch Service ドメインは仮想プライベートクラウド (VPC) 内にあるため、ドメインにはオープンアクセスポリシーが適用されます。ドメインが VPC 内にある場合、ダッシュボードにアクセスするには、Amazon Cognito 認証は必要ありません。
注: Amazon Cognito 認証を要求するには、ドメインアクセスポリシーを変更します。
Amazon Cognito 認証によって OpenSearch ダッシュボードのログインページにリダイレクトされるものの、ログインに失敗する場合は、Amazon Cognito が正しく設定されていません。この問題をトラブルシューティングするには、次の手順を実行します。
「Missing Role」エラー
OpenSearch Service ドメインの OpenSearch ダッシュボードで詳細アクセス制御が有効になっている場合、次のエラーが発生する場合があります。
「Missing Role No roles available for this user, please contact your system administrator」 (このユーザーに使用できるロールがありません。システム管理者にお問い合わせください)
この問題を解決するには、Amazon Cognito ID プールが引き受けるロールが、指定されたプライマリユーザーの IAM ロールと一致することを確認してください。
プライマリユーザーの IAM ロールを引き受けた Amazon Cognito ロールと一致させるには、次のステップを実行します。
- OpenSearch Service コンソールを開きます。
- ナビゲーションペインの [マネージドクラスター] で [ドメイン] を選択します。
- [アクション] を選択します。
- [セキュリティ設定の編集] を選択します。
- [詳細アクセス制御] で [IAM の ARN をマスターユーザーとして設定] を選択します。
- [IAM の ARN] に Amazon Cognito ID プールロールの ARN を入力します。
- (オプション) プライマリユーザーの ARN がわからない場合は、そのプライマリユーザーを変更して新しい IAM ARN を指定します。
- [送信] を選択します。
「Invalid identity pool configuration」エラー
Amazon Cognito に認証済みユーザーの IAM ロールを引き受けるためのアクセス許可がない場合、次のエラーが発生することがあります。
「com.amazonaws.services.cognitoidentity.model.InvalidIdentityPoolConfigurationException: Invalid identity pool configuration.Check assigned IAM roles for this pool. (ID プールの設定が無効です。このプールに割り当てられた IAM ロールを確認してください)(Service: AmazonCognitoIdentity; Status Code: 400; Error Code: InvalidIdentityPoolConfigurationException; Request ID: #####-####-####-####-#####)」
この問題を解決するには、IAM ロールの信頼関係を変更します。
次の手順を実行します。
-
Amazon IAM コンソールを開きます。
-
[ロール] を選択します。
-
該当する IAM ロールを選択します。
-
[信頼関係] タブを選択します。
-
[信頼関係の編集] を選択します。Amazon Cognito ID プールが IAM ロールを引き受けられることを確認します。
信頼ポリシーの例
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "cognito-identity.amazonaws.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"cognito-identity.amazonaws.com:aud": "identity-pool-id"
},
"ForAnyValue:StringLike": {
"cognito-identity.amazonaws.com:amr": "authenticated"
}
}
}
]
}
-
**[信頼ポリシーの更新]**を選択します。
詳細については、「チュートリアル: IAM マスターユーザーと Amazon Cognito 認証を使用してドメインを設定する」を参照してください。
ページをリクエストするとエラーが発生する
アプリクライアントの設定で、コールバック URL またはカスタムエンドポイントに構成ミスがある場合、次のエラーが発生することがあります。
「An error was encountered with the requested page」 (リクエストしたページでエラーが発生しました)
アプリクライアントの設定が正しく構成されていることを確認するには、次の手順を実行します。
-
Amazon Cognito コンソール を開きます。
-
[ユーザープールの管理] を選択します。
-
編集するユーザープールを選択します。
-
[アプリ統合] で、[アプリクライアント] メニューから OpenSearch アプリクライアントを選択します。
-
コールバック URL とサインアウト URL が正しく設定されていることを確認します。
URL の例
<dashboards-endpoint>/_dashboards/app/home
カスタムエンドポイントが有効なドメインの URL 例
<domain-custom-endpoint>/_dashboards/app/home
「CognitoIdentityCredentials is not authorized to perform」エラーが発生する
ログインしても OpenSearch ダッシュボードが表示されない場合に、次のエラーが発生することがあります。
「User: arn:aws:sts:: 123456789012:assumed-role/Cognito_identitypoolAuth_Role/CognitoIdentityCredentials is not authorized to perform: es:ESHttpGet」
デフォルトでは、ID プールの認証済み IAM ロールには、ダッシュボードへのアクセスに必要なアクセス許可が含まれていません。認証ロールの名前を特定し、OpenSearch Service アクセスポリシーに追加するには、次の手順を実行します。
- Amazon Cognito コンソール を開きます。
- [ID プールの管理] を選択します。
- [ID プールの編集] を選択します。
- 認証ロールを OpenSearch Service ドメインのアクセスポリシーに追加します。
注: 認証されたユーザーには、リソースベースのポリシーを使用することをおすすめします。認証ロールを使用すると、OpenSearch ダッシュボードでの Amazon Cognito 認証を具体的に制御できます。
関連情報
設定に関する一般的な問題