本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
組織中的個人在嘗試存取 Quick Sight 時,會收到「外部登入未經授權」訊息
| 目標對象:Amazon Quick Suite 管理員 |
當您組織中的個人使用 AssumeRoleWithWebIdentity 聯合到 Quick Sight 時,Quick Sight 會將單一角色型使用者映射到單一外部登入。在某些情況下,可能會透過與原始映射使用者不同的外部登入 (例如 Amazon Cognito) 對該個別人員進行驗證。若是如此,他們無法存取 Quick Sight 並收到下列非預期錯誤訊息。
用於聯合的外部登入對 Quick Sight 使用者未經授權。
若要了解如何對此問題進行疑難排解,請參閱下列章節:
為什麼會發生這種情況?
您正在使用簡化的 Amazon Cognito 流程
如果您使用 Amazon Cognito 聯合到 Quick Sight,則單一登入 (IAM Identity Center) 設定可能會使用 CognitoIdentityCredentials API 操作來擔任 Quick Sight 角色。此方法會將 Amazon Cognito 身分集區中的所有使用者映射至單一 Quick Sight 使用者,Quick Sight 不支援。
建議您改用 AssumeRoleWithWebIdentity API 操作,此操作會指定角色工作階段名稱。
您正使用未經身分驗證 Amazon Cognito 使用者
Amazon Cognito IAM Identity Center 是針對 Amazon Cognito 身分池中未經驗證的使用者設定的。Quick Sight 角色信任政策的設定如下範例。
此設定允許臨時 Amazon Cognito 使用者擔任映射至唯一 Quick Sight 使用者的角色工作階段。由於未驗證的身分是暫時的,因此 Quick Sight 不支援這些身分。
建議您不要使用此設定,Quick Sight 不支援該設定。對於 Quick Sight,請確定 Amazon Cognito IAM Identity Center 使用已驗證的使用者。
您已刪除並重新建立具有相同使用者名稱屬性的 Amazon Cognito 使用者
在這種情況下,映射到 Quick Sight 使用者的相關聯 Amazon Cognito 使用者已刪除並重新建立。新建立的 Amazon Cognito 使用者具有不同的基礎主旨。根據角色工作階段名稱對應至 Quick Sight 使用者的方式,工作階段名稱可能會對應至相同的 Quick Sight 角色型使用者。
建議您使用 UpdateUser API 操作,將 Quick Sight 使用者重新對應至更新的 Amazon Cognito 使用者主體。如需詳細資訊,請參閱下列 UpdateUser API 範例。
您正在將不同 中的多個 Amazon Cognito 使用者集區映射 AWS 帳戶 至一個身分集區,並使用 Quick Sight
Quick Sight 不支援將不同 中的多個 Amazon Cognito 使用者集區對應 AWS 帳戶 至一個身分集區和 Quick Sight。
可以如何修正這個問題?
您可以使用 Quick Sight 公有 API 操作來更新使用者的外部登入資訊。使用下列選項來了解如何操作。
使用 RegisterUser 建立具有外部登入資訊的使用者
如果外部登入提供者是 Amazon Cognito,則請使用下列 CLI 程式碼建立使用者。
aws quicksight register-user --aws-account-idaccount-id--namespacenamespace--emailuser-email--user-roleuser-role--identity-type IAM --iam-arn arn:aws:iam::account-id:role/cognito-associated-iam-role--session-namecognito-username--external-login-federation-provider-type COGNITO --external-login-idcognito-identity-id--regionidentity-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-idaccount-id--namespacenamespace--emailuser-email--user-roleuser-role--identity-type IAM --iam-arn arn:aws:iam::account-id:role/identity-provider-associated-iam-role--session-nameidentity-username--external-login-federation-provider-type CUSTOM_OIDC --custom-federation-provider-urlcustom-identity-provider-url--external-login-idcustom-provider-identity-id--regionidentity-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 Quick Suite API 參考》中的 RegisterUser。
使用 DescribeUser 檢查使用者的外部登入資訊
如果使用者是來自外部登入提供者的以角色為基礎的聯合身分使用者,請使用 DescribeUser API 操作檢查該使用者的外部登入資訊,如下列程式碼所示。
aws quicksight describe-user --aws-account-idaccount-id--namespacenamespace--user-nameidentity-provider-associated-iam-role/identity-username--regionidentity-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 Quick Suite API 參考》中的 DescribeUser。
使用 UpdateUser 更新使用者的外部登入資訊
在某些情況下,您可能會發現 DescribeUser 結果中為使用者儲存的外部登入資訊不正確,或是外部登入資訊遺失。如果是這樣,您可以使用 UpdateUser API 操作對其進行更新。使用以下範例。
對於 Amazon Cognito 使用者,請使用以下內容。
aws quicksight update-user --aws-account-idaccount-id--namespacenamespace--user-namecognito-associated-iam-role/cognito-username--emailuser-email--roleuser-role--external-login-federation-provider-type COGNITO --external-login-idcognito-identity-id--regionidentity-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-idaccount-id--namespacenamespace--user-nameidentity-provider-associated-iam-role/identity-username--emailuser-email--roleuser-role--external-login-federation-provider-type CUSTOM_OIDC --custom-federation-provider-urlcustom-identity-provider-url--external-login-idcustom-provider-identity-id--regionidentity-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-idaccount-id--namespacenamespace--user-nameidentity-provider-associated-iam-role/identity-username--emailuser-email--roleuser-role--external-login-federation-provider-type NONE --regionidentity-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
若要進一步了解如何在 CLI UpdateUser中使用 ,請參閱《Amazon Quick Suite API 參考》中的 UpdateUser。