使用 Amazon Cognito 身分來源 - Amazon Verified Permissions

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

使用 Amazon Cognito 身分來源

Verified Permissions 與 Amazon Cognito 使用者集區緊密搭配運作。Amazon Cognito JWTs具有可預測的結構。Verified Permissions 會辨識此結構,並從其中包含的資訊中取得最大利益。例如,您可以使用 ID 字符或存取權杖實作角色型存取控制 (RBAC) 授權模型。

新的 Amazon Cognito 使用者集區身分來源需要以下資訊:

  • AWS 區域。

  • 使用者集區 ID。

  • 您要與身分來源建立關聯的主體實體類型,例如 MyCorp::User

  • 您要與身分來源建立關聯的委託人群組實體類型,例如 MyCorp::UserGroup

  • 使用者集區的用戶端 IDs,您想要授權 向您的政策存放區提出請求。

由於 Verified Permissions 僅適用於相同 中的 Amazon Cognito 使用者集區 AWS 帳戶,因此您無法在另一個帳戶中指定身分來源。Verified Permissions 會將作用於使用者集區主體的政策中必須參考的身分來源識別符,設定為使用者集區的 ID,例如 us-west-2_EXAMPLE。在此情況下,您會參考該使用者集區中 ID a1b2c3d4-5678-90ab-cdef-EXAMPLE22222為 的使用者 us-west-2_EXAMPLE|a1b2c3d4-5678-90ab-cdef-EXAMPLE22222

使用者集區字符宣告可以包含屬性、範圍、群組、用戶端 IDs 和自訂資料。Amazon Cognito JWTs能夠包含各種資訊,有助於在 Verified Permissions 中做出授權決策。其中包含:

  1. 具有cognito:字首的使用者名稱和群組宣告

  2. 使用 自訂使用者屬性 custom: prefix

  3. 在執行時間新增的自訂宣告

  4. OIDC 標準宣告,例如 subemail

我們會詳細說明這些宣告,以及如何在 的 Verified Permissions 政策中管理這些宣告將 Amazon Cognito 權杖映射至結構描述

重要

雖然您可以在過期前撤銷 Amazon Cognito 權杖,但 JWTs被視為具有簽章和有效性的獨立無狀態資源。符合 JSON Web 權杖 RFC 7519 的服務預期會從遠端驗證權杖,而且不需要向發行者驗證權杖。這表示 Verified Permissions 可以根據稍後刪除的使用者撤銷或發出的字符授予存取權。若要降低此風險,建議您以最短的有效期間建立權杖,並在想要移除繼續使用者工作階段的授權時撤銷重新整理權杖。如需詳細資訊,請參閱使用字符撤銷結束使用者工作階段

以下範例示範如何建立參考與委託人相關聯之部分 Amazon Cognito 使用者集區宣告的政策。

permit( principal, action, resource == ExampleCo::Photo::"VacationPhoto94.jpg" ) when { principal["cognito:username"]) == "alice" && principal["custom:department"]) == "Finance" };

下列範例示範如何建立政策,以參考 Cognito 使用者集區中的使用者委託人。請注意,主體 ID 採用 的形式"<userpool-id>|<sub>"

permit( principal == ExampleCo::User::"us-east-1_example|a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", action, resource == ExampleCo::Photo::"VacationPhoto94.jpg" );

Verified Permissions 中使用者集區身分來源的 Cedar 政策針對包含英數字元和底線 () 以外的字元的宣告名稱使用特殊語法_。這包括包含:字元的使用者集區字首宣告,例如 cognito:usernamecustom:department。若要撰寫參考 cognito:usernamecustom:department宣告的政策條件principal["custom:department"],請分別將它們寫入 principal["cognito:username"]和 。

注意

如果字符包含具有 cognito:custom:字首的宣告,以及具有常值 cognito或 的宣告名稱custom,則具有 IsAuthorizedWithToken 的授權請求將使用 失敗ValidationException

如需映射宣告的詳細資訊,請參閱 將 Amazon Cognito 權杖映射至結構描述。如需 Amazon Cognito 使用者授權的詳細資訊,請參閱《Amazon Amazon Cognito開發人員指南》中的使用 Amazon 驗證許可授權