翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Cognito ID ソースの使用
Verified Permissions は Amazon Cognito ユーザープールと緊密に連携します。Amazon Cognito JWTsは予測可能な構造です。Verified Permissions はこの構造を認識し、含まれている情報から最大限のメリットを得ます。たとえば、ID トークンまたはアクセストークンを使用して、ロールベースのアクセスコントロール (RBAC) 認可モデルを実装できます。
新しい Amazon Cognito ユーザープール ID ソースには、次の情報が必要です。
-
AWS リージョン。
-
ユーザープール ID。
-
ID ソースに関連付けるプリンシパルエンティティタイプ。例:
MyCorp::User
。 -
ID ソースに関連付けるプリンシパルグループエンティティタイプ。例:
MyCorp::UserGroup
。 -
ポリシーストアへのリクエストを許可するユーザープールのクライアント IDs。
Verified Permissions は同じ 内の Amazon Cognito ユーザープールでのみ機能するため AWS アカウント、別のアカウントで ID ソースを指定することはできません。Verified Permissions は、ユーザープールプリンシパルを操作するポリシーで参照する必要がある ID ソース識別子であるエンティティプレフィックスを、 などのユーザープールの 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
-
実行時に追加されたカスタムクレーム
-
sub
や などの OIDC 標準クレームemail
これらのクレームの詳細と、 の Verified Permissions ポリシーでそれらを管理する方法について説明しますAmazon Cognito トークンをスキーマにマッピングする。
重要
Amazon Cognito トークンは有効期限が切れる前に取り消すことができますが、JWT は署名と有効性を備えた自己完結型のステートレスリソースと見なされます。JSON ウェブトークン 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 のユーザープール ID ソースの 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 Verified Permissions による認可」を参照してください。