OpenSearch Dashboards での Amazon Cognito 認証に関する問題をトラブルシューティングするにはどうすればよいですか?

最終更新日: 2021 年 10 月 20 日

Amazon OpenSearch Service (Amazon Elasticsearch Service の後継サービス) クラスターで Amazon Cognito 認証を使用して OpenSearch Dashboards にアクセスしようとしています。しかし、エラーが表示されるか、ログインの問題が発生します。この原因は何でしょうか?

解決方法

OpenSearch Dashboards URL を入力しましたが、ログインページが表示されません

注: OpenSearch Dashboards は Kibana の後継サービスです。

OpenSearch Dashboard URL から Dashboard のダッシュボードにリダイレクトされる理由はいくつか考えられます。

  • ローカルマシンのパブリック IP アドレスが Dashboards にアクセスすることを許可する IP ベースのドメインアクセスポリシーを使用しました。ドメインアクセスポリシーに Amazon Cognito 認証済みロールを追加してください。追加しない場合、アクセスポリシーは通常のポリシーのように動作します。
  • リクエストは、許可された AWS Identity Access Management (IAM) ユーザーまたはロールによって署名されます。Dashboards URL にアクセスするときは、リクエストに署名するために Dashboards プロキシメソッドを使用しないでください。
  • OpenSearch Servie ドメインは仮想プライベートクラウド (VPC) 内にあり、そのドメインにはオープンアクセスポリシーがあります。このシナリオでは、すべての VPC ユーザーが Amazon Cognito 認証なしで Dashboards とドメインにアクセスできます。したがって、ドメインアクセスポリシーに Amazon Cognito 認証済みロールを追加してください。

注: Amazon Cognito 認証は必要ありません。Amazon Cognito 認証を要求するには、ドメインアクセスポリシーを変更します。詳細については、アクセスポリシーの設定を参照してください。

OpenSearch Dashboards のログインページにリダイレクトされましたが、ログインできません

OpenSearch Dashboards のログインページにリダイレクトされてログインできない場合は、Amazon Cognito が正しく設定されていません。この問題を解決するには、次の方法を検討してください。

「ロールがありません」というエラー

OpenSearch Services ドメインの OpenSearch Dashboards できめ細かなアクセスコントロール (FGAC) が有効になっている場合、次のエラーが表示される場合があります。

"Missing Role
No roles available for this user, please contact your system administrator."

このエラーは、IAM プライマリユーザーまたはリードユーザーと引き受けられようとしている Amazon Cognito ロールの間に不一致がある場合に発生します。(Amazon Cognito ID プールから) 引き受けられようとしているロールは、プライマリユーザーまたはリードユーザー用に指定した IAM ロールと一致する必要があります。

プライマリユーザーまたはリードユーザーの IAM ロールを、引き受けられようとしている Amazon Cognito ロールと一致させるには、次の手順を実行します。

1.    OpenSearch Services コンソールに移動します。

2.    OpenSearch Services ドメインを選択します。

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

4.    [Modify authentication] (認証を変更) を選択します。

5.    [Fine-grained access control] (きめ細かなアクセスコントロール) で、プライマリユーザーまたはリードユーザーとして [Set IAM role] (IAM ロールを設定) を選択します。Amazon Cognito 認証ロールの ARN を指定してください。

6.    (オプション) プライマリユーザーもしくはリードユーザーの ARN (またはロールの他の設定の詳細) を忘れた場合は、プライマリユーザーまたはリードユーザーを変更します。プライマリユーザーまたはリードユーザーを再設定する際に、新しい IAM ARN を指定できます。

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

ID プールの設定無効エラー

Amazon Cognito を使用してログインを正常に認証した後も、次のエラーが表示されることがあります。

com.amazonaws.services.cognitoidentity.model.InvalidIdentityPoolConfigurationException:
Invalid identity pool configuration. Check assigned IAM roles for this pool.
(Service: AmazonCognitoIdentity; Status Code: 400; Error Code:
InvalidIdentityPoolConfigurationException; Request ID:
xxxxx-xxxx-xxxx-xxxx-xxxxx)

このエラーメッセージは、認証されたユーザーに代わって IAM ロールを引き受けるための適切なアクセス許可が Amazon Cognito にない場合に発生します。IAM ロールの信頼関係を変更して、以下を含めます。

1.    Amazon IAM コンソールを開きます。

2.    ロールを選択します。

3.    IAM ロールを選択します。

4.    [Trust relationships] タブを選択します。

5.    [Edit trust relationship] (信頼関係の編集) を選択します。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"
      }
    }
  }]
}

6.    [Update Trust Policy] (信頼ポリシーの更新) を選択します。

きめ細かなアクセスコントロール (FGAC) が有効になっている IAM ロールポリシーの更新の詳細については、Tutorial: IAM primary user and Amazon Cognito を参照してください。

リダイレクトの不一致エラー

Dashboards URL またはカスタムエンドポイント URL を使用して OpenSearch Services 上の OpenSearch Dashboards にアクセスしようとすると、次のエラーが表示される場合があります。

"An error was encountered with the requested page"

このエラーは、Amazon Cognito の [App client settings] (アプリクライアントの設定) でコールバック URL 設定がない場合に発生します。

[App client settings] (アプリクライアントの設定) が正しく設定されていることを確認するには、次の手順を実行します。

1.    Amazon Cognito コンソールに移動します。

2.    [Manage User Pools] (ユーザープールの管理) を選択します。

3.    編集するユーザープールを選択します。

4.    コンソールの左側で、[App client settings] (アプリクライアントの設定) を選択します。

5.    コールバック URLサインアウト URL が正しく設定されていることを確認します。例:

<dashboards-endpoint>/_dashboards/app/home

カスタムエンドポイントが有効になっているドメインの場合、コールバック URLサインアウト URL は次のようになります。

<domain-custom-endpoint>/_dashboards/app/home

Amazon Cognito アイデンティティプール承認ロールのエラー

ログインできるが OpenSearch Dashboards が表示されない場合は、次のエラーが表示されることがあります。

User: arn:aws:sts:: 123456789012:assumed-role/Cognito_identitypoolAuth_Role/CognitoIdentityCredentials is not authorized to perform: es:ESHttpGet

デフォルトでは、アイデンティティプールの認証済み IAM ロールには、Dashboards にアクセスするために必要な特権は含まれません。認証済みロールの名前を検索し、OpenSearch Services アクセスポリシーに追加するには、次の操作を実行します。

1.    Amazon Cognito コンソールに移動します。

2.    [Manage Identity Pools] (ID プールを管理) を選択します。

3.    コンソールの右上にある [Edit identity pool] (ID プールを編集) を選択します。

4.    認証されたロールを OpenSearch Services ドメインアクセスポリシーに追加します。

注: 認証済みユーザーには、リソースベースのポリシーを使用することをお勧めします。認証されたロールは、特に Dashboards の Amazon Cognito 認証を制御します。したがって、ドメインアクセスポリシーから他のリソースを削除しないでください。


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


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