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

所要時間3分
0

Amazon OpenSearch Service クラスターで Amazon Cognito 認証を使用して OpenSearch Dashboards にアクセスしようとしています。しかし、エラーが表示されるか、ログインの問題が発生します。

解決方法

OpenSearch Dasboards の URL を入力してもログインページが表示されない

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

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

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

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

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

OpenSearch Service ドメインの 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 Service コンソールを開きます。

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

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

4.[Edit security configuration] (セキュリティ設定の編集) を選択します。

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 ロールポリシーの更新の詳細については、「チュートリアル: IAM マスターユーザーと Amazon Cognito 認証を使用してドメインを設定する」を参照してください。

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

Dashboards URL またはカスタムエンドポイント URL を使用して OpenSearch Service 上の 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 integration] (アプリ統合) で、[App client] (アプリクライアント) から OpenSearch [App Client] (アプリクライアント) を選択します。

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 Service アクセスポリシーに追加します。

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

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

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

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

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


関連情報

一般的な設定の問題

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ