如何排查 OpenSearch 控制面板的 Amazon Cognito 身份验证问题?
我正在尝试在 Amazon OpenSearch Service 集群上使用 Amazon Cognito 身份验证访问 OpenSearch 控制面板。但是,我收到错误消息或遇到登录问题。
解决方法
输入 OpenSearch 控制面板 URL 时,未显示登录页面
出于以下几个原因,您可能会从 OpenSearch 控制面板 URL 重新导向到控制面板:
- 您使用了基于 IP 的域访问策略,该策略允许本地计算机的公有 IP 地址访问控制面板。因此,请务必在域访问策略中添加经过 Amazon Cognito 身份验证的角色。如果不添加经过身份验证的角色,则访问策略的行为将类似于普通策略。
- 请求由允许的 AWS Identity Access Management(IAM)用户或角色签署。访问控制面板 URL 时,请避免使用任何控制面板代理方法来签署您的请求。
- 您的 OpenSearch Service 域位于 Virtual Private Cloud (VPC) 中,并且您的域具有开放访问策略。在此情况下,所有 VPC 用户都可以在不进行 Amazon Cognito 身份验证的情况下访问控制面板和域。
**注意:**不需要进行 Amazon Cognito 身份验证。如需要求进行 Amazon Cognito 身份验证,请更改您的域访问策略。有关更多信息,请参阅配置访问策略。
如果您被重定向到 OpenSearch 控制面板登录页面但无法登录,则说明 Amazon Cognito 的配置不正确。要解决此问题,请考虑以下方法:
- 确认身份提供商已进行正确配置。
- 验证您的账户状态被设置为 "CONFIRMED"。您可以通过 Amazon Cognito 控制台的 User and groups(用户和组)页面查看账户状态。有关更多信息,请参阅注册并确认用户账户。
- 验证您使用的用户名和密码是否正确。
“Missing Role(缺少角色)”错误
如果您在 OpenSearch Service 域中的 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 Service 控制台。
2.在导航窗格的 Managed clusters(托管集群)下,选择 Domains(域)。
3.选择操作。
4.选择 Edit security configuration(编辑安全配置)。
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 Service 中的 OpenSearch 控制面板时,可能会收到以下错误消息:
"An error was encountered with the requested page"
当您缺少 Amazon Cognito 的应用程序客户端设置中的回调 URL 配置时,就会出现上述错误消息。
要检查您的应用程序客户端设置是否配置正确,请执行以下步骤:
1.打开 Amazon Cognito console(Amazon Cognito 控制台)。
2.选择 Manage User Pools (管理用户池)。
3.选择要编辑的用户池。
4.在控制台左侧的 App integration(应用程序集成)下,从 App client(应用程序客户端)中选择 OpenSearch App Client(应用程序客户端)。
5.确认回调 URL 和注销 URL 是否配置正确。例如:
<dashboards-endpoint>/_dashboards/app/home
对于启用自定义端点的域,callback URL(回调 URL)和 sign out 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 Service 访问策略:
1.打开 Amazon Cognito console(Amazon Cognito 控制台)。
2.选择 Manage Identity Pools (管理身份池)。
3.在控制台的右上角,选择 Edit identity pool (编辑身份池)。
4.将经过身份验证的角色添加到 OpenSearch Service 域访问策略中。
**注意:**最佳实践是将基于资源的策略用于经过身份验证的用户。经过身份验证的角色专用于控制控制面板的 Amazon Cognito 身份验证。因此,请勿从域访问策略中删除其他资源。
相关信息
相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 3 年前