如何使用 OpenSearch Dashboards 對 Amazon Cognito 身分驗證問題進行疑難排解?

3 分的閱讀內容
0

我嘗試使用 Amazon OpenSearch Service 叢集上的 Amazon Cognito 身分驗證來存取 OpenSearch Dashboards。但是,我收到錯誤訊息或遇到登入問題。

解決方案

輸入 OpenSearch Dasboards URL 時,登入頁面不會顯示

您可能會因為以下幾個原因,從 OpenSearch Dashboards URL 重新導向至 Dashboards 儀表板:

  • 您已使用 IP 型網域存取政策,允許本機電腦的公有 IP 地址存取儀表板。請務必在網域存取政策中新增 Amazon Cognito 經過身分驗證的角色。如果您未新增已驗證的角色,則存取政策的行為就像一般政策一樣。
  • 請求由許可的 AWS Identity 存取管理 (IAM) 使用者或角色簽署。當您存取儀表板 URL 時,請避免使用任何儀表板代理方法來簽署您的請求。
  • 您的 OpenSearch Service 網域位於 Virtual Private Cloud (VPC) 中,而您的網域具有開放存取政策。在此情況下,所有 VPC 使用者都可存取儀表板和網域,而無需 Amazon Cognito 身分驗證。

**注意:**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 身分集區擔任的角色必須與您為主要使用者或潛在使用者指定的 IAM 角色相符。

若要讓主要或潛在使用者的 IAM 角色符合擔任的 Amazon Cognito 角色,請完成下列步驟:

1.開啟 OpenSearch Service 主控台

2.從導覽窗格的 Managed clusters (受管理的叢集) 下,選擇 Domains (網域)。

3.選擇 Actions (動作)。

4.選擇編輯安全組態

5.在 Fine-grained access control (精細的存取控制) 下,選擇 Set IAM role (設定 IAM 角色) 為主要使用者或潛在使用者。確保指定 Amazon Cognito 身分驗證角色的 ARN。

6.(選用) 如果您忘記主要或潛在使用者的 ARN (或角色的其他組態詳細資訊),請修改主要或潛在使用者。當您重新設定主要使用者或潛在使用者時,可以指定新的 IAM ARN。

7.選擇 提交

無效的身分集區組態錯誤

使用 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 console (Amazon IAM 主控台)。

2.選擇 Roles (角色)。

3.選取您的 IAM 角色。

4.選擇 Trust relationships (信任關係) 索引標籤。

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.選擇更新信任政策

如需有關更新已開啟精細的存取控制 (FGAC) 的 IAM 角色政策詳細資訊,請參閱教學課程:設定具有 IAM 主要使用者和 Amazon Cognito 身分驗證的網域

重新導向不相符錯誤

如果您嘗試使用儀表板 URL 或自訂端點 URL 存取 OpenSearch Service 中的 OpenSearch Dashboards,則可能會收到以下錯誤:

"An error was encountered with the requested page"

當您在 Amazon Cognito 的應用程式用戶端設定中缺少回呼 URL 組態時,就會出現上述錯誤。

若要檢查您的應用程式用戶端設定是否已正確設定,請執行下列步驟:

1.開啟 Amazon Cognito 主控台

2.選擇 Manage User Pools (管理使用者集區)。

3.選取您要編輯的使用者集區。

4.在主控台左側的 App integration (應用程式整合) 下,從 App Client (應用程式用戶端) 選擇 OpenSearch 應用程式用戶端

5.驗證 callback URL(s) (回呼 URL) 和 sign out URL(s) (登出 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 角色不會包含存取儀表板所需的權限。完成下列步驟,以尋找經身分驗證角色的名稱,並將其新增至 OpenSearch Service 存取政策:

1.開啟 Amazon Cognito 主控台

2.選擇 Manage Identity Pools (管理身分集區)。

3.在主控台右上角,選擇 Edit identity pool (編輯身分集區)。

4.將經身分驗證的角色新增至您的 OpenSearch Service 網域存取政策。

**注意:**最佳實務是針對經身分驗證的使用者使用以資源型政策。經身分驗證的角色專門控制儀表板的 Amazon Cognito 身分驗證。因此,請勿從網域存取政策中移除其他資源。


相關資訊

常見組態問題

AWS 官方
AWS 官方已更新 1 年前