本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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 中做出授權決策。其中包含:
-
具有
cognito:
字首的使用者名稱和群組宣告 -
使用 自訂使用者屬性
custom: prefix
-
在執行時間新增的自訂宣告
-
OIDC 標準宣告,例如
sub
和email
我們會詳細說明這些宣告,以及如何在 的 Verified Permissions 政策中管理這些宣告將 Amazon Cognito 權杖映射至結構描述。
重要
雖然您可以在過期前撤銷 Amazon Cognito 權杖,但 JWTs被視為具有簽章和有效性的獨立無狀態資源。符合 JSON Web 權杖 RFC 7519
以下範例示範如何建立參考與委託人相關聯之部分 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:username
和 custom:department
。若要撰寫參考 cognito:username
或 custom:department
宣告的政策條件principal["custom:department"]
,請分別將它們寫入 principal["cognito:username"]
和 。
注意
如果字符包含具有 cognito:
或 custom:
字首的宣告,以及具有常值 cognito
或 的宣告名稱custom
,則具有 IsAuthorizedWithToken 的授權請求將使用 失敗ValidationException
。
如需映射宣告的詳細資訊,請參閱 將 Amazon Cognito 權杖映射至結構描述。如需 Amazon Cognito 使用者授權的詳細資訊,請參閱《Amazon Amazon Cognito開發人員指南》中的使用 Amazon 驗證許可授權。