

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

# Amazon Cognito ID ソースの使用
<a name="identity-sources-cognito"></a>

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](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html) には、Verified Permissions の承認決定に役立つさまざまな情報を含める機能があります。具体的には次のとおりです。

1. `cognito:` プレフィックス付きのユーザー名およびグループクレーム

1. を使用した[カスタムユーザー属性](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-custom-attributes) `custom: prefix`

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

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

これらのクレームの詳細と、 の Verified Permissions ポリシーでそれらを管理する方法について説明します[Amazon Cognito トークンをスキーマにマッピングする](cognito-map-token-to-schema.md)。

**重要**  
 Amazon Cognito トークンは有効期限が切れる前に取り消すことができますが、JWTsは署名と有効性を備えたステートレスリソースと見なされます。[JSON ウェブトークン RFC 7519](https://datatracker.ietf.org/doc/html/rfc7519) に準拠するサービスは、トークンをリモートで検証することが想定されており、発行者による検証は必須ではありません。つまり、Verified Permissions は、後で削除されたユーザーに対して取り消されたトークンまたは発行されたトークンに基づいてアクセスを許可できます。このリスクを軽減するために、有効期間をできるだけ短くしてトークンを作成し、ユーザーのセッションを継続する権限を削除したい場合は更新トークンを取り消すことをお勧めします。詳細については、[「トークン失効によるユーザーセッションの終了](https://docs.aws.amazon.com/cognito/latest/developerguide/token-revocation.html)」を参照してください。

次の例は、プリンシパルに関連付けられた 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](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_IsAuthorizedWithToken.html) を使用した認可リクエストは で失敗します`ValidationException`。

クレームのマッピングの詳細については、「」を参照してください[Amazon Cognito トークンをスキーマにマッピングする](cognito-map-token-to-schema.md)。 Amazon Cognito ユーザーの認可の詳細については、[「Amazon Cognito デベロッパーガイド」の「Amazon Verified Permissions を使用した認可](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-authorization-with-avp.html)」を参照してください。 *Amazon Cognito *

**Topics**
+ [Amazon Verified Permissions Amazon Cognito ID ソースの作成](cognito-create.md)
+ [Amazon Verified Permissions Amazon Cognito ID ソースの編集](cognito-edit.md)
+ [Amazon Cognito トークンをスキーマにマッピングする](cognito-map-token-to-schema.md)
+ [のクライアントとオーディエンスの検証 Amazon Cognito](cognito-validation.md)