如何排查 OpenSearch 控制面板的 Amazon Cognito 身份验证问题?

上次更新时间:2021 年 10 月 20 日

我正在尝试在 Amazon OpenSearch Service(Amazon Elasticsearch Service 的后继者)集群上使用 Amazon Cognito 身份验证访问 OpenSearch 控制面板。但是,我收到错误消息或遇到登录问题。为什么会发生这种情况?

解决方法

我输入了 OpenSearch 控制面板 URL,但没有显示登录页面

注意:OpenSearch 控制面板是 Kibana 的后继者。

出于以下几个原因,您可能会从 OpenSearch 控制面板 URL 重新导向到 Dashboards 控制面板:

注意:不需要进行 Amazon Cognito 身份验证。如需要求进行 Amazon Cognito 身份验证,请更改您的域访问策略。有关更多信息,请参阅配置访问策略

我被重定向到 OpenSearch 控制面板登录页面,但无法登录

如果您被重定向到 OpenSearch 控制面板登录页面但无法登录,则说明 Amazon Cognito 的配置不正确。要解决此问题,请考虑以下方法:

“Missing Role”错误

如果您在 OpenSearch Services 域中的 OpenSearch 控制面板上启用了精细访问控制 (FGAC),则可能会收到以下错误消息:

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

当您的 IAM 主用户或潜在用户与正在担任的 Amazon Cognito 角色之间不匹配时,就会出现此错误消息。正在担任的角色(从您的 Amazon Cognito 身份池)必须与您为主用户或潜在用户指定的 IAM 角色匹配。

要使主用户或潜在用户的 IAM 角色与担任的 Amazon Cognito 角色相匹配,请执行以下步骤:

1.    导航到 OpenSearch Services 控制台。

2.    选择您的 OpenSearch Services 域。

3.    选择操作

4.    选择 Modify authentication (修改身份验证)

5.    在精细访问控制下,选择 Set IAM role (将 IAM 角色设置为) 主用户或潜在用户。确保指定 Amazon Cognito 身份验证角色的 ARN。

6.    (可选)如果忘记了主用户或潜在用户的 ARN(或角色的其他配置详细信息),请修改主用户或潜在用户。重新配置主用户或潜在用户时,可以指定新的 IAM ARN。

7.    选择 Submit (提交)

身份池配置无效错误

使用 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)

当 Amazon Cognito 没有代表经过身份验证的用户担任 IAM 角色的适当权限时,就会出现此错误消息。修改 IAM 角色的信任关系以包括以下内容:

1.    打开 Amazon IAM 控制台

2.    选择角色

3.    选择您的 IAM 角色。

4.    选择信任关系选项卡。

5.    选择 Edit trust relationship (编辑信任关系)。确保您的 Amazon Cognito 身份池可以担任 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

重定向不匹配错误

当您尝试使用控制面板 URL 或自定义终端节点 URL 访问 OpenSearch Services 上的 OpenSearch 控制面板时,可能会收到以下错误消息:

"An error was encountered with the requested page"

当您缺少 Amazon Cognito 的应用程序客户端设置中的回调 URL 配置时,就会出现此错误消息。

要检查您的应用程序客户端设置是否配置正确,请执行以下步骤:

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 控制面板,则可能会收到以下错误消息:

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

默认情况下,经过身份验证的身份池 IAM 角色不包括访问控制面板所需的权限。您可以通过执行以下操作找到经过身份验证的角色的名称,并将其添加到 OpenSearch 服务访问策略:

1.    导航至 Amazon Cognito 控制台

2.    选择 Manage Identity Pools (管理身份池)

3.    在控制台的右上角,选择 Edit identity pool (编辑身份池)

4.    将经过身份验证的角色添加到 OpenSearch Services 域访问策略中。

注意:最佳实践是将基于资源的策略用于经过身份验证的用户。经过身份验证的角色专用于控制面板的 Amazon Cognito 身份验证。因此,请勿从域访问策略中删除其他资源。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?