我組織中的個人在嘗試訪問 Amazon 時收到「外部登錄未經授權」消息 QuickSight - Amazon QuickSight

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

我組織中的個人在嘗試訪問 Amazon 時收到「外部登錄未經授權」消息 QuickSight

   目標對象:Amazon QuickSight 管理員 

當組織中的個人使用聯合至 Amazon 時 AssumeRoleWithWebIdentity,會將單一以角色為基礎的 QuickSight 使用者對 QuickSight 應至單一外部登入。在某些情況下,可能會透過與原始映射使用者不同的外部登入 (例如 Amazon Cognito) 對該個別人員進行驗證。如果是這樣,他們將無法訪問 QuickSight 並收到以下意外錯誤消息。

用於同盟的外部登入對使用 QuickSight 者而言是未經授權的。

若要了解如何對此問題進行疑難排解,請參閱下列章節:

為什麼會發生這種情況?

您正在使用簡化的 Amazon Cognito 流程

如果您使用 Amazon Cognito 聯合 QuickSight,則單一登入 (IAM 身分中心) 設定可能會使用 CognitoIdentityCredentials API 操作來擔任該 QuickSight 角色。此方法會將 Amazon Cognito 身分識別集區中的所有使用者對應至單一 QuickSight 使用者,且 Amazon QuickSight 不支援此方法。

建議您改用 AssumeRoleWithWebIdentity API 操作,此操作會指定角色工作階段名稱。

您正使用未經身分驗證 Amazon Cognito 使用者

Amazon Cognito IAM Identity Center 是針對 Amazon Cognito 身分池中未經驗證的使用者設定的。QuickSight 角色信任原則的設定如下列範例所示。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-west-2:cognito-pool-id" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "unauthenticated" } } } ] }

此設定可讓臨時 Amazon Cognito 使用者假設對應至唯一使用QuickSight 者的角色工作階段。因為未經驗證的身分是暫時的,所以不受 QuickSight支援。

我們建議您不要使用此設定,因為 Amazon 不支援哪些設定 QuickSight。對於 Amazon QuickSight,請確保 Amazon Cognito IAM 身份中心使用經過身份驗證的用戶。

您已刪除並重新建立具有相同使用者名稱屬性的 Amazon Cognito 使用者

在此情況下,已刪除並重新建立對應至 Amazon 使用者的相關聯 Amazon Cognito QuickSight 使用者。新建立的 Amazon Cognito 使用者具有不同的基礎主旨。視角色工作階段名稱對應至QuickSight 使用者的方式而定,工作階段名稱可能會對應至相同以 QuickSight角色為基礎的使用者。

我們建議您使用 UpdateUser API 作業,將使用 QuickSight 者重新對應至更新的 Amazon Cognito 使用者主旨。如需詳細資訊,請參閱下列 UpdateUser API 範例

您正在將多個 Amazon Cognito 使用者集區映射AWS 帳戶到不同的身分集區,並且 QuickSight

將不同的 Amazon Cognito 使用者集區對應AWS 帳戶到一個身分集區,而且 Amazon QuickSight QuickSight 不支援這些使用者集區。

可以如何修正這個問題?

您可以使用 QuickSight 公用 API 作業更新使用者的外部登入資訊。使用下列選項來了解如何操作。

用 RegisterUser 於建立具有外部登入資訊的使用者

如果外部登入提供者是 Amazon Cognito,則請使用下列 CLI 程式碼建立使用者。

aws quicksight register-user --aws-account-id account-id --namespace namespace --email user-email --user-role user-role --identity-type IAM --iam-arn arn:aws:iam::account-id:role/cognito-associated-iam-role --session-name cognito-username --external-login-federation-provider-type COGNITO --external-login-id cognito-identity-id --region identity-region

external-login-id 應該是 Amazon Cognito 使用者的身分 ID。格式為 <identity-region>:<cognito-user-sub>,如下列範例所示。

aws quicksight register-user --aws-account-id 111222333 --namespace default --email cognito-user@amazon.com --user-role ADMIN --identity-type IAM --iam-arn arn:aws:iam::111222333:role/CognitoQuickSightRole --session-name cognito-user --external-login-federation-provider-type COGNITO --external-login-id us-east-1:12345678-1234-1234-abc1-a1b1234567 --region us-east-1

如果外部登入提供者是自訂 OpenID Connect (OIDC) 提供者,請使用下列 CLI 程式碼建立使用者。

aws quicksight register-user --aws-account-id account-id --namespace namespace --email user-email --user-role user-role --identity-type IAM --iam-arn arn:aws:iam::account-id:role/identity-provider-associated-iam-role --session-name identity-username --external-login-federation-provider-type CUSTOM_OIDC --custom-federation-provider-url custom-identity-provider-url --external-login-id custom-provider-identity-id --region identity-region

以下是範例。

aws quicksight register-user --aws-account-id 111222333 --namespace default --email identity-user@amazon.com --user-role ADMIN --identity-type IAM --iam-arn arn:aws:iam::111222333:role/CustomIdentityQuickSightRole --session-name identity-user --external-login-federation-provider-type CUSTOM_OIDC --custom-federation-provider-url idp.us-east-1.amazonaws.com/us-east-1_ABCDE --external-login-id 12345678-1234-1234-abc1-a1b1234567 --region us-east-1

若要進一步了解有關在 CLI RegisterUser 中使用的資訊,請參閱 Amazon QuickSight API 參考RegisterUser中的一節。

用於檢 DescribeUser 查使用者的外部登入資訊

如果使用者是來自外部登入提供者的以角色為基礎的聯合身分使用者,請使用 DescribeUser API 操作檢查該使用者的外部登入資訊,如下列程式碼所示。

aws quicksight describe-user --aws-account-id account-id --namespace namespace --user-name identity-provider-associated-iam-role/identity-username --region identity-region

以下是範例。

aws quicksight describe-user --aws-account-id 111222333 --namespace default --user-name IdentityQuickSightRole/user --region us-west-2

結果會包含外部登入資訊欄位 (如果有)。以下是範例。

{ "Status": 200, "User": { "Arn": "arn:aws:quicksight:us-east-1:111222333:user-default-IdentityQuickSightRole-user", "UserName": "IdentityQuickSightRole-user", "Email": "user@amazon.com", "Role": "ADMIN", "IdentityType": "IAM", "Active": true, "PrincipalId": "federated-iam-AROAAAAAAAAAAAAAA:user", "ExternalLoginFederationProviderType": "COGNITO", "ExternalLoginFederationProviderUrl": "cognito-identity.amazonaws.com", "ExternalLoginId": "us-east-1:123abc-1234-123a-b123-12345678a" }, "RequestId": "12345678-1234-1234-abc1-a1b1234567" }

若要進一步了解有關在 CLI DescribeUser 中使用的資訊,請參閱 Amazon QuickSight API 參考DescribeUser中的一節。

用於 UpdateUser 更新使用者的外部登入資訊

在某些情況下,您可能會發現 DescribeUser 結果中為使用者儲存的外部登入資訊不正確,或是外部登入資訊遺失。如果是這樣,您可以使用 UpdateUser API 操作對其進行更新。使用以下範例。

對於 Amazon Cognito 使用者,請使用以下內容。

aws quicksight update-user --aws-account-id account-id --namespace namespace --user-name cognito-associated-iam-role/cognito-username --email user-email --role user-role --external-login-federation-provider-type COGNITO --external-login-id cognito-identity-id --region identity-region

以下是範例。

aws quicksight update-user --aws-account-id 111222333 --namespace default --user-name CognitoQuickSightRole/cognito-user --email cognito-user@amazon.com --role ADMIN --external-login-federation-provider-type COGNITO --external-login-id us-east-1:12345678-1234-1234-abc1-a1b1234567 --region us-west-2

對於自訂 OIDC 提供者使用者,請使用以下內容。

aws quicksight update-user --aws-account-id account-id --namespace namespace --user-name identity-provider-associated-iam-role/identity-username --email user-email --role user-role --external-login-federation-provider-type CUSTOM_OIDC --custom-federation-provider-url custom-identity-provider-url --external-login-id custom-provider-identity-id --region identity-region

以下是範例。

aws quicksight update-user --aws-account-id 111222333 --namespace default --user-name IdentityQuickSightRole/user --email user@amazon.com --role ADMIN --external-login-federation-provider-type CUSTOM_OIDC --custom-federation-provider-url idp.us-east-1.amazonaws.com/us-east-1_ABCDE --external-login-id 123abc-1234-123a-b123-12345678a --region us-west-2

如果您要刪除使用者的外部登入資訊,請使用 NONE external login federation provider type。使用下列 CLI 命令刪除外部登入資訊。

aws quicksight update-user --aws-account-id account-id --namespace namespace --user-name identity-provider-associated-iam-role/identity-username --email user-email --role user-role --external-login-federation-provider-type NONE --region identity-region

以下是範例。

aws quicksight update-user --aws-account-id 111222333 --namespace default --user-name CognitoQuickSightRole/cognito-user --email cognito-user@amazon.com --role ADMIN --external-login-federation-provider-type NONE --region us-west-2

若要進一步了解有關UpdateUser在 CLI 中使用的資訊,請參閱 Amazon QuickSight API 參考UpdateUser中的。