Amazon Cognito ID ソースの使用 - Amazon Verified Permissions

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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 の承認決定に役立つさまざまな情報を含める機能があります。具体的には次のとおりです。

  1. cognito: プレフィックスが付いたユーザー名およびグループクレーム

  2. を使用したカスタムユーザー属性 custom: prefix

  3. 実行時に追加されたカスタムクレーム

  4. sub や などの OIDC 標準クレーム email

これらのクレームの詳細と、 の Verified Permissions ポリシーでそれらを管理する方法について説明しますAmazon Cognito トークンをスキーマにマッピングする

重要

Amazon Cognito トークンは有効期限が切れる前に取り消すことができますが、JWT は署名と有効性を備えた自己完結型のステートレスリソースと見なされます。JSON ウェブトークン 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 のユーザープール ID ソースの Cedar ポリシーは、英数字とアンダースコア () 以外の文字を含むクレーム名に特別な構文を使用します_。これには、 cognito:usernameや などの:文字を含むユーザープールプレフィックスクレームが含まれますcustom:departmentcognito:username または custom:departmentクレームを参照するポリシー条件を記述するには、principal["custom:department"]それぞれ principal["cognito:username"]および として記述します。

注記

トークンに cognito:または custom:プレフィックスを持つクレームと、リテラル値 cognitoまたは を持つクレーム名が含まれている場合customIsAuthorizedWithToken による認可リクエストは で失敗しますValidationException

クレームのマッピングの詳細については、「」を参照してくださいAmazon Cognito トークンをスキーマにマッピングする。Amazon Cognito ユーザーの認可の詳細については、「Amazon Amazon Cognito デベロッパーガイド」の「Amazon Verified Permissions による認可」を参照してください。