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

最終更新日: 2021 年 1 月 27 日

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

解決方法

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

Kibana URL を入力し、Kibana ダッシュボードにリダイレクトされた場合、次のいずれかの理由が考えられます。

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

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

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

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

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

Amazon ES ドメインの Kibana できめ細かなアクセスコントロール (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.    Amazon ES コンソールに移動します。

2.    Amazon ES ドメインを選択します。

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 ロールポリシーの更新の詳細については、「チュートリアル: IAM プライマリユーザーと Amazon Cognito」をご参照ください。

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

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

"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 が正しく設定されていることを確認します。例:

<Kibana endpoint>/app/kibana

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

<Kibana custom endpoint URL>/app/kibana, <Kibana endpoint>/app/kibana

Amazon Cognito ID プール承認ロールのエラー

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

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

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

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

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

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

4.    認証済みロールを Amazon ES ドメインアクセスポリシーに追加します。

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


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


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