

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

# Amazon Cognito のセキュリティ
<a name="security"></a>

のクラウドセキュリティが最優先事項 AWS です。お客様は AWS 、セキュリティを最も重視する組織の要件を満たすように構築されたデータセンターとネットワークアーキテクチャを活用できます。

セキュリティは、 AWS お客様とお客様の間の責任共有です。[責任共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)ではこれをクラウドのセキュリティおよびクラウド内のセキュリティと説明しています。
+ **クラウドのセキュリティ** – AWS クラウドで AWS サービスを実行するインフラストラクチャを保護する AWS 責任があります。 AWS また、 では、安全に使用できるサービスも提供しています。サードパーティーの監査者は、[AWS コンプライアンスプログラム](https://aws.amazon.com/compliance/programs/)コンプライアンスプログラムの一環として、当社のセキュリティの有効性を定期的にテストおよび検証。Amazon Cognito に適用されるコンプライアンスプログラムの詳細については、「コンプライアンスプログラム[AWS による対象範囲内のサービスコンプライアンスプログラム](https://aws.amazon.com/compliance/services-in-scope/)」を参照してください。
+ **クラウドのセキュリティ** – お客様の責任は、使用する AWS サービスによって決まります。また、お客様は、お客様のデータの機密性、企業の要件、および適用可能な法律および規制などの他の要因についても責任を担います。

このドキュメントは、Amazon Cognito の使用時に責任共有モデルを適用する方法を理解するために役立ち、セキュリティおよびコンプライアンス上の目的を満たすように Amazon Cognito を設定する方法を説明します。また、Amazon Cognito リソースのモニタリングや保護に役立つ他の AWS サービスの使用方法についても説明します。

**Topics**
+ [Amazon Cognito でのデータ保護](data-protection.md)
+ [Amazon Cognito 向けの Identity and access management](security-iam.md)
+ [Amazon Cognito でのロギングとモニタリング](monitoring.md)
+ [インターフェイスエンドポイント (AWS PrivateLink) を使用して Amazon Cognito にアクセスする](vpc-interface-endpoints.md)
+ [Amazon Cognito のコンプライアンス検証](compliance-validation.md)
+ [Amazon Cognito の耐障害性](disaster-recovery-resiliency.md)
+ [Amazon Cognito のインフラストラクチャセキュリティ](infrastructure-security.md)
+ [Amazon Cognito ユーザープールの設定と脆弱性分析](vulnerability-analysis-and-management.md)
+ [AWS Amazon Cognito の マネージドポリシー](security-iam-awsmanpol.md)

# Amazon Cognito でのデータ保護
<a name="data-protection"></a>

責任 AWS [共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)、Amazon Cognito (Amazon Cognito) でのデータ保護に適用されます。このモデルで説明されているように、 AWS はすべての AWS クラウドを実行するグローバルインフラストラクチャを保護する責任があります。ユーザーは、このインフラストラクチャでホストされるコンテンツに対する管理を維持する責任があります。このコンテンツには、使用する AWS サービスのセキュリティ設定および管理タスクが含まれます。データプライバシーの詳細については、「[データプライバシーのよくある質問](https://aws.amazon.com/compliance/data-privacy-faq)」を参照してください。

データ保護の目的で、 AWS アカウントの認証情報を保護し、 AWS Identity and Access Management (IAM) を使用して個々のユーザーアカウントを設定することをお勧めします。この方法により、それぞれのジョブを遂行するために必要なアクセス許可のみを各ユーザーに付与できます。また、次の方法でデータを保護することをお勧めします。
+ 各アカウントで多要素認証 (MFA) を使用します。
+ SSL/TLS を使用して AWS リソースと通信します。
+ で API とユーザーアクティビティのログ記録を設定します AWS CloudTrail。
+  AWS 暗号化ソリューションと、 サービス内のすべての AWS デフォルトのセキュリティコントロールを使用します。
+ Amazon Macie などの高度なマネージドセキュリティサービスを使用します。これにより、Amazon S3 に保存される個人データの検出と保護が支援されます。

顧客のアカウント番号などの機密の識別情報は、**[名前]** フィールドなどの自由形式のフィールドに配置しないことを強くお勧めします。これは、コンソール、API、または SDK を使用して Amazon Cognito AWS CLIまたは他の AWS サービスを使用する場合も同様です。 AWS SDKs Amazon Cognito、またはその他のサービスに入力されたデータは、いずれも診断ログへの包含のために取得される可能性があります。外部サーバーへの URL を指定するときは、そのサーバーへのリクエストを検証するための認証情報を URL に含めないでください。

## データ暗号化
<a name="data-encryption"></a>

データ暗号化は、通常、保管時の暗号化と転送中の暗号化の 2 つのカテゴリに分類されます。

**保管時の暗号化**

Amazon Cognito 内のデータは、業界標準に従って保管時に暗号化されます。

Amazon Cognito は、[検索可能な暗号化](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/searchable-encryption.html)を使用したユーザー属性検索で個人を特定できる情報の機密性、完全性、可用性をサポートしています。これらのハッシュベースのメッセージ認証コード (HMAC) 関数は、ユーザープールデータセット向けにパフォーマンスが最適化されており、ユーザー属性のプレーンテキスト値と暗号化された値の間でマッピングされます。Amazon Cognito は、ユーザープールを暗号化する KMS キーを使用して HMAC 値を計算します。この保護は、次の属性に適用されます。
+ sub
+ E メール
+ phone\$1number
+ given\$1name
+ family\$1name
+ 名前
+ username
+ preferred\$1username
+ cognito:user\$1status

**転送時の暗号化**

マネージドサービスである Amazon Cognito は、 AWS グローバルネットワークセキュリティで保護されています。 AWS セキュリティサービスと がインフラストラクチャ AWS を保護する方法については、[AWS 「 クラウドセキュリティ](https://aws.amazon.com/security/)」を参照してください。インフラストラクチャセキュリティのベストプラクティスを使用して環境を AWS 設計するには、*「Security Pillar AWS Well‐Architected Framework*」の[「Infrastructure Protection](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html)」を参照してください。

 AWS 公開された API コールを使用して、ネットワーク経由で Amazon Cognito にアクセスします。クライアントは次をサポートする必要があります。
+ Transport Layer Security (TLS)。TLS 1.2 が必須で、TLS 1.3 をお勧めします。
+ DHE (楕円ディフィー・ヘルマン鍵共有) や ECDHE (楕円曲線ディフィー・ヘルマン鍵共有) などの完全前方秘匿性 (PFS) による暗号スイート。これらのモードは Java 7 以降など、ほとんどの最新システムでサポートされています。

Amazon Cognito ユーザープールおよび ID プールには、IAM 認証、非認証、およびトークン認証による API オペレーションがあります。認証されていない API オペレーションやトークン認証された API オペレーションは、お客様 (アプリケーションのエンドユーザー) による使用を目的としています。認証されていない API オペレーションとトークン認証された API オペレーションは、保管中および転送中に暗号化されます。詳細については、「[認可モデル別にグループ化された API オペレーションのリスト](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth)」を参照してください。

**注記**  
Amazon Cognito は、コンテンツを内部で暗号化します。お客様提供のキーはサポートしていません。

# Amazon Cognito 向けの Identity and access management
<a name="security-iam"></a>





AWS Identity and Access Management (IAM) は、管理者が AWS リソースへのアクセスを安全に制御 AWS のサービス するのに役立つ です。IAM 管理者は、誰を*認証*するか (サインインさせるか) と、誰に Amazon Cognito リソースの使用を*許可*するか (アクセス許可を付与するか) を制御します。IAM は、追加料金なしで使用できる AWS のサービス です。

**Topics**
+ [オーディエンス](#security_iam_audience)
+ [アイデンティティを使用した認証](#security_iam_authentication)
+ [ポリシーを使用したアクセスの管理](#security_iam_access-manage)
+ [Amazon Cognito で IAM が機能する仕組み](security_iam_service-with-iam.md)
+ [Amazon Cognito の ID ベースのポリシー例](security_iam_id-based-policy-examples.md)
+ [Amazon Cognito のアイデンティティとアクセスのトラブルシューティング](security_iam_troubleshoot.md)
+ [Amazon Cognito のサービスリンクロールの使用](using-service-linked-roles.md)

## オーディエンス
<a name="security_iam_audience"></a>

 AWS Identity and Access Management (IAM) の使用方法は、ロールによって異なります。
+ **サービスユーザー** - 機能にアクセスできない場合は、管理者にアクセス許可をリクエストします (「[Amazon Cognito のアイデンティティとアクセスのトラブルシューティング](security_iam_troubleshoot.md)」を参照)。
+ **サービス管理者** - ユーザーアクセスを決定し、アクセス許可リクエストを送信します (「[Amazon Cognito で IAM が機能する仕組み](security_iam_service-with-iam.md)」を参照)
+ **IAM 管理者** - アクセスを管理するためのポリシーを作成します (「[Amazon Cognito の ID ベースのポリシー例](security_iam_id-based-policy-examples.md)」を参照)

## アイデンティティを使用した認証
<a name="security_iam_authentication"></a>

認証は、ID 認証情報 AWS を使用して にサインインする方法です。、IAM ユーザー AWS アカウントのルートユーザー、または IAM ロールを引き受けることで認証される必要があります。

 AWS IAM アイデンティティセンター (IAM Identity Center)、シングルサインオン認証、Google/Facebook 認証情報などの ID ソースからの認証情報を使用して、フェデレーティッド ID としてサインインできます。サインインの詳細については、「*AWS サインイン ユーザーガイド*」の「[AWS アカウントにサインインする方法](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)」を参照してください。

プログラムによるアクセスの場合、 は SDK と CLI AWS を提供してリクエストを暗号化して署名します。詳細については、「*IAM ユーザーガイド*」の「[API リクエストに対するAWS 署名バージョン 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)」を参照してください。

### AWS アカウント ルートユーザー
<a name="security_iam_authentication-rootuser"></a>

 を作成するときは AWS アカウント、まず、すべての AWS のサービス および リソースへの完全なアクセス権を持つ AWS アカウント *root ユーザー*と呼ばれる 1 つのサインインアイデンティティから始めます。日常的なタスクには、ルートユーザーを使用しないことを強くお勧めします。ルートユーザー認証情報を必要とするタスクについては、「*IAM ユーザーガイド*」の「[ルートユーザー認証情報が必要なタスク](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)」を参照してください。

### フェデレーテッドアイデンティティ
<a name="security_iam_authentication-federated"></a>

ベストプラクティスとして、人間のユーザーが一時的な認証情報 AWS のサービス を使用して にアクセスするには、ID プロバイダーとのフェデレーションを使用する必要があります。

*フェデレーティッド ID* は、エンタープライズディレクトリ、ウェブ ID プロバイダー、または ID Directory Service ソースの認証情報 AWS のサービス を使用して にアクセスするユーザーです。フェデレーテッドアイデンティティは、一時的な認証情報を提供するロールを引き受けます。

アクセスを一元管理する場合は、 AWS IAM アイデンティティセンターをお勧めします。詳細については、「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[IAM アイデンティティセンターとは](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)」を参照してください。

### IAM ユーザーとグループ
<a name="security_iam_authentication-iamuser"></a>

*[IAM ユーザー](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)*は、特定の個人やアプリケーションに対する特定のアクセス許可を持つアイデンティティです。長期認証情報を持つ IAM ユーザーの代わりに一時的な認証情報を使用することをお勧めします。詳細については、*IAM ユーザーガイド*の[「ID プロバイダーとのフェデレーションを使用して にアクセスする必要がある AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)」を参照してください。

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)は、IAM ユーザーの集合を指定し、大量のユーザーに対するアクセス許可の管理を容易にします。詳細については、「*IAM ユーザーガイド*」の「[IAM ユーザーに関するユースケース](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html)」を参照してください。

### IAM ロール
<a name="security_iam_authentication-iamrole"></a>

*[IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)*は、特定のアクセス許可を持つアイデンティであり、一時的な認証情報を提供します。ユーザー[から IAM ロール (コンソール) に切り替えるか、 または API オペレーションを呼び出すことで、ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)を引き受けることができます。 AWS CLI AWS 詳細については、「*IAM ユーザーガイド*」の「[ロールを引き受けるための各種方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)」を参照してください。

IAM ロールは、フェデレーションユーザーアクセス、一時的な IAM ユーザーのアクセス許可、クロスアカウントアクセス、クロスサービスアクセス、および Amazon EC2 で実行するアプリケーションに役立ちます。詳細については、*IAM ユーザーガイド* の [IAM でのクロスアカウントリソースアクセス](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) を参照してください。

## ポリシーを使用したアクセスの管理
<a name="security_iam_access-manage"></a>

でアクセスを制御する AWS には、ポリシーを作成し、ID AWS またはリソースにアタッチします。ポリシーは、アイデンティティまたはリソースに関連付けられたときにアクセス許可を定義します。 は、プリンシパルがリクエストを行うときにこれらのポリシー AWS を評価します。ほとんどのポリシーは JSON ドキュメント AWS として に保存されます。JSON ポリシードキュメントの詳細については、「*IAM ユーザーガイド*」の「[JSON ポリシー概要](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)」を参照してください。

管理者は、ポリシーを使用して、どの**プリンシパル**がどの**リソース**に対して、どのような**条件**で**アクション**を実行できるかを定義することで、誰が何にアクセスできるかを指定します。

デフォルトでは、ユーザーやロールにアクセス許可はありません。IAM 管理者は IAM ポリシーを作成してロールに追加し、このロールをユーザーが引き受けられるようにします。IAM ポリシーは、オペレーションの実行方法を問わず、アクセス許可を定義します。

### アイデンティティベースのポリシー
<a name="security_iam_access-manage-id-based-policies"></a>

アイデンティティベースのポリシーは、アイデンティティ (ユーザー、グループ、またはロール) にアタッチできる JSON アクセス許可ポリシードキュメントです。これらのポリシーは、アイデンティティがどのリソースに対してどのような条件下でどのようなアクションを実行できるかを制御します。アイデンティティベースポリシーの作成方法については、*IAM ユーザーガイド* の [カスタマー管理ポリシーでカスタム IAM アクセス許可を定義する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) を参照してください。

アイデンティティベースのポリシーは、*インラインポリシー* (単一の ID に直接埋め込む) または*管理ポリシー* (複数の ID にアタッチされたスタンドアロンポリシー) にすることができます。管理ポリシーとインラインポリシーのいずれかを選択する方法については、「*IAM ユーザーガイド*」の「[管理ポリシーとインラインポリシーのいずれかを選択する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html)」を参照してください。

### リソースベースのポリシー
<a name="security_iam_access-manage-resource-based-policies"></a>

リソースベースのポリシーは、リソースに添付する JSON ポリシードキュメントです。例としては、IAM *ロール信頼ポリシー*や Amazon S3 *バケットポリシー*などがあります。リソースベースのポリシーをサポートするサービスでは、サービス管理者はポリシーを使用して特定のリソースへのアクセスを制御できます。リソースベースのポリシーでは、[プリンシパルを指定する](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)必要があります。

リソースベースのポリシーは、そのサービス内にあるインラインポリシーです。リソースベースのポリシーでは、IAM の AWS マネージドポリシーを使用できません。

### その他のポリシータイプ
<a name="security_iam_access-manage-other-policies"></a>

AWS は、より一般的なポリシータイプによって付与されるアクセス許可の上限を設定できる追加のポリシータイプをサポートしています。
+ **アクセス許可の境界** – アイデンティティベースのポリシーで IAM エンティティに付与することのできるアクセス許可の数の上限を設定します。詳細については、「*IAM ユーザーガイド*」の「[IAM エンティティのアクセス許可境界](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)」を参照してください。
+ **サービスコントロールポリシー (SCP)** - AWS Organizations内の組織または組織単位の最大のアクセス許可を指定します。詳細については、「*AWS Organizations ユーザーガイド*」の「[サービスコントロールポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)」を参照してください。
+ **リソースコントロールポリシー (RCP)** – は、アカウント内のリソースで利用できる最大数のアクセス許可を定義します。詳細については、「*AWS Organizations ユーザーガイド*」の「[リソースコントロールポリシー (RCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)」を参照してください。
+ **セッションポリシー** – ロールまたはフェデレーションユーザーの一時セッションを作成する際にパラメータとして渡される高度なポリシーです。詳細については、「*IAM ユーザーガイド*」の「[セッションポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)」を参照してください。

### 複数のポリシータイプ
<a name="security_iam_access-manage-multiple-policies"></a>

1 つのリクエストに複数のタイプのポリシーが適用されると、結果として作成されるアクセス許可を理解するのがさらに難しくなります。が複数のポリシータイプが関与する場合にリクエストを許可するかどうか AWS を決定する方法については、*「IAM ユーザーガイド*」の[「ポリシー評価ロジック](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)」を参照してください。

# Amazon Cognito で IAM が機能する仕組み
<a name="security_iam_service-with-iam"></a>

IAM を使用して Amazon Cognito へのアクセスを管理する前に、Amazon Cognito で利用できる IAM の機能を確認します。






**Amazon Cognito で使用できる IAM の機能**  

| IAM 機能 | Amazon Cognito サポート | 
| --- | --- | 
|  [アイデンティティベースのポリシー](#security_iam_service-with-iam-id-based-policies)  |   あり  | 
|  [リソースベースのポリシー](#security_iam_service-with-iam-resource-based-policies)  |   なし   | 
|  [ポリシーアクション](#security_iam_service-with-iam-id-based-policies-actions)  |   あり  | 
|  [ポリシーリソース](#security_iam_service-with-iam-id-based-policies-resources)  |   あり  | 
|  [ポリシー条件キー](#security_iam_service-with-iam-id-based-policies-conditionkeys)  |   あり  | 
|  [ACL](#security_iam_service-with-iam-acls)  |   なし   | 
|  [ABAC (ポリシー内のタグ)](#security_iam_service-with-iam-tags)  |   部分的  | 
|  [一時認証情報](#security_iam_service-with-iam-roles-tempcreds)  |   あり  | 
|  [プリンシパル権限](#security_iam_service-with-iam-principal-permissions)  |   いいえ   | 
|  [サービスロール](#security_iam_service-with-iam-roles-service)  |   あり  | 
|  [サービスリンクロール](#security_iam_service-with-iam-roles-service-linked)  |   はい  | 

Amazon Cognito およびその他の AWS のサービスがほとんどの IAM 機能と連携する方法の概要については、IAM *ユーザーガイド*の[AWS 「IAM と連携する のサービス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」を参照してください。

## Amazon Cognito の ID ベースのポリシー
<a name="security_iam_service-with-iam-id-based-policies"></a>

**アイデンティティベースのポリシーのサポート:** あり

アイデンティティベースポリシーは、IAM ユーザー、ユーザーグループ、ロールなど、アイデンティティにアタッチできる JSON 許可ポリシードキュメントです。これらのポリシーは、ユーザーとロールが実行できるアクション、リソース、および条件をコントロールします。アイデンティティベースポリシーの作成方法については、「*IAM ユーザーガイド*」の「[カスタマー管理ポリシーでカスタム IAM アクセス許可を定義する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。

IAM アイデンティティベースのポリシーでは、許可または拒否するアクションとリソース、およびアクションを許可または拒否する条件を指定できます。JSON ポリシーで使用できるすべての要素について学ぶには、「*IAM ユーザーガイド*」の「[IAM JSON ポリシーの要素のリファレンス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)」を参照してください。

### Amazon Cognito の ID ベースのポリシー例
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



Amazon Cognito の ID ベースのポリシー例については、「[Amazon Cognito の ID ベースのポリシー例](security_iam_id-based-policy-examples.md)」を参照してください。

## Amazon Cognito 内のリソースベースのポリシー
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**リソースベースのポリシーのサポート:** なし 

リソースベースのポリシーは、リソースに添付する JSON ポリシードキュメントです。リソースベースのポリシーには例として、IAM *ロールの信頼ポリシー* や Amazon S3 *バケットポリシー* があげられます。リソースベースのポリシーをサポートするサービスでは、サービス管理者はポリシーを使用して特定のリソースへのアクセスをコントロールできます。ポリシーがアタッチされているリソースの場合、指定されたプリンシパルがそのリソースに対して実行できるアクションと条件は、ポリシーによって定義されます。リソースベースのポリシーで、[プリンシパルを指定する](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)必要があります。プリンシパルには、アカウント、ユーザー、ロール、フェデレーティッドユーザー、または を含めることができます AWS のサービス。

クロスアカウントアクセスを有効にするには、全体のアカウント、または別のアカウントの IAM エンティティを、リソースベースのポリシーのプリンシパルとして指定します。詳細については、IAM ユーザーガイド**の[IAM でのクロスアカウントリソースアクセス](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)を参照してください。

## Amazon Cognito のポリシーアクション
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**ポリシーアクションのサポート:** あり

管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどの**リソース**に対してどのような**条件下で****アクション**を実行できるかということです。

JSON ポリシーの `Action` 要素にはポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。このアクションは関連付けられたオペレーションを実行するためのアクセス許可を付与するポリシーで使用されます。



Amazon Cognito アクションのリストについては、「サービス認可リファレンス」の「[Amazon Cognito ID で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncognitoidentity.html#amazoncognitoidentity-actions-as-permissions)」を参照してください。**

Amazon Cognito のポリシーアクションでは、アクションの前に、次のプレフィックスを使用します。

```
cognito-identity
```

単一のステートメントで複数のアクションを指定するには、アクションをカンマで区切ります。

```
"Action": [
      "cognito-identity:action1",
      "cognito-identity:action2"
         ]
```

### 署名された API と署名されていない API
<a name="security_amazon-cognito-signed-versus-unsigned-apis"></a>

 AWS 認証情報を使用して Amazon Cognito API リクエストに署名すると、 AWS Identity and Access Management (IAM) ポリシーで制限できます。 AWS 認証情報で署名する必要がある API リクエストには、サーバー側での `AdminInitiateAuth` を使用したサインイン、および `UpdateUserPool` などの Amazon Cognito リソースを作成、表示、または変更するアクションが含まれます。署名付き API リクエストの詳細については、[AWS 「 API リクエストの署名](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html)」を参照してください。

Amazon Cognito は、一般公開するアプリケーション用のコンシューマー ID 製品であるため、次の署名されていない API にアクセスできます。アプリケーションは、ユーザーと見込みユーザーに代わってこれらの API リクエストを行います。一部の API (`InitiateAuth` など) は、新しい認証セッションを開始するために、事前の認可を必要としません。一部の API (`VerifySoftwareToken` など) は、アクセストークンやセッションキーを認可に使用して、既存の認証済みセッションを持つユーザーの MFA 設定を完了します。署名されていない、承認済みの Amazon Cognito ユーザープール API は、[Amazon Cognito API リファレンス](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html)で示しているように、リクエスト構文での `Session` または `AccessToken` パラメータをサポートしています。署名されていない Amazon Cognito アイデンティティ API は、[Amazon Cognito フェデレーティッドアイデンティティ API リファレンス](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/Welcome.html)で示しているように、`IdentityId` パラメータをサポートしています。

Amazon Cognito ユーザープール API オペレーションの認可モデルとロールの詳細については、「[認可モデル別にグループ化された API オペレーションのリスト](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth)」を参照してください。

**Amazon Cognito アイデンティティプール API オペレーション**
+ `GetId`
+ `GetOpenIdToken`
+ `GetCredentialsForIdentity`
+ `UnlinkIdentity`

**Amazon Cognito ユーザープール API オペレーション**
+ `AssociateSoftwareToken`
+ `ChangePassword`
+ `ConfirmDevice`
+ `ConfirmForgotPassword`
+ `ConfirmSignUp`
+ `DeleteUser`
+ `DeleteUserAttributes`
+ `ForgetDevice`
+ `ForgotPassword`
+ `GetDevice`
+ `GetUser`
+ `GetUserAttributeVerificationCode`
+ `GlobalSignOut`
+ `InitiateAuth`
+ `ListDevices`
+ `ResendConfirmationCode`
+ `RespondToAuthChallenge`
+ `RevokeToken`
+ `SetUserMFAPreference`
+ `SetUserSettings`
+ `SignUp`
+ `UpdateAuthEventFeedback`
+ `UpdateDeviceStatus`
+ `UpdateUserAttributes`
+ `VerifySoftwareToken`
+ `VerifyUserAttribute`





Amazon Cognito の ID ベースのポリシー例については、「[Amazon Cognito の ID ベースのポリシー例](security_iam_id-based-policy-examples.md)」を参照してください。

## Amazon Cognito のポリシーリソース
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**ポリシーリソースのサポート:** あり

管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどの**リソース**に対してどのような**条件**下で**アクション**を実行できるかということです。

`Resource` JSON ポリシー要素はアクションが適用されるオブジェクトを指定します。ベストプラクティスとして、[Amazon リソースネーム (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) を使用してリソースを指定します。リソースレベルのアクセス許可をサポートしないアクションの場合は、ワイルドカード (\$1) を使用することで、ステートメントがすべてのリソースに適用されることを示します。

```
"Resource": "*"
```

### Amazon リソースネーム (ARN)
<a name="security_amazon-cognito-amazon-resource-names"></a>

**Amazon Cognito フェデレーティッド ID の ARN**

Amazon Cognito ID プール (フェデレーティッド ID) では、以下の例にあるように、Amazon リソースネーム (ARN) 形式を使用して IAM ユーザーのアクセスを特定の ID プールに制限することができます。ARN の詳細については、「[IAM 識別子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html)」を参照してください。

```
arn:aws:cognito-identity:REGION:ACCOUNT_ID:identitypool/IDENTITY_POOL_ID
```

**Amazon Cognito Sync の ARN**

Amazon Cognito Sync では、カスタマーがアイデンティティプール ID、アイデンティティ ID、およびデータセット名でアクセスを制限することもできます。

ID プールで動作する API の場合、サービス名が `cognito-identity` ではなく `cognito-sync` である場合を除いて、ID プールの ARN 形式が Amazon Cognito フェデレーティッド ID のものと同じになります。

```
arn:aws:cognito-sync:REGION:ACCOUNT_ID:identitypool/IDENTITY_POOL_ID
```

`RegisterDevice` などの単一のアイデンティティで動作する API については、以下の ARN 形式で個々のアイデンティティを参照できます。

```
arn:aws:cognito-sync:REGION:ACCOUNT_ID:identitypool/IDENTITY_POOL_ID/identity/IDENTITY_ID
```

データセットで動作する API (例えば、`UpdateRecords` および `ListRecords`) の場合、次の ARN 形式を使用して個別のデータセットを参照できます。

```
arn:aws:cognito-sync:REGION:ACCOUNT_ID:identitypool/IDENTITY_POOL_ID/identity/IDENTITY_ID/dataset/DATASET_NAME
```

**Amazon Cognito ユーザープールの ARN**

Amazon Cognito ユーザープールでは、以下の ARN 形式を使用して、ユーザーのアクセスを特定のユーザープールに制限することが可能です。

```
arn:aws:cognito-idp:REGION:ACCOUNT_ID:userpool/USER_POOL_ID
```

Amazon Cognito リソースのタイプと ARN のリストについては、「サービス認可リファレンス」の「[Amazon Cognito ID で定義されるリソースタイプ](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncognitoidentity.html#amazoncognitoidentity-resources-for-iam-policies)」を参照してください。**各リソースの ARN を指定できるアクションについては、「[Amazon Cognito で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncognitoidentity.html#amazoncognitoidentity-actions-as-permissions)」を参照してください。





Amazon Cognito の ID ベースのポリシー例については、「[Amazon Cognito の ID ベースのポリシー例](security_iam_id-based-policy-examples.md)」を参照してください。

## Amazon Cognito のポリシー条件キー
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**サービス固有のポリシー条件キーのサポート:** あり

管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどの**リソース**に対してどのような**条件下で****アクション**を実行できるかということです。

`Condition` 要素は、定義された基準に基づいてステートメントが実行される時期を指定します。イコールや未満などの[条件演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)を使用して条件式を作成して、ポリシーの条件とリクエスト内の値を一致させることができます。すべての AWS グローバル条件キーを確認するには、*「IAM ユーザーガイド*」の[AWS 「グローバル条件コンテキストキー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)」を参照してください。

Amazon Cognito の条件キーのリストについては、「サービス認可リファレンス」の「[Amazon Cognito ID の条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncognitoidentity.html#amazoncognitoidentity-policy-keys)」を参照してください。**条件キーを使用できるアクションとリソースについては、「[Amazon Cognito で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncognitoidentity.html#amazoncognitoidentity-actions-as-permissions)」を参照してください。

Amazon Cognito の ID ベースのポリシー例については、「[Amazon Cognito の ID ベースのポリシー例](security_iam_id-based-policy-examples.md)」を参照してください。

## Amazon Cognito のアクセスコントロールリスト (ACL)
<a name="security_iam_service-with-iam-acls"></a>

**ACL のサポート:** なし 

アクセスコントロールリスト (ACL) は、どのプリンシパル (アカウントメンバー、ユーザー、またはロール) がリソースにアクセスするためのアクセス許可を持つかを制御します。ACL はリソースベースのポリシーに似ていますが、JSON ポリシードキュメント形式は使用しません。

## Amazon Cognito の属性ベースのアクセス制御 (ABAC)
<a name="security_iam_service-with-iam-tags"></a>

**ABAC (ポリシー内のタグ) のサポート:** 一部

属性ベースのアクセスコントロール (ABAC) は、タグと呼ばれる属性に基づいてアクセス許可を定義する認可戦略です。IAM エンティティと AWS リソースにタグをアタッチし、プリンシパルのタグがリソースのタグと一致するときにオペレーションを許可するように ABAC ポリシーを設計できます。

タグに基づいてアクセスを管理するには、`aws:ResourceTag/key-name`、`aws:RequestTag/key-name`、または `aws:TagKeys` の条件キーを使用して、ポリシーの[条件要素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)でタグ情報を提供します。

サービスがすべてのリソースタイプに対して 3 つの条件キーすべてをサポートする場合、そのサービスの値は**あり**です。サービスが一部のリソースタイプに対してのみ 3 つの条件キーのすべてをサポートする場合、値は「**部分的**」になります。

ABAC の詳細については、「*IAM ユーザーガイド*」の「[ABAC 認可でアクセス許可を定義する](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)」を参照してください。ABAC をセットアップする手順を説明するチュートリアルについては、「*IAM ユーザーガイド*」の「[属性ベースのアクセスコントロール (ABAC) を使用する](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)」を参照してください。

## Amazon Cognito での一時的な認証情報の使用
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**一時的な認証情報のサポート:** あり

一時的な認証情報は、 AWS リソースへの短期的なアクセスを提供し、フェデレーションまたはスイッチロールの使用時に自動的に作成されます。 AWS では、長期的なアクセスキーを使用する代わりに、一時的な認証情報を動的に生成することをお勧めします。詳細については、「*IAM ユーザーガイド*」の「[IAM の一時的なセキュリティ認証情報](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)」と「[IAM と連携するAWS のサービス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」を参照してください。

## Amazon Cognito のクロスサービスプリンシパル許可
<a name="security_iam_service-with-iam-principal-permissions"></a>

**転送アクセスセッション (FAS) のサポート:** なし 

 転送アクセスセッション (FAS) は、 を呼び出すプリンシパルのアクセス許可と AWS のサービス、ダウンストリームサービス AWS のサービス へのリクエストをリクエストする を使用します。FAS リクエストを行う際のポリシーの詳細については、「[転送アクセスセッション](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)」を参照してください。

## Amazon Cognito のサービスロール
<a name="security_iam_service-with-iam-roles-service"></a>

**サービスロールのサポート:** あり

 サービスロールとは、サービスがユーザーに代わってアクションを実行するために引き受ける [IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)です。IAM 管理者は、IAM 内からサービスロールを作成、変更、削除できます。詳細については、IAM ユーザーガイド**の [AWS のサービスに許可を委任するロールを作成する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)を参照してください。

Amazon Cognito のサービスロールの詳細については、「[プッシュ同期を有効にする](identity-pools.md#enable-push-synchronization)」と「[プッシュ同期の実装](push-sync.md)」を参照してください。

**警告**  
サービスロールのアクセス許可を変更すると、Amazon Cognito の機能が破損する可能性があります。Amazon Cognito が指示する場合以外は、サービスロールを編集しないでください。

## Amazon Cognito のサービスにリンクされたロール
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**サービスリンクロールのサポート:** あり

 サービスにリンクされたロールは、 にリンクされたサービスロールの一種です AWS のサービス。サービスは、ユーザーに代わってアクションを実行するロールを引き受けることができます。サービスにリンクされたロールは に表示され AWS アカウント 、サービスによって所有されます。IAM 管理者は、サービスリンクロールのアクセス許可を表示できますが、編集することはできません。

Amazon Cognito のサービスにリンクされたロールの作成または管理の詳細については、「[Amazon Cognito のサービスリンクロールの使用](using-service-linked-roles.md)」を参照してください。

# Amazon Cognito の ID ベースのポリシー例
<a name="security_iam_id-based-policy-examples"></a>

デフォルトでは、ユーザーおよびロールには Amazon Cognito リソースを作成または変更するアクセス許可がありません。IAM 管理者は、リソースで必要なアクションを実行するための権限をユーザーに付与する IAM ポリシーを作成できます。

これらのサンプルの JSON ポリシードキュメントを使用して IAM アイデンティティベースのポリシーを作成する方法については、「*IAM ユーザーガイド*」の「[IAM ポリシーを作成する (コンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)」を参照してください。

Amazon Cognito が定義するアクションとリソースタイプ (リソースタイプごとの ARN の形式を含む) の詳細については、「サービス認可リファレンス」の「[Amazon Cognito のアクション、リソース、および条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncognitoidentity.html)」を参照してください。**

**Topics**
+ [ポリシーに関するベストプラクティス](#security_iam_service-with-iam-policy-best-practices)
+ [Amazon Cognito コンソールの使用](#security_iam_id-based-policy-examples-console)
+ [自分の権限の表示をユーザーに許可する](#security_iam_id-based-policy-examples-view-own-permissions)
+ [特定の ID プールにコンソールアクセスを制限する](#security_amazon-cognito-example-policies)
+ [プール内のすべての ID に対して特定のデータセットへのアクセスを許可する](#security_amazon-cognito-example-allow-access)

## ポリシーに関するベストプラクティス
<a name="security_iam_service-with-iam-policy-best-practices"></a>

ID ベースのポリシーは、アカウント内で誰が Amazon Cognito リソースを作成、アクセス、または削除できるを決定します。これらのアクションでは、 AWS アカウントに費用が発生する場合があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:
+ ** AWS 管理ポリシーを開始し、最小特権のアクセス許可に移行する** – ユーザーとワークロードにアクセス許可の付与を開始するには、多くの一般的なユースケースにアクセス許可を付与する*AWS 管理ポリシー*を使用します。これらは で使用できます AWS アカウント。ユースケースに固有の AWS カスタマー管理ポリシーを定義することで、アクセス許可をさらに減らすことをお勧めします。詳細については、*IAM ユーザーガイド* の [AWS マネージドポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) または [ジョブ機能のAWS マネージドポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) を参照してください。
+ **最小特権を適用する** – IAM ポリシーでアクセス許可を設定する場合は、タスクの実行に必要な許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、*最小特権*アクセス許可とも呼ばれています。IAM を使用して許可を適用する方法の詳細については、*IAM ユーザーガイド* の [IAM でのポリシーとアクセス許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) を参照してください。
+ **IAM ポリシーで条件を使用してアクセスをさらに制限する** - ポリシーに条件を追加して、アクションやリソースへのアクセスを制限できます。たとえば、ポリシー条件を記述して、すべてのリクエストを SSL を使用して送信するように指定できます。条件を使用して、サービスアクションが などの特定の を通じて使用されている場合に AWS のサービス、サービスアクションへのアクセスを許可することもできます CloudFormation。詳細については、*IAM ユーザーガイド* の [IAM JSON ポリシー要素:条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) を参照してください。
+ **IAM アクセスアナライザー を使用して IAM ポリシーを検証し、安全で機能的な権限を確保する** - IAM アクセスアナライザー は、新規および既存のポリシーを検証して、ポリシーが IAM ポリシー言語 (JSON) および IAM のベストプラクティスに準拠するようにします。IAM アクセスアナライザーは 100 を超えるポリシーチェックと実用的な推奨事項を提供し、安全で機能的なポリシーの作成をサポートします。詳細については、*IAM ユーザーガイド* の [IAM Access Analyzer でポリシーを検証する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) を参照してください。
+ **多要素認証 (MFA) を要求する** – で IAM ユーザーまたはルートユーザーを必要とするシナリオがある場合は AWS アカウント、MFA をオンにしてセキュリティを強化します。API オペレーションが呼び出されるときに MFA を必須にするには、ポリシーに MFA 条件を追加します。詳細については、*IAM ユーザーガイド* の [MFA を使用した安全な API アクセス](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) を参照してください。

IAM でのベストプラクティスの詳細については、*IAM ユーザーガイド* の [IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) を参照してください。

**注記**  
Amazon Cognito コンソールの元のバージョンと新しいバージョンでは、Amazon Cognito リソースを表示および変更するときの基本的な動作が異なります。条件 `aws:ViaAWSService` が true のときだけに `cognito-idp` サービスプレフィックスのアクションに許可を付与した場合、該当する IAM プリンシパルは、元のコンソールでは Amazon Cognito リソースに対して有効かもしれませんが、新しいコンソールでは使用できません。Amazon Cognito コンソールで作業を行うには、IAM ポリシーの Amazon Cognito アクセス許可に対して `aws:ViaAWSService` 条件を設定しないでください。

## Amazon Cognito コンソールの使用
<a name="security_iam_id-based-policy-examples-console"></a>

Amazon Cognito コンソールにアクセスするには、最小限の許可のセットが必要です。これらのアクセス許可により、 の Amazon Cognito リソースの詳細を一覧表示および表示できます AWS アカウント。最小限必要な許可よりも制限が厳しいアイデンティティベースのポリシーを作成すると、そのポリシーを持つエンティティ (ユーザーまたはロール) に対してコンソールが意図したとおりに機能しません。

 AWS CLI または AWS API のみを呼び出すユーザーには、最小限のコンソールアクセス許可を付与する必要はありません。代わりに、実行しようとしている API オペレーションに一致するアクションのみへのアクセスが許可されます。

ユーザーとロールが引き続き Amazon Cognito コンソールを使用できるようにするには、エンティティに Amazon Cognito `ConsoleAccess`または `ReadOnly` AWS 管理ポリシーもアタッチします。詳細については、「*IAM ユーザーガイド*」の「[ユーザーへのアクセス許可の追加](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)」を参照してください。

## 自分の権限の表示をユーザーに許可する
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

この例では、ユーザーアイデンティティにアタッチされたインラインおよびマネージドポリシーの表示を IAM ユーザーに許可するポリシーの作成方法を示します。このポリシーには、コンソールで、または AWS CLI または AWS API を使用してプログラムでこのアクションを実行するアクセス許可が含まれています。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

## 特定の ID プールにコンソールアクセスを制限する
<a name="security_amazon-cognito-example-policies"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cognito-identity:ListIdentityPools"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "cognito-identity:*"
            ],
            "Resource": "arn:aws:cognito-identity:us-east-1:111122223333:identitypool/us-east-1:1a1a1a1a-ffff-1111-9999-12345678"
        },
        {
            "Effect": "Allow",
            "Action": [
                "cognito-sync:*"
            ],
            "Resource": "arn:aws:cognito-sync:us-east-1:111122223333:identitypool/us-east-1:1a1a1a1a-ffff-1111-9999-12345678"
        }
    ]
}
```

------

## プール内のすべての ID に対して特定のデータセットへのアクセスを許可する
<a name="security_amazon-cognito-example-allow-access"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cognito-sync:ListRecords",
                "cognito-sync:UpdateRecords"
            ],
            "Resource": "arn:aws:cognito-sync:us-east-1:111122223333:identitypool/us-east-1:1a1a1a1a-ffff-1111-9999-12345678/identity/*/dataset/UserProfile"
        }
    ]
}
```

------







# Amazon Cognito のアイデンティティとアクセスのトラブルシューティング
<a name="security_iam_troubleshoot"></a>

以下の情報は、Amazon Cognito と IAM の使用時に発生する可能性がある一般的な問題の診断と修正に役立ちます。

**Topics**
+ [Amazon Cognito でアクションを実行する権限がない](#security_iam_troubleshoot-no-permissions)
+ [iam:PassRole を実行する権限がありません](#security_iam_troubleshoot-passrole)
+ [管理者として Amazon Cognito へのアクセスを他のユーザーに許可したい](#security_iam_troubleshoot-admin-delegate)
+ [AWS アカウント以外のユーザーに Amazon Cognito リソースへのアクセスを許可したい](#security_iam_troubleshoot-cross-account-access)

## Amazon Cognito でアクションを実行する権限がない
<a name="security_iam_troubleshoot-no-permissions"></a>

アクションを実行する権限がないというエラーが表示された場合は、そのアクションを実行できるようにポリシーを更新する必要があります。

次のエラー例は、`mateojackson` IAM ユーザーがコンソールを使用して、ある `my-example-widget` リソースに関する詳細情報を表示しようとしたことを想定して、その際に必要な `cognito-identity:GetWidget` アクセス許可を持っていない場合に発生するものです。

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: cognito-identity:GetWidget on resource: my-example-widget
```

この場合、`cognito-identity:GetWidget` アクションを使用して `my-example-widget` リソースへのアクセスを許可するように、`mateojackson` ユーザーのポリシーを更新する必要があります。

サポートが必要な場合は、 AWS 管理者にお問い合わせください。サインイン認証情報を提供した担当者が管理者です。

## iam:PassRole を実行する権限がありません
<a name="security_iam_troubleshoot-passrole"></a>

`iam:PassRole` アクションを実行する権限がないというエラーが表示された場合は、Amazon Cognito にロールを渡すことを許可するようにポリシーを更新する必要があります。

一部の AWS のサービス では、新しいサービスロールまたはサービスにリンクされたロールを作成する代わりに、既存のロールをそのサービスに渡すことができます。そのためには、サービスにロールを渡すアクセス許可が必要です。

次の例では、`marymajor` という名前の IAM ユーザーがコンソールを使用して Amazon Cognito でアクションを実行しようとした際に、エラーが発生しています。ただし、このアクションをサービスが実行するには、サービスロールから付与されたアクセス許可が必要です。Mary には、ロールをサービスに渡すアクセス許可がありません。

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

この場合、Mary のポリシーを更新してメアリーに `iam:PassRole` アクションの実行を許可する必要があります。

サポートが必要な場合は、 AWS 管理者にお問い合わせください。サインイン資格情報を提供した担当者が管理者です。

## 管理者として Amazon Cognito へのアクセスを他のユーザーに許可したい
<a name="security_iam_troubleshoot-admin-delegate"></a>

他のユーザーが Amazon Cognito にアクセスできるようにするには、アクセスが必要なユーザーまたはアプリケーションに許可を付与する必要があります。 AWS IAM アイデンティティセンター を使用してユーザーとアプリケーションを管理する場合は、アクセスレベルを定義する許可セットをユーザーまたはグループに割り当てます。アクセス許可セットは、ユーザーまたはアプリケーションに関連付けられている IAM ロールに自動的に IAM ポリシーを作成して割り当てます。詳細については、「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[アクセス許可セット](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html)」を参照してください。

IAM アイデンティティセンターを使用していない場合は、アクセスが必要なユーザーまたはアプリケーション用に IAM エンティティ (ユーザーまたはロール) を作成する必要があります。次に、Amazon Cognito で適切なアクセス許可を付与するポリシーをエンティティにアタッチする必要があります。許可が付与されたら、ユーザーまたはアプリケーション開発者に認証情報を提供します。これらの認証情報を使用して AWSにアクセスします。IAM ユーザー、グループ、ポリシー、アクセス許可の作成の詳細については、「*IAM ユーザーガイド*」の「[IAM アイデンティティ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)」と「[IAM のポリシーとアクセス許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)」を参照してください。

## AWS アカウント以外のユーザーに Amazon Cognito リソースへのアクセスを許可したい
<a name="security_iam_troubleshoot-cross-account-access"></a>

他のアカウントのユーザーや組織外の人が、リソースにアクセスするために使用できるロールを作成できます。ロールの引き受けを委託するユーザーを指定できます。リソースベースのポリシーまたはアクセスコントロールリスト (ACL) をサポートするサービスの場合、それらのポリシーを使用して、リソースへのアクセスを付与できます。

詳細については、以下を参照してください:
+ Amazon Cognito がこれらの機能をサポートしているかどうかについては、「[Amazon Cognito で IAM が機能する仕組み](security_iam_service-with-iam.md)」を参照してください。
+ 所有 AWS アカウント している のリソースへのアクセスを提供する方法については、IAM *ユーザーガイド*の[「所有 AWS アカウント している別の の IAM ユーザーへのアクセスを提供する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)」を参照してください。
+ リソースへのアクセスをサードパーティーに提供する方法については AWS アカウント、*IAM ユーザーガイド*の[「サードパーティー AWS アカウント が所有する へのアクセスを提供する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)」を参照してください。
+ ID フェデレーションを介してアクセスを提供する方法については、*IAM ユーザーガイド* の [外部で認証されたユーザー (ID フェデレーション) へのアクセスの許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) を参照してください。
+ クロスアカウントアクセスにおけるロールとリソースベースのポリシーの使用方法の違いについては、*IAM ユーザーガイド* の [IAM でのクロスアカウントのリソースへのアクセス](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) を参照してください。

# Amazon Cognito のサービスリンクロールの使用
<a name="using-service-linked-roles"></a>

Amazon Cognito は AWS Identity and Access Management (IAM)[ サービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)を使用します。サービスにリンクされたロールは、 がロール AWS のサービス を引き受けることを許可する信頼ポリシーを持つ一意のタイプの IAM ロールです。サービスにリンクされたロールは Amazon Cognito によって事前定義されており、サービスがユーザーに代わって他の AWS サービスを呼び出すために必要なすべてのアクセス許可が含まれています。

サービスリンクロールでは、必要な許可を手動で追加する必要がないため、Amazon Cognito の設定が簡単になります。Amazon Cognito は、そのサービスリンクロールの許可を定義します。別途定義されている場合を除き、Amazon Cognito しかそのロールを引き受けることができません。定義される許可は、信頼ポリシーと許可ポリシーに含まれており、その許可ポリシーを他の IAM エンティティにアタッチすることはできません。

サービスリンクロールを削除するには、まずその関連リソースを削除します。これは、Amazon Cognito リソースを保護します。リソースにアクセスするための許可を誤って削除できなくなくなるからです。

サービスにリンクされたロールをサポートする他のサービスについては、「[IAM と連携するAWS サービス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」を参照して、**サービスにリンクされたロール**列が**はい**になっているサービスを見つけてください。サービスにリンクされたロールに関するドキュメントをサービスで表示するには、**[Yes]** (はい) リンクを選択します。

## Amazon Cognito のサービスリンクロール許可
<a name="slr-permissions"></a>

Amazon Cognito は、以下のサービスリンクロールを使用します。
+ **AWSServiceRoleForAmazonCognitoIdpEmailService** – Amazon Cognito のユーザープールサービスが E メールの送信に Amazon SES アイデンティティを使用できるようにします。
+ **AWSServiceRoleForAmazonCognitoIdp** – Amazon Cognito のユーザープールが、Amazon Pinpoint プロジェクトのイベントを発行し、エンドポイントを設定できるようにします。

**AWSServiceRoleForAmazonCognitoIdpEmailService**

`AWSServiceRoleForAmazonCognitoIdpEmailService` サービスリンクロールは、ロールの引き受けについて以下のサービスを信頼します。
+ `email.cognito-idp.amazonaws.com`

このロールの許可ポリシーは、Amazon Cognito が指定されたリソースで以下のアクションを実行できるようにします。

**AWSServiceRoleForAmazonCognitoIdpEmailService に許可されるアクション:**
+ アクション: `ses:SendEmail` および `ses:SendRawEmail`
+ リソース: `*`

このポリシーは、Amazon Cognito が指定されたリソースで以下のアクションを完了することを拒否します。

**拒否されるアクション**
+ アクション: `ses:List*`
+ リソース: `*`

これらの許可を使用すると、Amazon Cognito は、ユーザーへの E メールの送信に Amazon SES で検証済みの E メールアドレスのみを使用することができます。Amazon Cognito は、ユーザーがユーザープールのクライアントアプリで特定のアクション (サインアップやパスワードのリセットなど) を実行するときに、ユーザーに E メールを送信します。

IAM エンティティ (ユーザー、グループ、ロールなど) がサービスリンクロールの作成、編集、削除を行うことを許可する許可を設定する必要があります。詳細については*IAM ユーザーガイド* の「[サービスにリンクされた役割のアクセス許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)」を参照してください。

**AWSServiceRoleForAmazonCognitoIdp**

サービスにリンクされたロール AWSServiceRoleForAmazonCognitoIdp は、以下のサービスを信頼してロールを引き受けます。
+ `email.cognito-idp.amazonaws.com`

このロールの許可ポリシーは、Amazon Cognito が指定されたリソースで以下のアクションを実行できるようにします。

**AWSServiceRoleForAmazonCognitoIdp に許可されるアクション**
+ アクション: `cognito-idp:Describe` 
+ リソース: `*`

この許可を使用すると、Amazon Cognito はユーザーに代わって `Describe` Amazon Cognito API オペレーションを呼び出すことができます。

**注記**  
`createUserPoolClient` と `updateUserPoolClient` を使用して Amazon Cognito を Amazon Pinpoint に統合すると、リソースのアクセス許可がインラインポリシーとして SLR に追加されます。インラインポリシーは、`mobiletargeting:UpdateEndpoint` および `mobiletargeting:PutEvents` 許可を提供します。これらの許可は、Amazon Cognito が、Cognito に統合された Pinpoint プロジェクトのためにイベントを発行し、エンドポイントを設定できるようにします。

## Amazon Cognito のサービスリンクロールの作成
<a name="create-slr"></a>

サービスリンクロールを手動で作成する必要はありません。Amazon SES 設定を使用して、 AWS マネジメントコンソール、、 AWS CLIまたは Amazon Cognito API で E メール配信を処理するようにユーザープールを設定すると、Amazon Cognito によってサービスにリンクされたロールが作成されます。

このサービスリンクロールを削除した後で再度作成する必要が生じた場合は同じ方法でアカウントにロールを再作成できます。Amazon SES 設定を使用してメール配信を処理するようにユーザープールを設定すると、Amazon Cognito がサービスリンクロールをもう一度作成します。

Amazon Cognito がこのロールを作成する前に、ユーザープールのセットアップに使用する IAM 許可に `iam:CreateServiceLinkedRole` アクションを含める必要があります。IAM での許可の更新に関する詳細については、*IAM ユーザーガイド*の「[IAM ユーザーの許可の変更](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)」を参照してください。

## Amazon Cognito のサービスリンクロールの編集
<a name="edit-slr"></a>

 AmazonCognitoIdp または AmazonCognitoIdpEmailService サービスにリンクされたロールは編集できません AWS Identity and Access Management。サービスリンクロールを作成すると、多くのエンティティによってロールが参照される可能性があるため、ロール名を変更することはできません。ただし、IAM を使用したロール記述の編集はできます。詳細については、「*IAM ユーザーガイド*」の「[サービスリンクロールの編集](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)」を参照してください。

## Amazon Cognito のサービスリンクロールの削除
<a name="delete-slr"></a>

サービスリンクロールを必要とする機能またはサービスが不要になった場合には、そのロールを削除することをお勧めします。ロールを削除すると、Amazon Cognito が積極的にモニタリングまたは維持しているエンティティのみを保持します。AmazonCognitoIdp または AmazonCognitoIdpEmailService サービスリンクロールを削除する前に、このロールを使用する各ユーザープールに対して以下のいずれかを実行する必要があります。
+ ユーザープールを削除する。
+ ユーザープールの E メール設定を更新して、デフォルトの E メール機能を使用する。デフォルト設定では、サービスリンクロールが使用されません。

ロールを使用するユーザープール AWS リージョン を使用して、各 で アクションを実行することを忘れないでください。

**注記**  
リソースを削除しようとするときに Amazon Cognito サービスがロールを使用している場合は、削除が失敗する可能性があります。失敗した場合は、数分待ってから操作を再試行してください。

**Amazon Cognito ユーザープールを削除する**

1. にサインイン AWS マネジメントコンソール し、 で Amazon Cognito コンソールを開きます[https://console.aws.amazon.com/cognito](https://console.aws.amazon.com/cognito)。

1. **[Manage User Pools]** (ユーザープールの管理) をクリックします。

1. **[Your User Pools]** (ユーザープール) ページで、削除するユーザープールを選択します。

1. **[Delete pool]** (プールの削除) をクリックします。

1. **[Delete user pool]** (ユーザープールの削除) ウィンドウで「**delete**」と入力し、**[Delete pool]** (プールの削除) をクリックします。

**デフォルトの E メール機能を使用するために Amazon Cognito ユーザープールを更新する**

1. にサインイン AWS マネジメントコンソール し、 で Amazon Cognito コンソールを開きます[https://console.aws.amazon.com/cognito](https://console.aws.amazon.com/cognito)。

1. **[Manage User Pools]** (ユーザープールの管理) をクリックします。

1. **[Your User Pools]** (ユーザープール) ページで、更新するユーザープールを選択します。

1. 左側のナビゲーションメニューで **[Message customizations]** (メッセージのカスタマイズ) をクリックします。

1. **[Do you want to send emails through your Amazon SES Configuration?]** (Amazon SES の設定を通じて E メールを送信しますか?) で **[No - Use Cognito (Default)]** (いいえ - Cognito を使用します (デフォルト)) を選択します。

1. E メールアカウントオプションの設定を終了したら、**[Save changes]** (変更の保存) をクリックします。

**サービスリンクロールを IAM で手動削除するには**

IAM コンソール、 AWS CLI、または AWS API を使用して、AmazonCognitoIdp または AmazonCognitoIdpEmailService サービスにリンクされたロールを削除します。詳細については、「*IAM ユーザーガイド*」の「[サービスにリンクされたロールの削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)」を参照してください。

## Amazon Cognito サービスリンクロールがサポートされるリージョン
<a name="slr-regions"></a>

Amazon Cognito は、サービスが利用可能なすべての AWS リージョン でサービスにリンクされたロールをサポートします。詳細については、「[AWS リージョン およびエンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html#cognito_identity_region)」を参照してください。

# Amazon Cognito でのロギングとモニタリング
<a name="monitoring"></a>

モニタリングは、Amazon Cognito およびその他の AWS ソリューションの信頼性、可用性、パフォーマンスを維持する上で重要な部分です。現在 Amazon Cognito では、組織と、その組織内で発生するアクティビティを監視することができるように、以下の AWS のサービス をサポートしています。
+ **AWS CloudTrail –** CloudTrail を使用すると、Amazon Cognito コンソールからの API コールとAmazon Cognito API オペレーションへのコードコールをキャプチャできます。例えば、ユーザーが認証すると、CloudTrail はリクエストの IP アドレス、リクエストの実行者、および実行日時などの詳細を記録できます。
+ **Amazon CloudWatch Logs** — CloudWatch Logs を使用すると、ユーザーアクティビティの詳細なログをロググループに送信できます。例えば、ユーザーアクティビティの詳細ログを確認して、ユーザーへの E メールや SMS メッセージの配信のトラブルシューティングを行うことができます。
+ **Amazon CloudWatch メトリクス** – CloudWatch メトリクスでは、監視、報告、およびイベントが発生した場合のほぼリアルタイムでの自動アクションの実行が可能です。例えば、提供されたメトリクスで CloudWatch ダッシュボードを作成して Amazon Cognito ユーザープールを監視する、または提供されたメトリクスで CloudWatch アラームを作成して、設定されたしきい値の超過を通知することができます。
+ **Amazon CloudWatch Logs Insights** – CloudWatch Logs Insights では、Amazon Cognito CloudTrail ログファイルをモニタリングするため、CloudWatch にイベントを送信するよう CloudTrail を設定できます。

**Topics**
+ [コストのモニタリングと管理](tracking-cost.md)
+ [Amazon Cognito ユーザープールからのログのエクスポート](exporting-quotas-and-usage.md)
+ [CloudWatch と Service Quotas でのクォータと使用状況の追跡](tracking-quotas-and-usage-in-cloud-watch-and-service-quotas.md)
+ [Amazon Cognito ログイン AWS CloudTrail](logging-using-cloudtrail.md)

# コストのモニタリングと管理
<a name="tracking-cost"></a>

他の と同様に AWS のサービス、Amazon Cognito の設定と使用状況が AWS 請求に与える影響を理解することが重要です。ユーザープールを本番環境にデプロイするための準備の一環として、アクティビティとリソースの消費のモニタリングと保護を設定します。どこを見ればよいか、またどのアクションが追加コストを発生させるかがわかれば、請求書を見て驚くことがないように予防措置を講じることができます。

Amazon Cognito は、使用量の次のディメンションに対して課金します。
+ ユーザープールの月間アクティブユーザー (MAU) — 料金は[機能プラン](cognito-sign-in-feature-plans.md)に応じて異なります
+ OIDC または SAML フェデレーションでサインインしたユーザープール MAU
+ クライアント認証情報の付与によるマシンツーマシン (M2M) 認可のリクエストボリューム
+ 一部のカテゴリのユーザープール API のデフォルトクォータ値を超える使用量の購入

さらに、E メールメッセージ、SMS メッセージ、Lambda トリガーなどのユーザープールの機能によって、依存サービスにコストが発生する可能性があります。完全な概要については、「[Amazon Cognito 料金](https://aws.amazon.com/cognito/pricing)」を参照してください。

## コストの表示と予測
<a name="tracking-cost-monitoring"></a>

製品の起動や、新しいユーザーベースへのオープンなどの大量のイベントは、MAU 数を増やし、コストに影響を与える可能性があります。新しいユーザー数を事前に見積もり、アクティビティが発生したときに監視します。クォータ値を追加購入してボリュームに対応させたり、追加のセキュリティ対策でボリュームを制御したりできます。

[AWS Billing and Cost Management コンソール](https://console.aws.amazon.com/billing/home)で AWS コストを表示およびレポートできます。Amazon Cognito の最新の請求額は、**[請求と支払い]** セクションで確認できます。**[請求書]** の **[サービス別料金]**で、`Cognito` をフィルタリングして使用状況を表示します。詳細については*AWS Billing ユーザーガイド*の[請求書の表示](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/getting-viewing-bill.html)を参照してください。

API リクエストレートをモニタリングするには、Service Quotas コンソールで **[使用状況]** メトリクスを確認します。例えば、クライアント認証情報リクエストは **[ClientAuthentication リクエストのレート]** として表示されます。請求書では、これらのリクエストは、それらを生成したアプリケーションクライアントに関連付けられています。この情報により、[マルチテナントアーキテクチャ](multi-tenant-application-best-practices.md)のテナントに公平にコストを割り当てることができます。

一定期間の M2M リクエストの数を取得するには、分析のために [AWS CloudTrail イベントを CloudWatch Logs](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/send-cloudtrail-events-to-cloudwatch-logs.html) に送信することもできます。クライアント認証情報のイベント付与を使用して `Token_POST` イベントのために CloudTrail イベントにクエリを設定します。次の CloudWatch Insights クエリはログを返します。

```
filter eventName = "Token_POST" and @message like '"grant_type":["client_credentials"]' | stats count(*)
```

## のコスト管理
<a name="tracking-cost-managing"></a>

Amazon Cognito は、ユーザー数、機能の使用状況、リクエストボリュームに基づいて請求します。Amazon Cognito のコストを管理するためのヒントを以下に紹介します。

**非アクティブなユーザーをアクティブ化しない**  
ユーザーをアクティブにする一般的なオペレーションは、サインイン、サインアップ、パスワードのリセットです。詳細なリストについては、「[月次のアクティブユーザー](quotas.md#monthly-active-users)」を参照してください。Amazon Cognito は、非アクティブなユーザーを請求にカウントしません。ユーザーをアクティブに設定するオペレーションは避けてください。ユーザーに対してクエリを行うには、[AdminGetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetUser.html) API オペレーションの代わりに、[ListUsers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) オペレーションを使用します。非アクティブなユーザーに対して、ユーザープールオペレーションの大量の管理テストを実行しないでください。

**フェデレーションユーザーのリンク**  
SAML 2.0 または OpenID Connect (OIDC) ID プロバイダーでサインインするユーザーは、[ローカルユーザー](cognito-terms.md#terms-localuser)よりもコストが高くなります。[これらのユーザーをローカルユーザープロファイルにリンク](cognito-user-pools-identity-federation-consolidate-users.md)できます。リンクされたユーザーは、フェデレーションユーザーに含まれる属性とアクセスを使用して、ローカルユーザーとしてサインインできます。SAML または OIDC IdPs のユーザーが、1 か月間、リンクされたローカルアカウントでのみサインインすると、ローカルユーザーとして課金されます。

**リクエストレートを管理する　**  
ユーザープールがクォータ値の上限に近づいている場合は、ボリュームを処理するための追加の容量の購入を検討してください。アプリケーション内のリクエストの量を減らせる場合があります。詳細については、「[クォータ制限のリクエストレートを最適化する](quotas.md#optimize-quotas)」を参照してください。

**必要な場合にのみ新しいトークンをリクエストする**  
クライアント認証情報の付与によるマシンツーマシン (M2M) 認証は、大量のトークンリクエストに達する可能性があります。新しいトークンリクエストはどれも、リクエストレートのクォータ量と請求の大きさに影響します。コストを最適化するには、アプリケーションの設計で、トークンの有効期限設定とトークン処理を含めます。
+ [アクセストークンをキャッシュ](amazon-cognito-user-pools-using-tokens-caching-tokens.md)して、アプリケーションが新しいトークンをリクエストしたときに、以前に発行されたトークンのキャッシュされたバージョンを受け取るようにします。この方法を実装すると、キャッシュプロキシは、以前に取得したトークンの有効期限を認識せずにアクセストークンをリクエストするアプリケーションに対するガードとして機能します。キャッシュトークンは、Lambda 関数や Docker コンテナなどの有効期間の短いマイクロサービスに最適です。
+ トークンの有効期限を考慮したトークン処理メカニズムをアプリケーションに実装します。以前のトークンの有効期限が切れるまで、新しいトークンをリクエストしないでください。ベストプラクティスとしては、トークンの有効期間の約 75% でトークンを更新します。このプラクティスでは、トークンの有効期間を最大化しながら、アプリケーションのユーザー継続性を確保できます。

  各アプリケーションの機密性と可用性のニーズを評価し、適切な有効期間でアクセストークンを発行するようにユーザープールアプリケーションクライアントを設定します。カスタムのトークン有効期間は、認証情報に対するリクエストの頻度を永続的に管理できる、存続期間の長い API やサーバーに最適です。

**AdminGetUser よりも ListUsers を使用する**  
ユーザープール内のユーザーの属性をクエリするには、[ListUsers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) API オペレーションおよび関連する [SDK](https://aws.amazon.com/developer/tools/) メソッドをできるだけ使用します。[AdminGetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetUser.html) を使用すると、ユーザーはその月のアクティブユーザーとしてマークされ、月間アクティブユーザー (MAU) 数に加算されて、ユーザープールの請求額の計算に使用されます。

**機能プランを管理する**  
ユーザープールで[機能プラン](cognito-sign-in-feature-plans.md)を選択すると、請求レートはユーザープール内のすべての MAU に適用されます。高レベルの機能プランに付属する機能を必要としないユーザーがいる場合は、そのユーザーを別のユーザープールに分離します。

# Amazon Cognito ユーザープールからのログのエクスポート
<a name="exporting-quotas-and-usage"></a>

CloudWatch ロググループなど AWS のサービス、追加のアクティビティの詳細ログを別のアクティビティに送信するようにユーザープールを設定できます。これらのログは、 のログよりも細かく AWS CloudTrail、ユーザープールのトラブルシューティングや[脅威保護](cognito-user-pool-settings-threat-protection.md)によるユーザーサインインアクティビティの分析に役立ちます。SMS および E メール通知エラーのログをストリーミングする場合、ユーザープールは `ERROR` レベルのログを CloudWatch ロググループに送信します。ユーザーサインインアクティビティのログをストリーミングする場合、ユーザープールは `INFO` レベルのログをロググループ、Amazon Data Firehose ストリーム、または Amazon S3 バケットに送信します。ユーザープールで両方のオプションを組み合わせることができます。

**Topics**
+ [ログエクスポートについて知っておくべきこと](#exporting-quotas-and-usage-things-to-know)
+ [E メールおよび SMS メッセージ配信エラーのエクスポート](#exporting-quotas-and-usage-messages)
+ [脅威保護ユーザーアクティビティログのエクスポート](#exporting-quotas-and-usage-user-activity)

## ログエクスポートについて知っておくべきこと
<a name="exporting-quotas-and-usage-things-to-know"></a>

**コストへの影響**  
Amazon Data Firehose、Amazon S3、CloudWatch Logs では、データインジェストと取得にコストが発生します。ログ記録設定が AWS 請求書に影響する可能性があります。詳細については次を参照してください:  
+ *Amazon CloudWatch の料金*の [Vended Logs](https://aws.amazon.com/cloudwatch/pricing/#Vended_Logs)。
+ [Amazon Data Firehose の料金](https://aws.amazon.com/firehose/pricing/)
+ [Amazon S3 の価格設定](https://aws.amazon.com/s3/pricing/)
ユーザーアクティビティログのエクスポートには、セキュリティ評価が含まれています。これはユーザープールの[脅威保護](cognito-user-pool-settings-threat-protection.md)の 1 つの機能です。Amazon Cognito は、脅威保護が**監査専用**モードまたは**フル機能**モードであり、ユーザープールでプラス[機能プラン](cognito-sign-in-feature-plans.md)が有効になっている場合にのみ、これらのログを生成します。

**ユーザーアクティビティログは `INFO` レベル**  
エクスポートされるユーザーアクティビティログは `INFO` エラーレベルに限られ、認証アクティビティの統計およびセキュリティ分析用の情報を提供します。`WARNING` および `ERROR` エラーレベル (スロットリングエラーなど) のメッセージは、エクスポートされるログに含まれません。

**ベストエフォート配信**  
Amazon Cognito からのログの配信はベストエフォートに基づきます。ユーザープールが配信するログの量と、CloudWatch Logs、Amazon S3、Firehose のサービスクォータは、ログの配信に影響を与える可能性があります。

**既存の外部ログは影響を受けません**  
これらのログオプションは、ユーザープールの以下のログ機能を置き換えたり変更したりするものではありません。  

1. サインアップやサインインなどの日常的なユーザーアクティビティの CloudTrail ログ。

1. CloudWatch メトリクスを使用した大規模なユーザーアクティビティの分析。
別に、CloudWatch Logs で [ユーザープールのインポート結果を CloudWatch コンソールに表示](cognito-user-pools-using-import-tool.md#cognito-user-pools-using-import-tool-cloudwatch) や [Lambda トリガーを使用したユーザープールワークフローのカスタマイズ](cognito-user-pools-working-with-lambda-triggers.md) のログを参照することもできます。Amazon Cognito と Lambda は、ユーザーアクティビティログ用に指定したロググループとは異なるロググループに、これらのログを保存します。

**ユーザープールにのみ適用されます**  
アイデンティティプールにログエクスポート機能はありません。

**ユーザーアクセス許可とサービスにリンクされたロールが必要です**  
ログのエクスポートを設定する AWS プリンシパルには、以下のトピックで説明するように、ターゲットリソースを変更するアクセス許可が必要です。Amazon Cognito はユーザーに代わって[サービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)を作成し、ターゲットリソースにログを配信するロールを引き受けます。  
Amazon Cognito からログを送信するための認可モデルの詳細については、「*Amazon CloudWatch Logs ユーザーガイド*」の「[AWS のサービスからのロギングを有効にする](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-vended-logs-permissions)」を参照してください。

**ログレベルはログタイプに排他的です**  
メッセージ配信ログは、`userNotification` タイプと `ERROR` エラーレベルのログです。高度なセキュリティユーザーアクティビティログは、`userAuthEvents` タイプと `INFO` エラーレベルのログです。`LogConfigurations` の 2 つのメンバーを組み合わせることができます。1 つは CloudWatch Logs の `userNotification` 用メンバーで、もう 1 つは Firehose、Amazon S3、または CloudWatch Logs の `userAuthEvents` 用メンバーです。  
ユーザーアクティビティログを複数の送信先に送信できません。CloudWatch Logs 以外の送信先にユーザー通知ログを送信できません。

**さまざまな設定オプション**  
ユーザー通知ログは、Amazon Cognito ユーザープール API または AWS SDK でのみ設定できます。API または Amazon Cognito コンソールで、高度なセキュリティユーザーアクティビティログを設定できます。両方を設定するには、[SetLogDeliveryConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetLogDeliveryConfiguration.html) のリクエスト例で示されているように API を使用します。

**大規模なリソースベースのポリシーで必要な追加設定**  
サイズが 5,120 文字を超えるリソースポリシーを持つロググループにログを送信するには、`/aws/vendedlogs` で始まるパスでロググループを設定します。詳細については、[「特定の AWS サービスからのログ記録の有効化](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html)」を参照してください。

**Amazon S3 でのフォルダの自動作成**  
Amazon S3 バケットに脅威保護ログをエクスポートするように設定すると、Amazon Cognito はバケット内に `AWSLogs` フォルダを作成する場合があります。このフォルダはすべての場合に作成されるわけではなく、作成されなくても設定は成功することがあります。

## E メールおよび SMS メッセージ配信エラーのエクスポート
<a name="exporting-quotas-and-usage-messages"></a>

E メールおよび SMS メッセージ配信エラーの場合、ユーザープールから**エラー**レベルのユーザー通知ログを配信できます。この機能を有効にすると、Amazon Cognito からログを送信する先のロググループを選択できます。ユーザー通知のログ記録は、ユーザープールが Amazon SNS と Amazon SES で配信した E メールや SMS メッセージのステータスを確認する場合に便利です。このログのエクスポートオプションは、[ユーザーアクティビティのエクスポート](#exporting-quotas-and-usage-user-activity.title)とは異なり、プラス機能プランを必要としません。

[SetLogDeliveryConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetLogDeliveryConfiguration.html) API リクエストで Amazon Cognito ユーザープール API を使用して詳細な通知ログを設定できます。ユーザープールのログ記録設定は、[GetLogDeliveryConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetLogDeliveryConfiguration.html) API リクエストで確認できます。リクエスト本文の例を次に示します。

```
{
   "LogConfigurations": [ 
      { 
         "CloudWatchLogsConfiguration": { 
            "LogGroupArn": "arn:aws:logs:us-west-2:123456789012:log-group:example-user-pool-exported"
         },
         "EventSource": "userNotification",
         "LogLevel": "ERROR"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

これらのリクエストは、以下のアクセス許可を持つ AWS  認証情報を使用して認可する必要があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
            {
            "Sid": "ManageUserPoolLogs",
            "Action": [
                "cognito-idp:SetLogDeliveryConfiguration",
                "cognito-idp:GetLogDeliveryConfiguration"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "CognitoLog",
            "Action": [
                "logs:CreateLogDelivery",
                "logs:GetLogDelivery",
                "logs:UpdateLogDelivery",
                "logs:DeleteLogDelivery",
                "logs:ListLogDeliveries"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "CognitoLoggingCWL",
            "Action": [
                "logs:PutResourcePolicy",
                "logs:DescribeResourcePolicies",
                "logs:DescribeLogGroups"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

ユーザープールのイベントの例を次に示します。このログスキーマは変更される可能性があります。一部のフィールドは NULL 値がログとして記録される場合があります。

```
{
    "eventTimestamp": "1687297330677",
    "eventSource": "USER_NOTIFICATION",
    "logLevel": "ERROR",
    "message": {
        "details": "String"
    },
    "logSourceId": {
        "userPoolId": "String"
    }
}
```

## 脅威保護ユーザーアクティビティログのエクスポート
<a name="exporting-quotas-and-usage-user-activity"></a>

プラス機能プランと脅威保護を備えたユーザープールは、ユーザーアクティビティイベントとして、ユーザープールでのユーザーのサインイン、サインアウト、その他の認証オペレーションに関する詳細とセキュリティ評価をログを記録します。独自のログ管理システムでユーザーアクティビティログを確認したり、アーカイブを作成したりできます。Amazon CloudWatch Logs ロググループ、Amazon Data Firehose ストリーム、Amazon Simple Storage Service (Amazon S3) バケットを使用できます。そこから、このデータを、運用プロセスに適合する方法でデータを分析、正規化、またはその他の方法で処理する他のシステムに取り込むことができます。このタイプのデータをエクスポートするには、ユーザープールでプラス機能プランを使用しており、ユーザープールで[脅威保護](cognito-user-pool-settings-threat-protection.md)がアクティブになっている必要があります。

これらのユーザーアクティビティログの情報を使用して、ユーザーサインインとアカウント管理アクティビティのプロファイルを表示できます。デフォルトでは、Amazon Cognito はこれらのイベントをユーザープールに基づくストレージにキャプチャします。次の例は、サインインし、リスク要因がないと評価されたユーザーのイベント例です。この情報は、`AdminListUserAuthEvents` API オペレーションで取得できます。以下は、その出力例です。

```
{
    "AuthEvents": [
        {
            "EventId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
            "EventType": "SignIn",
            "CreationDate": "2024-06-27T10:49:59.139000-07:00",
            "EventResponse": "Pass",
            "EventRisk": {
                "RiskDecision": "NoRisk",
                "CompromisedCredentialsDetected": false
            },
            "ChallengeResponses": [
                {
                    "ChallengeName": "Password",
                    "ChallengeResponse": "Success"
                }
            ],
            "EventContextData": {
                "IpAddress": "192.0.2.1",
                "DeviceName": "Chrome 126, Windows 10",
                "Timezone": "-07:00",
                "City": "null",
                "Country": "United States"
            }
        }
    ],
    "NextToken": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222#2024-06-27T17:49:59.139Z"
}
```

Amazon Cognito コンソール内で、または [SetLogDeliveryConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetLogDeliveryConfiguration.html) API オペレーションを使用して、ユーザーアクティビティのログエクスポートをアクティブ化できます。

------
#### [ AWS マネジメントコンソール ]

1. 使用するバケットがまだない場合は、[S3 バケット](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)、[Firehose ストリーム](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)、または [CloudWatch ロググループ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)を作成します。

1. [Amazon Cognito コンソール](https://console.aws.amazon.com/cognito/home)にサインインします。

1. **[User Pools]** (ユーザープール) を選択します。

1. リストから既存のユーザープールを選択するか、[ユーザープールを作成](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html)します。

1. **[高度なセキュリティ]** タブを選択します。**[ユーザーアクティビティログをエクスポートする]** を見つけて **[編集]** を選択します

1. **[ログ記録ステータス]** で、**[ユーザーアクティビティログのエクスポートをアクティブ化]** の横にあるチェックボックスをオンにします。

1. **ログ記録先**で、ログ AWS のサービス を処理する を選択します: **CloudWatch ロググループ**、**Amazon Data Firehose ストリーム**、または **S3 バケット**。

1. 選択すると、対応するリソースタイプがリソースセレクターに入力されます。リストからロググループ、ストリーム、またはバケットを選択します。**作成**ボタンを選択して、 AWS マネジメントコンソール 選択したサービスの に移動し、新しいリソースを作成することもできます。

1. **[変更を保存]** を選択します。

------
#### [ API ]

ユーザーアクティビティログの送信先のタイプを 1 つ選択します。

以下は、Firehose ストリームをログの送信先として設定する `SetLogDeliveryConfiguration` リクエスト本文の例です。

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "FirehoseConfiguration": {
            "StreamArn": "arn:aws:firehose:us-west-2:123456789012:deliverystream/example-user-pool-activity-exported"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

以下は、Amazon S3 バケットをログの送信先として設定する `SetLogDeliveryConfiguration` リクエスト本文の例です。

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "S3Configuration": { 
            "BucketArn": "arn:aws:s3:::amzn-s3-demo-logging-bucket"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

以下は、CloudWatch ロググループをログの送信先として設定する `SetLogDeliveryConfiguration` リクエスト本文の例です。

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "CloudWatchLogsConfiguration": { 
            "LogGroupArn": "arn:aws:logs:us-west-2:123456789012:log-group:DOC-EXAMPLE-LOG-GROUP"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------

ログ配信を設定するユーザーは、ユーザープール管理者で、かつ、次の追加のアクセス許可を持っている必要があります。

------
#### [ Amazon S3 ]

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ManageUserPoolLogs",
            "Action": [
                "cognito-idp:SetLogDeliveryConfiguration",
                "cognito-idp:GetLogDeliveryConfiguration"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "ManageLogsS3",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogDelivery",
                "s3:PutBucketPolicy",
                "s3:GetBucketPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

------
#### [ CloudWatch Logs ]

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ManageUserPoolLogs",
            "Action": [
                "cognito-idp:SetLogDeliveryConfiguration",
                "cognito-idp:GetLogDeliveryConfiguration"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "ManageLogsCWL",
            "Action": [
                "logs:CreateLogDelivery",
                "logs:GetLogDelivery",
                "logs:UpdateLogDelivery",
                "logs:DeleteLogDelivery",
                "logs:ListLogDeliveries",
                "logs:PutResourcePolicy",
                "logs:DescribeResourcePolicies",
                "logs:DescribeLogGroups"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

------
#### [ Amazon Data Firehose ]

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ManageUserPoolLogs",
            "Action": [
                "cognito-idp:SetLogDeliveryConfiguration",
                "cognito-idp:GetLogDeliveryConfiguration"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "ManageUserPoolLogsFirehose",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogDelivery",
                "iam:CreateServiceLinkedRole",
                "firehose:TagDeliveryStream"
            ],
            "Resource": "*"
        }
    ]
}
```

------

------

ユーザープールのイベントの例を次に示します。このログスキーマは変更される可能性があります。一部のフィールドは NULL 値がログとして記録される場合があります。

```
{
    "eventTimestamp": "1687297330677",
    "eventSource": "USER_ACTIVITY",
    "logLevel": "INFO",
    "message": {
        "version": "1",
        "eventId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "eventType": "SignUp",
        "userSub": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
        "userName": "test-user",
        "userPoolId": "us-west-2_EXAMPLE",
        "clientId": "1example23456789",
        "creationDate": "Wed Jul 17 17:25:55 UTC 2024",
        "eventResponse": "InProgress",
        "riskLevel": "",
        "riskDecision": "PASS",
        "challenges": [],
        "deviceName": "Other, Other",
        "ipAddress": "192.0.2.1",
        "requestId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE33333",
        "idpName": "",
        "compromisedCredentialDetected": "false",
        "city": "Seattle",
        "country": "United States",
        "eventFeedbackValue": "",
        "eventFeedbackDate": "",
        "eventFeedbackProvider": "",
        "hasContextData": "true"
    },
    "logSourceId": {
        "userPoolId": "us-west-2_EXAMPLE"
    }
}
```

# CloudWatch と Service Quotas でのクォータと使用状況の追跡
<a name="tracking-quotas-and-usage-in-cloud-watch-and-service-quotas"></a>

Amazon CloudWatch または Service Quotas を使用して、Amazon Cognito ユーザープールをモニタリングできます。Service Quotas でアイデンティティプールの使用状況をモニタリングすることもできます。CloudWatch は、raw データを収集して、それを読み取り可能なほぼリアルタイムのメトリクスに変換します。CloudWatch では、特定のしきい値を監視するアラームを設定し、これらのしきい値に到達したときに通知を送信、またはアクションを実行することができます。サービスクォータ向けの CloudWatch アラームを作成するには、「[CloudWatch アラームを作成する](https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html#create-a-cloud-watch-alarm)」を参照してください。Amazon Cognito のメトリクスは 5 分間隔で利用できます。CloudWatch での保持期間の詳細については、「[Amazon CloudWatch のよくある質問](https://aws.amazon.com/cloudwatch/faqs)」ページを参照してください。

 Service Quotas を使用して、Amazon Cognito ユーザープールとアイデンティティプールのクォータの使用状況を表示および管理できます。Service Quotas コンソールには、サービスクォータの表示、サービスクォータ引き上げのリクエスト、および現在の使用状況の表示という 3 つの機能があります。最初の機能を使用してクォータを表示し、クォータが調整可能かどうかを確認できます。2 番目の機能を使用して、Service Quotas の引き上げをリクエストできます。最後の機能は、クォータの使用率の表示に使用できます。この機能を利用できるのは、アカウントがしばらくの間アクティブな状態であった場合のみです。Service Quotas コンソールでのクォータの表示に関する詳細については、「[Viewing service quotas](https://docs.aws.amazon.com/servicequotas/latest/userguide/gs-request-quota.html)」を参照してください。

**注記**  
Amazon Cognito のメトリクスは 5 分間隔で利用可能になります。CloudWatch での保持期間の詳細については、「[Amazon CloudWatch のよくある質問](https://aws.amazon.com/cloudwatch/faqs/)」ページを参照してください。

CloudWatch クロスアカウントオブザーバビリティでモニタリングアカウントとして AWS アカウント 設定された にサインインしている場合、そのモニタリングアカウントを使用してサービスクォータを視覚化し、そのモニタリングアカウントにリンクされているソースアカウントのメトリクスのアラームを設定できます。詳細については、「[CloudWatch のクロスアカウントオブザーバビリティ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html)」を参照してください。

**Topics**
+ [CloudWatch のユーザープールメトリクス](metrics-for-cognito-user-pools.md)
+ [Service Quotas のメトリクス](use-the-service-quota-console-to-track-metrics.md)

# CloudWatch のユーザープールメトリクス
<a name="metrics-for-cognito-user-pools"></a>

ユーザープールは、ユーザーアクティビティ統計をメトリクスとして CloudWatch に報告します。CloudWatch から、ユーザープール内の認証アクティビティの量とクォータ使用率を分析できます。これらのメトリクスの情報を使用して、注目すべきイベントのアラームを設定し、必要に応じてユーザープールの設定を調整できます。ユーザーアクティビティのログ記録にユーザープール内のユーザーアクティビティの詳細なレコードがある場合、CloudWatch メトリクスには統計とパフォーマンス指標が集約されています。

以下の表には、Amazon Cognito ユーザープールに使用できるメトリクスがリストされています。Amazon Cognito は、メトリクスを名前空間 `AWS/Cognito` および `AWS/Usage` に発行します。詳細については、「Amazon CloudWatch ユーザーガイド」の「[名前空間](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Namespace)」を参照してください。**

クォータと使用状況の追跡の詳細については、「[クォータの使用状況を追跡する](quotas.md#track-quota-usage)」および「[月間アクティブユーザー数 (MAU) を追跡する](quotas.md#track-mau-usage)」を参照してください。

**注記**  
過去 2 週間に新しいデータポイントがなかったメトリクスは、コンソールに表示されません。また、コンソールの **[All metrics]** (すべてのメトリクス) タブにある検索ボックスにそれらのメトリクス名またはディメンション名を入力しても表示されません。さらに、list-metrics コマンドの結果にも返されません。これらのメトリクスを取得する最善の方法は、 AWS CLI の `get-metric-data`または `get-metric-statistics` コマンドを使用することです。


| メトリクス | 説明 | 名前空間 | 
| --- | --- | --- | 
| SignUpSuccesses |  Amazon Cognito ユーザープールに対して正常に行われたユーザー登録リクエストの合計数を提供します。正常に行われたユーザー登録リクエストは 1 の値を生成し、失敗したリクエストは 0 の値を生成します。スロットリングされたリクエストも失敗したリクエストと見なされるため、スロットリングされたリクエストも 0 の数を生成します。 正常に行われたユーザー登録リクエストの割合を確認するには、このメトリクスの `Average` 統計を使用します。ユーザー登録リクエストの合計数を計上するには、このメトリクスの `Sample Count` 統計を使用します。正常に行われたユーザー登録リクエストの合計数を計上するには、このメトリクスの `Sum` 統計を使用します。失敗したユーザー登録リクエストの合計数を計上するには、CloudWatch `Math` 式を使用して、`Sample Count` 統計から `Sum` 統計を減算します。 このメトリクスは、各ユーザープールクライアントのユーザープールごとにパブリッシュされます。ユーザー登録が管理者によって実行された場合、メトリクスはユーザープールクライアントを `Admin` とした形でパブリッシュされます。 このメトリクスは、[ユーザーのインポート](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-using-import-tool.html)および[ユーザーの移行](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-import-using-lambda.html)には生成されません。 メトリクスディメンション: `UserPool`、`UserPoolClient` 単位: 数  | AWS/Cognito | 
| SignUpThrottles |  Amazon Cognito ユーザープールに対して行われたユーザー登録リクエストで、スロットリングされたものの合計数を提供します。ユーザー登録リクエストがスロットリングされるたびに、1 の数が発行されます。 スロットリングされたユーザー登録リクエストの合計数を計上するには、このメトリクスの `Sum` 統計を使用します。 このメトリクスは、各クライアントのユーザープールごとにパブリッシュされます。スロットリングされたリクエストが管理者によって行われたものである場合、メトリクスはユーザープールクライアントを `Admin` とした形でパブリッシュされます。 メトリクスディメンション: `UserPool`、`UserPoolClient` 単位: 数  | AWS/Cognito | 
| SignInSuccesses |  Amazon Cognito ユーザープールに対して正常に行われたユーザー認証リクエストの合計数を提供します。認証トークンがユーザーに発行されると、ユーザー認証は正常に行われたとみなされます。認証が正常に行われると 1 の値が生成され、リクエストが失敗すると 0 の値が生成されます。スロットリングされたリクエストも失敗したリクエストと見なされるため、スロットリングされたリクエストも 0 の数を生成します。 正常に行われたユーザー認証リクエストの割合を調べるには、このメトリクスの `Average` 統計を使用します。ユーザー認証リクエストの合計数を計上するには、このメトリクスの `Sample Count` 統計を使用します。正常に行われたユーザー認証リクエストの合計数を計上するには、このメトリクスの `Sum` 統計を使用します。失敗したユーザー認証リクエストの合計数を計上するには、CloudWatch `Math` 式を使用して、`Sample Count` 統計から `Sum` 統計を減算します。 このメトリクスは、各クライアントのユーザープールごとにパブリッシュされます。リクエストで無効なユーザープールクライアントが提供された場合、メトリクスの対応するユーザープールクライアント値には、リクエストで送信された実際の無効な値ではなく、固定値の `Invalid` が含まれます。 このメトリクスには Amazon Cognito トークンを更新するリクエストが含まれないことに注意してください。`Refresh` トークン統計の提供には、別のメトリクスがあります。 メトリクスディメンション: `UserPool`、`UserPoolClient` 単位: 数  | AWS/Cognito | 
| SignInThrottles |  Amazon Cognito ユーザープールに対して行われたユーザー認証リクエストで、スロットリングされたものの合計数を提供します。認証リクエストがスロットリングされるたびに、1 の数が発行されます。 スロットリングされたユーザー認証リクエストの合計数を計上するには、このメトリクスの `Sum` 統計を使用します。 このメトリクスは、各クライアントのユーザープールごとにパブリッシュされます。リクエストで無効なユーザープールクライアントが提供された場合、メトリクスの対応するユーザープールクライアント値には、リクエストで送信された実際の無効な値ではなく、固定値の `Invalid` が含まれます。 このメトリクスに Amazon Cognito トークンを更新するリクエストは含まれません。`Refresh` トークン統計の提供には、別のメトリクスがあります。 メトリクスディメンション: `UserPool`、`UserPoolClient` 単位: 数  | AWS/Cognito | 
| TokenRefreshSuccesses |  Amazon Cognito ユーザープールに対して行われた Amazon Cognito を更新するリクエストで、正常に行われたものの合計数を提供します。Amazon Cognito トークンの更新リクエストが正常に行われると 1 の値が生成され、失敗したリクエストには 0 の値が生成されます。スロットリングされたリクエストも失敗したリクエストと見なされるため、スロットリングされたリクエストも 0 の数を生成します。 正常に行われた Amazon Cognito トークンの更新リクエストの割合を調べるには、このメトリクスの `Average` 統計を使用します。Amazon Cognito トークンを更新するリクエストの合計数を計上するには、このメトリクスの `Sample Count` 統計を使用します。正常に行われた Amazon Cognito トークンの更新リクエストの合計数を計上するには、このメトリクスの `Sum` 統計を使用します。失敗した Amazon Cognito トークンの更新リクエストの合計数を計上するには、CloudWatch `Math` 式を使用して、`Sample Count` 統計から `Sum` 統計を減算します。 このメトリクスは、ユーザープールクライアントごとにパブリッシュされます。リクエストに無効なユーザープールクライアントがある場合、ユーザープールクライアントの値には固定値の `Invalid` が含まれます。 メトリクスディメンション: `UserPool`、`UserPoolClient` 単位: 数  | AWS/Cognito | 
| TokenRefreshThrottles |  Amazon Cognito ユーザープールに対して行われた Amazon Cognito トークンを更新するリクエストで、スロットリングされたものの合計数を提供します。Amazon Cognito トークンの更新リクエストがスロットリングされるたびに、1 の数が発行されます。 Amazon Cognito トークンのスロットリングされた更新リクエストの合計数を計上するには、このメトリクスの `Sum` 統計を使用します。 このメトリクスは、各クライアントのユーザープールごとにパブリッシュされます。リクエストで無効なユーザープールクライアントが提供された場合、メトリクスの対応するユーザープールクライアント値には、リクエストで送信された実際の無効な値ではなく、固定値の `Invalid` が含まれます。 メトリクスディメンション: `UserPool`、`UserPoolClient` 単位: 数  | AWS/Cognito | 
| FederationSuccesses |  Amazon Cognito ユーザープールに対して正常に行われた ID フェデレーションリクエストの合計数を提供します。ID フェデレーションは、Amazon Cognito がユーザーに認証トークンを発行した時点で成功とみなされます。ID フェデレーションリクエストが正常に行われると 1 の値が生成され、失敗すると 0 の値が生成されます。スロットリングされたリクエストや、認可コードは生成されるがトークンは生成されないリクエストでは、値が 0 になります。 正常に行われた ID フェデレーションリクエストの割合を調べるには、このメトリクスの `Average` 統計を使用します。ID フェデレーションリクエストの合計数を計上するには、このメトリクスの `Sample Count` 統計を使用します。正常に行われた ID フェデレーションリクエストの合計数を計上するには、このメトリクスの `Sum` 統計を使用します。失敗した ID フェデレーションリクエストの合計数を計上するには、CloudWatch `Math` 式を使用して、`Sample Count` 統計から `Sum` 統計を減算します。 メトリクスディメンション:`UserPool`、`UserPoolClient`、`IdentityProvider` 単位: 数  | AWS/Cognito | 
| FederationThrottles |  Amazon Cognito ユーザープールに対して行われた ID フェデレーションリクエストで、スロットリングされたものの合計数を提供します。ID フェデレーションリクエストがスロットリングされるたびに、1 の数が発行されます。 スロットリングされた ID フェデレーションリクエストの合計数を計上するには、このメトリクスの `Sum` 統計を使用します。 メトリクスディメンション:`UserPool`、`UserPoolClient`、`IdentityProvider` 単位: 数  | AWS/Cognito | 
| CallCount |  顧客が実行したコールで、カテゴリに関連するものの合計数を提供します。このメトリクスには、スロットリングコール、失敗したコール、正常に行われたコールなどのすべてのコールが含まれます。 カテゴリクォータは、 AWS アカウントとリージョン内のすべてのユーザープールにわたって、アカウントごとに適用されます。 カテゴリ内のコールの合計数は、このメトリクスの `Sum` 統計を使用して計上できます。 メトリクスディメンション: Type、Resource、Class 単位: 数  | AWS/Usage | 
| ThrottleCount |  スロットルされたコールで、カテゴリに関連するものの合計数を提供します。 このメトリクスは、アカウントレベルでパブリッシュされます。 カテゴリ内のコールの合計数は、このメトリクスの `Sum` 統計を使用して計上できます。 メトリクスディメンション: Type、Resource、Class 単位: カウント  | AWS/Usage | 

## 脅威保護メトリクスの表示
<a name="user-pool-settings-viewing-threat-protection-metrics"></a>

ユーザープールが発行するメトリクスには、脅威保護設定がユーザー認証アクティビティに与える影響に関する統計情報が含まれています。漏えいした認証情報でサインインしようとしているユーザーの数を知りたい場合があります。また、一定レベルのリスクがあると評価されたサインインアクティビティの割合も確認できます。Amazon Cognito は、脅威保護機能のメトリクスを Amazon CloudWatch のアカウントに発行します。Amazon Cognito は脅威保護のメトリクスを、リスクレベル別およびリクエストレベル別にグループ化します。

リスク分析にコンテキストを追加するには、ユーザープールで、またはエクスポートされたデータソースで、[個々のユーザーサインイン試行に関する情報を表示](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-event-user-history)できます。

**CloudWatch コンソールでメトリクスを表示する**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. ナビゲーションペインで **[Metrics]** (メトリクス) を選択します。

1. Amazon Cognito を選択します。

1. **[By Risk Classification]** (リスク分類別) などの集約されたメトリクスのグループを選択します。

1. **[All metrics]** (すべてのメトリクス) タブに、選択したグループのメトリクスが一覧表示されます。以下の操作を行うことができます。
   + テーブルを並べ替えるには、列見出しを使用します。
   + メトリクスをグラフ表示するには、メトリクスの横にあるチェックボックスを選択します。すべてのメトリクスを選択するには、テーブルの見出し行にあるチェックボックスを選択します。
   + リソースでフィルターするには、リソース ID を選択し、**[Add to search]** (検索に追加) を選択します。
   + メトリクスでフィルターするには、メトリクス名を選択し、**[Add to search]** (検索に追加) を選択します。


|  メトリクス  |  説明  |  メトリクスディメンション  | 名前空間 | 
| --- | --- | --- | --- | 
|  CompromisedCredentialRisk  |  Amazon Cognito が侵害された認証情報を検知したリクエスト。  |  操作: ディメンションは `PasswordChange`、`SignIn`、または `SignUp` タイプの操作のみです。 UserPoolId: ユーザープールの識別子。 RiskLevel: 高 (デフォルト)、中、低。  | AWS/Cognito | 
|  AccountTakeOverRisk  |  Amazon Cognito がアカウントの乗っ取りリスクを検知したリクエスト。  |  操作: ディメンションは `PasswordChange`、`SignIn`、または `SignUp` タイプの操作のみです。 UserPoolId: ユーザープールの識別子。 RiskLevel: 高、中、低。  | AWS/Cognito | 
|  OverrideBlock  |  Amazon Cognito がデベロッパーから提供された設定を理由にブロックしたリクエスト。  |  操作: ディメンションは `PasswordChange`、`SignIn`、または `SignUp` タイプの操作のみです。 UserPoolId: ユーザープールの識別子。 RiskLevel: 高、中、低。  | AWS/Cognito | 
|  Risk  |  Amazon Cognito がリスクありとしてマークしたリクエスト。  |  操作: `PasswordChange`、`SignIn`、または `SignUp` などの操作タイプ。 UserPoolId: ユーザープールの識別子。  | AWS/Cognito | 
|  NoRisk  |  Amazon Cognito がリスクを識別しなかったリクエスト。  |  操作: `PasswordChange`、`SignIn`、または `SignUp` などの操作タイプ。 UserPoolId: ユーザープールの識別子。  | AWS/Cognito | 

Amazon Cognito は、CloudWatch で即座に分析を開始するために、2 つの事前定義されたメトリクスグループを提供します。**By Risk Classification** は、リスクがあるとして Amazon Cognito が識別したリクエストのリスクレベルの詳細を示します。**By Request Classification** リクエストレベルで集計されたメトリクスを反映します。


|  集約されたメトリクスグループ  |  説明  | 
| --- | --- | 
|  リスク分類別  |  Amazon Cognito でリスクありとして識別されたリクエスト。  | 
|  リクエスト分類別  |  リクエスト別に集約されたメトリクス。  | 

## Amazon Cognito ユーザープールのディメンション
<a name="dimensions-for-cognito-user-pools"></a>

Amazon Cognito によってパブリッシュされた使用状況メトリクスの絞り込みには、以下のディメンションが使用されます。ディメンションは、`CallCount` および `ThrottleCount ` メトリクスのみに適用されます。


| ディメンション | 説明 | 
| --- | --- | 
|  Service  |  リソースを含む AWS サービスの名前。Amazon Cognito の使用状況メトリクスの場合、このディメンションの値は `Cognito user pool` です。  | 
|  Type  |  報告されるエンティティのタイプ。Amazon Cognito の使用状況メトリクスに対する有効な値は API のみです。  | 
|  Resource  |  実行中のリソースのタイプ。有効な値はカテゴリ名のみです。  | 
|  Class  |  追跡されているリソースのクラス。Amazon Cognito は class ディメンションを使用しません。  | 

## CloudWatch コンソールを使用してメトリクスを追跡する
<a name="use-the-cloud-watch-console-to-track-metrics"></a>

CloudWatch を使用して、Amazon Cognito ユーザープールのメトリクスを追跡して収集することができます。CloudWatch ダッシュボードには、使用するすべての AWS サービスに関するメトリクスが表示されます。CloudWatch を使用してメトリクスアラームを作成できます。アラームは、通知を送信する、またはモニタリングしている特定のリソースに変更を行うように設定できます。CloudWatch でサービスクォータメトリクスを表示するには、以下のステップを実行します。

1. [CloudWatch コンソール](https://console.aws.amazon.com/cloudwatch/) を開きます。

1. ナビゲーションペインで [**Metrics (メトリクス)**] を選択してください。

1. **[All metrics]** (すべてのメトリクス) でメトリクスとディメンションを選択します。

1. メトリクスの横にあるチェックボックスをオンにします。グラフにメトリクスが表示されます。

**注記**  
過去 2 週間に新しいデータポイントがなかったメトリクスは、コンソールに表示されません。また、コンソールの [All metrics] (すべてのメトリクス) タブにある検索ボックスにそれらのメトリクス名またはディメンション名を入力しても表示されず、list-metrics コマンドの結果にも返されません。これらのメトリクスを取得する最適な方法は、 AWS CLI で `get-metric-data` または `get-metric-statistics` コマンドを使用することです。

## クォータの CloudWatch アラームを作成する
<a name="create-a-cloud-watch-alarm"></a>

 Amazon Cognito は、 `CallCount`および `ThrottleCount` API AWS のサービスクォータに対応する CloudWatch 使用状況メトリクスを提供します。 APIs CloudWatch での使用状況の追跡については、「[クォータの使用状況を追跡する](quotas.md#track-quota-usage)」を参照してください。

Service Quotas コンソールで、使用量がサービスクォータに近づいた場合に警告するアラームを作成できます。Service Quotas コンソールを使用して CloudWatch アラームを設定する方法については、「[Service Quotas and CloudWatch alarms](https://docs.aws.amazon.com/servicequotas/latest/userguide/configure-cloudwatch.html)」を参照してください。

# Service Quotas のメトリクス
<a name="use-the-service-quota-console-to-track-metrics"></a>

Service Quotas を使用して、一元化された場所から Amazon Cognito ユーザープールおよびアイデンティティプールのクォータを表示および管理できます。Service Quotas コンソールを使用して、特定のクォータに関する詳細の表示、クォータ使用率のモニタリング、クォータ引き上げのリクエストを行うことができます。一部のクォータタイプでは、CloudWatch アラームを作成してクォータ使用率を追跡できます。追跡できる Amazon Cognito メトリクスの詳細については、「[クォータの使用状況を追跡する](quotas.md#track-quota-usage)」を参照してください。

**Amazon Cognito ユーザープールおよびアイデンティティプールのサービスクォータ使用率を表示するには、次の手順を実行します。**

1. [Service Quotas コンソール](https://console.aws.amazon.com/servicequotas/) を開きます。

1. ナビゲーションペインで、**[AWS サービス**] を選択します。

1. **[AWS のサービス]** リストで、**[Amazon Cognito ユーザープール]** または **[Amazon Cognito フェデレーティッド ID]** を検索して選択します。[Service Quota] (サービスクォータ) ページが表示されます。

1. CloudWatch モニタリングをサポートするクォータを選択します。例えば、Amazon Cognito ユーザープールで [`Rate of UserAuthentication requests`] を選択します。

1. **[Monitoring]** (モニタリング) までスクロールダウンします。このセクションは、CloudWatch モニタリングをサポートするクォータに対してのみ表示されます。

1. [**Monitoring**] (モニタリング) では、現在のサービスクォータ使用率をグラフに表示できます。

1. **[Monitoring]** (モニタリング) で、1 時間、3 時間、12 時間、1 日、3 日、または 1 週間を選択します。

1. グラフ内の任意の領域を選択して、サービスクォータ使用率の割合を表示します。ここでは、ダッシュボードにグラフを追加する、またはアクションメニューを使用して、CloudWatch コンソールで関連メトリクスを表示する **[View in metrics]** (メトリクスで表示) を選択することができます。

# Amazon Cognito ログイン AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

Amazon Cognito は AWS CloudTrail、Amazon Cognito のユーザー、ロール、または のサービスによって実行されたアクションを記録する AWS サービスである と統合されています。CloudTrail は、Amazon Cognito の API コールのサブセットをイベントとしてキャプチャし、これには Amazon Cognit コンソールと、Amazon Cognito API 操作へのコードコールからのコールが含まれます。証跡を作成する場合、Amazon Cognito のイベントを含めた CloudTrail イベントの Amazon S3 バケットへの継続的な配信を有効にすることができます。追跡を設定しない場合でも、CloudTrail コンソールの **[Event history]** (イベント履歴) で最新のイベントを表示できます。CloudTrail によって収集された情報を使用して、Amazon Cognito に対して行われたリクエスト、リクエスト元の IP アドレス、リクエスト者、リクエストが行われた日時、および追加の詳細を確認できます。

設定や有効化の方法など、CloudTrail の詳細については、「[AWS CloudTrail ユーザーガイド](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)」を参照してください。

特定の CloudTrail イベントに対する Amazon CloudWatch アラームを作成することもできます。例えば、ID プールの設定が変更された場合にアラームがトリガーされるように CloudWatch を設定できます。詳細については、「[CloudTrail イベントの CloudWatch アラームの作成: 例](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html)」を参照してください。

**Topics**
+ [Amazon Cognito が CloudTrail に送信する情報](#amazon-cognito-info-in-cloudtrail)
+ [Amazon CloudWatch Logs Insights を使用した Amazon Cognito CloudTrail イベントの分析](#analyzingcteventscwinsight)
+ [Amazon Cognito イベントの例](understanding-amazon-cognito-entries.md)

## Amazon Cognito が CloudTrail に送信する情報
<a name="amazon-cognito-info-in-cloudtrail"></a>

CloudTrail は、 の作成時にオンになります AWS アカウント。Amazon Cognito でサポートされているイベントアクティビティが発生すると、そのアクティビティはイベント**履歴**の他の AWS サービスイベントとともに CloudTrail イベントに記録されます。 AWS アカウントで最近のイベントを表示、検索、ダウンロードできます。詳細については、「[CloudTrail Event 履歴でのイベントの表示](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)」を参照してください。

Amazon Cognito のイベントなど、 AWS アカウントのイベントの継続的な記録については、証跡を作成します。CloudTrail の証跡がログファイルを Amazon S3 バケットに配信します。デフォルトでは、コンソールで証跡を作成すると、すべての リージョンに証跡が適用されます。証跡は、 AWS パーティション内のすべてのリージョンからのイベントをログに記録し、指定した Amazon S3 バケットにログファイルを配信します。さらに、CloudTrail ログで収集されたイベントデータをさらに分析して処理するように他の AWS サービスを設定できます。詳細については、以下を参照してください。
+ [証跡を作成するための概要](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail がサポートされているサービスと統合](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-list)
+ [amazon SNS の CloudTrail 通知の設定](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [複数のリージョンから CloudTrail ログファイルを受け取る](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html)および[複数のアカウントから CloudTrail ログファイルを受け取る](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

各イベントまたはログエントリには、誰がリクエストを生成したかという情報が含まれます。同一性情報は次の判断に役立ちます。
+ リクエストが、ルートと IAM ユーザー認証情報のどちらを使用して送信されたか。
+ リクエストがロールまたはフェデレーションユーザーの一時的なセキュリティ認証情報を使用して行われたかどうか。
+ リクエストが別の AWS サービスによって行われたかどうか。

詳細については、「[CloudTrail userIdentity エレメント](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)」を参照してください。

**の機密データ AWS CloudTrail**  
ユーザープールと ID プールはユーザーデータを処理するため、Amazon Cognito は CloudTrail イベントの一部のプライベートフィールドを値 `HIDDEN_DUE_TO_SECURITY_REASONS` で非表示にします。Amazon Cognito がイベントに設定しないフィールドの例については、「[Amazon Cognito イベントの例](understanding-amazon-cognito-entries.md)」を参照してください。Amazon Cognito は、パスワードやトークンなど、一般的にユーザー情報を含む一部のフィールドだけを非表示にします。Amazon Cognito は、API リクエスト内の非公開フィールドに入力された個人識別情報の自動検出やマスキングを行いません。

### ユーザープールのイベント
<a name="user-pools-cloudtrail-events"></a>

Amazon Cognito は、[[User pool actions]](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_Operations.html) (ユーザープールのアクション) ページにリストされているすべてのアクションを、イベントとして CloudTrail ログファイルに記録することをサポートします。Amazon Cognito は、ユーザープールイベントを*管理イベント*として CloudTrail にログ記録します。

Amazon Cognito ユーザープールの CloudTrail エントリの `eventType` フィールドは、アプリケーションがリクエストした先が [Amazon Cognito ユーザープール API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) であるのか、[OpenID Connect、SAML 2.0、またはマネージドログインページのリソースを提供するエンドポイント](cognito-userpools-server-contract-reference.md)であるのかを示します。API リクエストには `AwsApiCall` の `eventType` があり、エンドポイントリクエストには `AwsServiceEvent` の `eventType` があります。

Amazon Cognito は、マネージドログインサービスへの以下のリクエストを CloudTrail にイベントとして記録します。

------
#### [ Hosted UI (classic) events ]


**CloudTrail のホストされた UI (クラシック) のイベント**  

| 運用 | 説明 | 
| --- | --- | 
| Login\$1GET, CognitoAuthentication | ユーザーは [ログインエンドポイント](login-endpoint.md) に認証情報を表示または送信します。 | 
| OAuth2\$1Authorize\$1GET, Beta\$1Authorize\$1GET | ユーザーは [認可エンドポイント](authorization-endpoint.md) を表示します。 | 
| OAuth2Response\$1GET, OAuth2Response\$1POST | ユーザーは IdP トークンを /oauth2/idpresponse エンドポイントに送信します。 | 
| SAML2Response\$1POST, Beta\$1SAML2Response\$1POST | ユーザーは IdP SAML アサーションを /saml2/idpresponse エンドポイントに送信します。 | 
| Login\$1OIDC\$1SAML\$1POST | ユーザーは、[ログインエンドポイント](login-endpoint.md) でユーザー名を入力し、[IdP identifier](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-integrating-3rd-party-saml-providers.html) と一致させます。 | 
| Token\$1POST, Beta\$1Token\$1POST | ユーザーは、認可コードを[トークンエンドポイント](token-endpoint.md)に送信します。 | 
| Signup\$1GET, Signup\$1POST | ユーザーは、サインアップ情報を /signup エンドポイントに送信します。 | 
| Confirm\$1GET, Confirm\$1POST | ユーザーは、ホストされた UI で確認コードを送信します。 | 
| ResendCode\$1POST | ユーザーは、ホストされた UI で確認コードの再送リクエストを送信します。 | 
| ForgotPassword\$1GET, ForgotPassword\$1POST | ユーザーは、パスワードのリセットリクエストを /forgotPassword エンドポイントに送信します。 | 
| ConfirmForgotPassword\$1GET, ConfirmForgotPassword\$1POST | ユーザーは、ForgotPassword リクエストを確認するコードを /confirmForgotPassword エンドポイントに送信します。 | 
| ResetPassword\$1GET, ResetPassword\$1POST | ユーザーは、ホストされた UI で新しいパスワードを送信します。 | 
| Mfa\$1GET, Mfa\$1POST | ユーザーは、ホストされた UI で多要素認証 (MFA) コードを送信します。 | 
| MfaOption\$1GET, MfaOption\$1POST | ユーザーは、ホストされた UI で MFA の好みの方法を選択します。 | 
| MfaRegister\$1GET, MfaRegister\$1POST | ユーザーは、MFA の登録時にホストされた UI で多要素認証 (MFA) コードを送信します。 | 
| Logout | ユーザーは、/logout エンドポイントでサインアウトします。 | 
| SAML2Logout\$1POST | ユーザーは、/saml2/logout エンドポイントでサインアウトします。 | 
| Error\$1GET | ユーザーは、ホストされた UI でエラーページを表示します。 | 
| UserInfo\$1GET, UserInfo\$1POST | ユーザーまたは IdP は、[userInfo エンドポイント](userinfo-endpoint.md) と情報を交換します。 | 
| Confirm\$1With\$1Link\$1GET | ユーザーは、Amazon Cognito が E メールメッセージで送信したリンクに基づいて確認を送信します。 | 
| Event\$1Feedback\$1GET | ユーザーが、[脅威保護](cognito-user-pool-settings-threat-protection.md)イベントに関するフィードバックを Amazon Cognito に送信します。 | 

------
#### [ Managed login events ]


**CloudTrail でのマネージドログインのイベント**  

| 運用 | 説明 | 
| --- | --- | 
| login\$1POST | ユーザーが認証情報を [ログインエンドポイント](login-endpoint.md) に送信します。 | 
| login\$1continue\$1POST | 既に 1 回サインインしているユーザーが、再度サインインすることを選択します。 | 
| forgotPassword\$1POST | ユーザーがパスワードをリセットします。 | 
| selectChallenge\$1POST | ユーザーが、ユーザー名または認証情報を送信した後で、認証チャレンジに応答します。 | 
| confirmUser\$1GET | ユーザーが[確認または検証 E メールメッセージ](signing-up-users-in-your-app.md)でリンクを開きます。 | 
| mfa\$1back\$1POST | ユーザーが MFA プロンプトの後に [戻る] ボタンを選択します。 | 
| mfa\$1options\$1POST | ユーザーが MFA オプションを選択します。 | 
| mfa\$1phone\$1register\$1POST | ユーザーが電話番号を送信して MFA 要素として登録します。このオペレーションにより、Amazon Cognito は電話番号宛に MFA コードを送信します。 | 
| mfa\$1phone\$1verify\$1POST | ユーザーが電話番号で受け取った MFA コードを送信します。 | 
| mfa\$1phone\$1resendCode\$1POST | ユーザーが、電話番号に MFA コードを再送信してもらうリクエストを送信します。 | 
| mfa\$1totp\$1POST | ユーザーが TOTP MFA コードを送信します。 | 
| signup\$1POST | ユーザーが /signup マネージドログインページに情報を送信します。 | 
| signup\$1confirm\$1POST | ユーザーが E メールまたは SMS メッセージから確認コードを送信します。 | 
| verifyCode\$1POST | ユーザーがパスワードなしの認証のためにワンタイムパスワード (OTP) を送信します。 | 
| passkeys\$1add\$1POST | ユーザーが新しいパスキー認証情報を登録するためのリクエストを送信します。 | 
| passkeys\$1add\$1GET | ユーザーがパスキーを登録できるページに移動します。 | 
| login\$1passkey\$1POST | ユーザーがパスキーでサインインします。 | 

------

**注記**  
ユーザー固有のリクエストについて、Amazon Cognito は CloudTrail ログに `UserSub` を記録しますが、`UserName` は記録しません。`ListUsers` API を呼び出し、sub のフィルターを使用することで、所定の `UserSub` のユーザーを見つけることができます。

### アイデンティティプールイベント
<a name="identity-pools-cloudtrail-events"></a>

**データイベント**

Amazon Cognito は、CloudTrail への Amazon Cognito ID イベントを*データイベント*としてログ記録します。[データイベント](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events)は、CloudTrail がデフォルトではログ記録しない大量のデータプレーン API オペレーションです。追加の変更がイベントデータに適用されます。
+ [https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetCredentialsForIdentity.html](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetCredentialsForIdentity.html)
+ [https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetId.html](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetId.html)
+ [https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetOpenIdToken.html](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetOpenIdToken.html)
+ [https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetOpenIdTokenForDeveloperIdentity.html](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetOpenIdTokenForDeveloperIdentity.html)
+ [https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_UnlinkIdentity.html](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_UnlinkIdentity.html)

これらの API オペレーションの CloudTrail ログを生成するには、トレイル内のデータイベントを有効にし、**Cognito ID プール**のイベントセレクターを選択する必要があります。詳細については、**「AWS CloudTrail ユーザーガイド」の「[証跡のデータイベントの記録](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html)」を参照してください。

次の CLI コマンドを使用して、ID プールのイベントセレクターをトレイルに追加することもできます。

```
aws cloudtrail put-event-selectors --trail-name <trail name> --advanced-event-selectors \
"{\
   \"Name\": \"Cognito Selector\",\
   \"FieldSelectors\": [\
      {\
         \"Field\": \"eventCategory\",\
         \"Equals\": [\
            \"Data\"\
         ]\
      },\
      {\
         \"Field\": \"resources.type\",\
         \"Equals\": [\
            \"AWS::Cognito::IdentityPool\"\
         ]\
      }\
   ]\
}"
```

**管理イベント**

Amazon Cognito は、残りの Amazon Cognito アイデンティティプール API オペレーションを*管理イベント*としてログ記録します。CloudTrail は、デフォルトで管理イベント API オペレーションをログ記録します。

Amazon Cognito が CloudTrail にログ記録する Amazon Cognito ID API オペレーションのリストについては、[Amazon Cognito アイデンティティプール API リファレンス](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_Operations.html) をご覧ください。

**Amazon Cognito Sync**

Amazon Cognito は、すべての Amazon Cognito Sync API オペレーションを管理イベントとしてログ記録します。Amazon Cognito が CloudTrail にログ記録する Amazon Cognito Sync API オペレーションのリストについては、[Amazon Cognito Sync API Reference](https://docs.aws.amazon.com/cognitosync/latest/APIReference/API_Operations.html)(Amazon Cognito Sync API リファレンス) をご覧ください。

## Amazon CloudWatch Logs Insights を使用した Amazon Cognito CloudTrail イベントの分析
<a name="analyzingcteventscwinsight"></a>

Amazon CloudWatch Logs Insights は、Amazon Cognito CloudTrail イベントをインタラクティブに検索し、分析することを可能にします。イベントを CloudWatch Logs に送信するように証跡を設定すると、CloudTrail は証跡設定に一致するイベントのみを送信します。

Amazon Cognito CloudTrail イベントをクエリまたは調査するには、CloudTrail コンソールで証跡設定で **Management events** オプションを選択し、 AWS リソースで実行される管理オペレーションをモニタリングできるようにします。アカウント内でのエラー、異常なアクティビティ、または異常なユーザー動作を特定したい場合は、オプションで追跡設定の **[Insights イベント]** オプションを選択することができます。

### サンプル Amazon Cognito クエリ
<a name="analyzingcteventscwinsight-samplequeries"></a>

Amazon CloudWatch コンソールでは、以下のクエリを使用できます。

**一般的なクエリ**

最近追加された 25 件のログイベントを検索します。

```
fields @timestamp, @message | sort @timestamp desc | limit 25
| filter eventSource = "cognito-idp.amazonaws.com"
```

例外を含む、最近追加された 25 件のログイベントのリストを取得します。

```
fields @timestamp, @message | sort @timestamp desc | limit 25
| filter eventSource = "cognito-idp.amazonaws.com" and @message like /Exception/
```

**例外とエラーのクエリ**

Amazon Cognito ユーザープール `sub` と共に、最近追加されたエラーコード `NotAuthorizedException` を伴う 25 件のログイベントを検索します。

```
fields @timestamp, additionalEventData.sub as user | sort @timestamp desc | limit 25
| filter eventSource = "cognito-idp.amazonaws.com" and errorCode= "NotAuthorizedException"
```

`eventName` と対応する `sourceIPAddress` を持つレコードの数を検索します。

```
filter eventSource = "cognito-idp.amazonaws.com"
| stats count(*) by sourceIPAddress, eventName
```

`NotAuthorizedException` エラーをトリガーした上位 25 の IP アドレスを検索します。

```
filter eventSource = "cognito-idp.amazonaws.com" and errorCode= "NotAuthorizedException"
| stats count(*) as count by sourceIPAddress, eventName
| sort count desc | limit 25
```

`ForgotPassword` API を呼び出した上位 25 の IP アドレスを検索します。

```
filter eventSource = "cognito-idp.amazonaws.com" and eventName = 'ForgotPassword'
| stats count(*) as count by sourceIPAddress
| sort count desc | limit 25
```

# Amazon Cognito イベントの例
<a name="understanding-amazon-cognito-entries"></a>

Amazon Cognito は、ユーザー認証アクティビティと管理管理アクティビティ AWS CloudTrail に関する情報を に記録します。これは、ユーザープールとアイデンティティプールの両方に適用されます。例えば、同じ証跡で `GetId` イベントと `UpdateIdentityPool` イベント、または `UpdateAuthEventFeedback` イベントと `SetRiskConfiguration` イベントを表示できます。ユーザープール API のオペレーションに対応していないホストされた UI アクティビティのユーザープールログも表示されます。このセクションでは、表示されるログの例をいくつか示します。オペレーションの CloudTrail イベントスキーマを理解するには、そのオペレーションのリクエストを生成し、証跡に作成するイベントを確認します。

 証跡は、指定した Amazon S3 バケットにイベントをログファイルとして配信できます。CloudTrail のログファイルは、単一か複数のログエントリを含みます。イベントはあらゆるソースからの単一のリクエストを表し、リクエストされたアクション、アクションの日時、リクエストのパラメータなどの情報が含まれます。CloudTrail ログファイルは、公開 API コールの順序付けられたスタックトレースではないため、特定の順序では表示されません。

**Topics**
+ [ホストされた UI サインアップの CloudTrail イベントの例](#cognito-cloudtrail-events-federated-sign-up)
+ [SAML リクエストの CloudTrail イベントの例](#cognito-cloudtrail-event-saml-post)
+ [トークンエンドポイントへのリクエストの CloudTrail イベントの例](#cognito-cloudtrail-events-token-endpoint-requests)
+ [CreateIdentityPool の CloudTrail イベントの例](#cognito-cloudtrail-events-createidentitypool)
+ [GetCredentialsForIdentity の CloudTrail イベントの例](#cognito-cloudtrail-events-getcredentialsforidentity)
+ [GetId の CloudTrail イベントの例](#cognito-cloudtrail-events-getid)
+ [GetOpenIdToken の CloudTrail イベントの例](#cognito-cloudtrail-events-getopenidtoken)
+ [GetOpenIdTokenForDeveloperIdentity の CloudTrail イベントの例](#cognito-cloudtrail-events-getopenidtokenfordeveloperidentity)
+ [UnlinkIdentity の CloudTrail イベントの例](#cognito-cloudtrail-events-unlinkidentity)

## ホストされた UI サインアップの CloudTrail イベントの例
<a name="cognito-cloudtrail-events-federated-sign-up"></a>

以下の CloudTrail イベントの例は、ユーザーがホストされた UI からサインアップしたときに Amazon Cognito がログに記録する情報を示しています。

Amazon Cognito は、新しいユーザーがアプリのサインインページに移動すると、次のイベントをログに記録します。

```
{
    "eventVersion": "1.08",
    "userIdentity":
    {
        "accountId": "123456789012"
    },
    "eventTime": "2022-04-06T05:38:12Z",
    "eventSource": "cognito-idp.amazonaws.com",
    "eventName": "Login_GET",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "192.0.2.1",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...",
    "errorCode": "",
    "errorMessage": "",
    "additionalEventData":
    {
        "responseParameters":
        {
            "status": 200.0
        },
        "requestParameters":
        {
            "redirect_uri":
            [
                "https://www.amazon.com"
            ],
            "response_type":
            [
                "token"
            ],
            "client_id":
            [
                "1example23456789"
            ]
        }
    },
    "eventID": "382ae09a-151d-4116-8f2b-6ac0a804a38c",
    "readOnly": true,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "serviceEventDetails":
    {
        "serviceAccountId": "111122223333"
    },
    "eventCategory": "Management"
}
```

Amazon Cognito は、新しいユーザーがアプリのサインインページで [ **Sign up** ] を選択すると、次のイベントをログに記録します。

```
{
    "eventVersion": "1.08",
    "userIdentity":
    {
        "accountId": "123456789012"
    },
    "eventTime": "2022-05-05T23:21:43Z",
    "eventSource": "cognito-idp.amazonaws.com",
    "eventName": "Signup_GET",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "192.0.2.1",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...",
    "requestParameters": null,
    "responseElements": null,
    "additionalEventData":
    {
        "responseParameters":
        {
            "status": 200
        },
        "requestParameters":
        {
            "response_type":
            [
                "code"
            ],
            "redirect_uri":
            [
                "https://www.amazon.com"
            ],
            "client_id":
            [
                "1example23456789"
            ]
        },
        "userPoolDomain": "mydomain.auth.us-west-2.amazoncognito.com",
        "userPoolId": "us-west-2_EXAMPLE"
    },
    "requestID": "7a63e7c2-b057-4f3d-a171-9d9113264fff",
    "eventID": "5e7b27a0-6870-4226-adb4-f86cd51ac5d8",
    "readOnly": true,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "serviceEventDetails":
    {
        "serviceAccountId": "111122223333"
    },
    "eventCategory": "Management"
}
```

Amazon Cognito は、新しいユーザーがユーザー名を選択し、E メールアドレスを入力し、アプリのサインインページからパスワードを選択すると、次のイベントをログに記録します。Amazon Cognito は、ユーザーの ID に関する識別情報を CloudTrail に記録しません。

```
{
    "eventVersion": "1.08",
    "userIdentity":
    {
        "accountId": "123456789012"
    },
    "eventTime": "2022-05-05T23:22:05Z",
    "eventSource": "cognito-idp.amazonaws.com",
    "eventName": "Signup_POST",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "192.0.2.1",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...",
    "requestParameters": null,
    "responseElements": null,
    "additionalEventData":
    {
        "responseParameters":
        {
            "status": 302
        },
        "requestParameters":
        {
            "password":
            [
                "HIDDEN_DUE_TO_SECURITY_REASONS"
            ],
            "requiredAttributes[email]":
            [
                "HIDDEN_DUE_TO_SECURITY_REASONS"
            ],
            "response_type":
            [
                "code"
            ],
            "_csrf":
            [
                "HIDDEN_DUE_TO_SECURITY_REASONS"
            ],
            "redirect_uri":
            [
                "https://www.amazon.com"
            ],
            "client_id":
            [
                "1example23456789"
            ],
            "username":
            [
                "HIDDEN_DUE_TO_SECURITY_REASONS"
            ]
        },
        "userPoolDomain": "mydomain.auth.us-west-2.amazoncognito.com",
        "userPoolId": "us-west-2_EXAMPLE"
    },
    "requestID": "9ad58dd8-3517-4aa8-96a5-d17a01df9eb4",
    "eventID": "c75eb7a5-eb8c-43d1-8331-f4412e756e69",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "serviceEventDetails":
    {
        "serviceAccountId": "111122223333"
    },
    "eventCategory": "Management"
}
```

Amazon Cognito は、新規ユーザーがサインアップ後にホストされた UI のユーザー確認ページにアクセスすると、次のイベントをログに記録します。

```
{
    "eventVersion": "1.08",
    "userIdentity":
    {
        "accountId": "123456789012"
    },
    "eventTime": "2022-05-05T23:22:06Z",
    "eventSource": "cognito-idp.amazonaws.com",
    "eventName": "Confirm_GET",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "192.0.2.1",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...",
    "requestParameters": null,
    "responseElements": null,
    "additionalEventData":
    {
        "responseParameters":
        {
            "status": 200
        },
        "requestParameters":
        {
            "response_type":
            [
                "code"
            ],
            "redirect_uri":
            [
                "https://www.amazon.com"
            ],
            "client_id":
            [
                "1example23456789"
            ]
        },
        "userPoolDomain": "mydomain.auth.us-west-2.amazoncognito.com",
        "userPoolId": "us-west-2_EXAMPLE"
    },
    "requestID": "58a5b170-3127-45bb-88cc-3e652d779e0b",
    "eventID": "7f87291a-6d50-409a-822f-e3a5ec7e60da",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "serviceEventDetails":
    {
        "serviceAccountId": "111122223333"
    },
    "eventCategory": "Management"
}
```

Amazon Cognito は、ホストされた UI のユーザー確認ページで、Amazon Cognito が送信したコードを E メールメッセージでユーザーが入力したときに、次のイベントをログに記録します。

```
{
    "eventVersion": "1.08",
    "userIdentity":
    {
        "accountId": "123456789012"
    },
    "eventTime": "2022-05-05T23:23:32Z",
    "eventSource": "cognito-idp.amazonaws.com",
    "eventName": "Confirm_POST",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "192.0.2.1",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...",
    "requestParameters": null,
    "responseElements": null,
    "additionalEventData":
    {
        "responseParameters":
        {
            "status": 302
        },
        "requestParameters":
        {
            "confirm":
            [
                ""
            ],
            "deliveryMedium":
            [
                "EMAIL"
            ],
            "sub":
            [
                "704b1e47-34fe-40e9-8c41-504997494531"
            ],
            "code":
            [
                "HIDDEN_DUE_TO_SECURITY_REASONS"
            ],
            "destination":
            [
                "HIDDEN_DUE_TO_SECURITY_REASONS"
            ],
            "response_type":
            [
                "code"
            ],
            "_csrf":
            [
                "HIDDEN_DUE_TO_SECURITY_REASONS"
            ],
            "cognitoAsfData":
            [
                "HIDDEN_DUE_TO_SECURITY_REASONS"
            ],
            "redirect_uri":
            [
                "https://www.amazon.com"
            ],
            "client_id":
            [
                "1example23456789"
            ],
            "username":
            [
                "HIDDEN_DUE_TO_SECURITY_REASONS"
            ]
        },
        "userPoolDomain": "mydomain.auth.us-west-2.amazoncognito.com",
        "userPoolId": "us-west-2_EXAMPLE"
    },
    "requestID": "9764300a-ed35-4f87-8a0f-b18b3fe2b11e",
    "eventID": "e24ac6e5-2f70-4c6e-ad4e-2f08a547bb36",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "serviceEventDetails":
    {
        "serviceAccountId": "111122223333"
    },
    "eventCategory": "Management"
}
```

## SAML リクエストの CloudTrail イベントの例
<a name="cognito-cloudtrail-event-saml-post"></a>

Amazon Cognito は、SAML IdP で認証されたユーザーが SAML アサーションを `/saml2/idpresponse` エンドポイントに送信すると、次のイベントをログに記録します。

```
{
    "eventVersion": "1.08",
    "userIdentity":
    {
        "accountId": "123456789012"
    },
    "eventTime": "2022-05-06T00:50:57Z",
    "eventSource": "cognito-idp.amazonaws.com",
    "eventName": "SAML2Response_POST",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "192.0.2.1",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...",
    "requestParameters": null,
    "responseElements": null,
    "additionalEventData":
    {
        "responseParameters":
        {
            "status": 302
        },
        "requestParameters":
        {
            "RelayState":
            [
                "HIDDEN_DUE_TO_SECURITY_REASONS"
            ],
            "SAMLResponse":
            [
                "HIDDEN_DUE_TO_SECURITY_REASONS"
            ]
        },
        "userPoolDomain": "mydomain.auth.us-west-2.amazoncognito.com",
        "userPoolId": "us-west-2_EXAMPLE"
    },
    "requestID": "4f6f15d1-c370-4a57-87f0-aac4817803f7",
    "eventID": "9824b50f-d9d1-4fb8-a2c1-6aa78ca5902a",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "625647942648",
    "serviceEventDetails":
    {
        "serviceAccountId": "111122223333"
    },
    "eventCategory": "Management"
}
```

## トークンエンドポイントへのリクエストの CloudTrail イベントの例
<a name="cognito-cloudtrail-events-token-endpoint-requests"></a>

次の例は、[トークンエンドポイント](token-endpoint.md) へのリクエストからのイベントの例です。

Amazon Cognito は、認証して認可コードを受け取ったユーザーがコードを `/oauth2/token` エンドポイントに送信すると、以下のイベントを記録します。

```
{
    "eventVersion": "1.08",
    "userIdentity":
    {
        "accountId": "123456789012"
    },
    "eventTime": "2022-05-12T22:12:30Z",
    "eventSource": "cognito-idp.amazonaws.com",
    "eventName": "Token_POST",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "192.0.2.1",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...",
    "requestParameters": null,
    "responseElements": null,
    "additionalEventData":
    {
        "responseParameters":
        {
            "status": 200
        },
        "requestParameters":
        {
            "code":
            [
                "HIDDEN_DUE_TO_SECURITY_REASONS"
            ],
            "grant_type":
            [
                "authorization_code"
            ],
            "redirect_uri":
            [
                "https://www.amazon.com"
            ],
            "client_id":
            [
                "1example23456789"
            ]
        },
        "userPoolDomain": "mydomain.auth.us-west-2.amazoncognito.com",
        "userPoolId": "us-west-2_EXAMPLE"
    },
    "requestID": "f257f752-cc14-4c52-ad5b-152a46915238",
    "eventID": "0bd1586d-cd3e-4d7a-abaf-fd8bfc3912fd",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "serviceEventDetails":
    {
        "serviceAccountId": "111122223333"
    },
    "eventCategory": "Management"
}
```

バックエンドシステムが `/oauth2/token` エンドポイントにアクセストークンの `client_credentials` リクエストを送信すると、Amazon Cognito は次のイベントをログに記録します。

```
{
    "eventVersion": "1.08",
    "userIdentity":
    {
        "accountId": "123456789012"
    },
    "eventTime": "2022-05-12T21:07:05Z",
    "eventSource": "cognito-idp.amazonaws.com",
    "eventName": "Token_POST",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "192.0.2.1",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...",
    "requestParameters": null,
    "responseElements": null,
    "additionalEventData":
    {
        "responseParameters":
        {
            "status": 200
        },
        "requestParameters":
        {
            "grant_type":
            [
                "client_credentials"
            ],
            "client_id":
            [
                "1example23456789"
            ]
        },
        "userPoolDomain": "mydomain.auth.us-west-2.amazoncognito.com",
        "userPoolId": "us-west-2_EXAMPLE"
    },
    "requestID": "4f871256-6825-488a-871b-c2d9f55caff2",
    "eventID": "473e5cbc-a5b3-4578-9ad6-3dfdcb8a6d34",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "serviceEventDetails":
    {
        "serviceAccountId": "111122223333"
    },
    "eventCategory": "Management"
}
```

Amazon Cognito は、アプリが更新トークンを新しい ID に交換し、`/oauth2/token` エンドポイントとトークンにアクセスすると、次のイベントをログに記録します。

```
{
    "eventVersion": "1.08",
    "userIdentity":
    {
        "accountId": "123456789012"
    },
    "eventTime": "2022-05-12T22:16:40Z",
    "eventSource": "cognito-idp.amazonaws.com",
    "eventName": "Token_POST",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "192.0.2.1",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...",
    "requestParameters": null,
    "responseElements": null,
    "additionalEventData":
    {
        "responseParameters":
        {
            "status": 200
        },
        "requestParameters":
        {
            "refresh_token":
            [
                "HIDDEN_DUE_TO_SECURITY_REASONS"
            ],
            "grant_type":
            [
                "refresh_token"
            ],
            "client_id":
            [
                "1example23456789"
            ]
        },
        "userPoolDomain": "mydomain.auth.us-west-2.amazoncognito.com",
        "userPoolId": "us-west-2_EXAMPLE"
    },
    "requestID": "2829f0c6-a3a9-4584-b046-11756dfe8a81",
    "eventID": "12bd3464-59c7-44fa-b8ff-67e1cf092018",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "serviceEventDetails":
    {
        "serviceAccountId": "111122223333"
    },
    "eventCategory": "Management"
}
```

## CreateIdentityPool の CloudTrail イベントの例
<a name="cognito-cloudtrail-events-createidentitypool"></a>

次の例は、`CreateIdentityPool` アクションに対するリクエストのログエントリを示しています。リクエストは Alice という IAM ユーザーによって行われました。

```
{
    "eventVersion": "1.03",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "PRINCIPAL_ID",
        "arn": "arn:aws:iam::123456789012:user/Alice",
        "accountId": "123456789012",
        "accessKeyId": "['EXAMPLE_KEY_ID']",
        "userName": "Alice"
    },
    "eventTime": "2016-01-07T02:04:30Z",
    "eventSource": "cognito-identity.amazonaws.com",
    "eventName": "CreateIdentityPool",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "127.0.0.1",
    "userAgent": "USER_AGENT",
    "requestParameters": {
        "identityPoolName": "TestPool",
        "allowUnauthenticatedIdentities": true,
        "supportedLoginProviders": {
            "graph.facebook.com": "000000000000000"
        }
    },
    "responseElements": {
        "identityPoolName": "TestPool",
        "identityPoolId": "us-east-1:1cf667a2-49a6-454b-9e45-23199EXAMPLE",
        "allowUnauthenticatedIdentities": true,
        "supportedLoginProviders": {
            "graph.facebook.com": "000000000000000"
        }
    },
    "requestID": "15cc73a1-0780-460c-91e8-e12ef034e116",
    "eventID": "f1d47f93-c708-495b-bff1-cb935a6064b2",
    "eventType": "AwsApiCall",
    "recipientAccountId": "123456789012"
}
```

## GetCredentialsForIdentity の CloudTrail イベントの例
<a name="cognito-cloudtrail-events-getcredentialsforidentity"></a>

次の例は、`GetCredentialsForIdentity` アクションに対するリクエストのログエントリを示しています。

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "Unknown"
    },
    "eventTime": "2023-01-19T16:55:08Z",
    "eventSource": "cognito-identity.amazonaws.com",
    "eventName": "GetCredentialsForIdentity",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "192.0.2.4",
    "userAgent": "aws-cli/2.7.25 Python/3.9.11 Darwin/21.6.0 exe/x86_64 prompt/off command/cognito-identity.get-credentials-for-identity",
    "requestParameters": {
        "logins": {
            "cognito-idp.us-east-1.amazonaws.com/us-east-1_aaaaaaaaa": "HIDDEN_DUE_TO_SECURITY_REASONS"
        },
        "identityId": "us-east-1:1cf667a2-49a6-454b-9e45-23199EXAMPLE"
    },
    "responseElements": {
        "credentials": {
            "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
            "sessionToken": "aAaAaAaAaAaAab1111111111EXAMPLE",
            "expiration": "Jan 19, 2023 5:55:08 PM"
        },
        "identityId": "us-east-1:1cf667a2-49a6-454b-9e45-23199EXAMPLE"
    },
    "requestID": "659dfc23-7c4e-4e7c-858a-1abce884d645",
    "eventID": "6ad1c766-5a41-4b28-b5ca-e223ccb00f0d",
    "readOnly": false,
    "resources": [{
        "accountId": "111122223333",
        "type": "AWS::Cognito::IdentityPool",
        "ARN": "arn:aws:cognito-identity:us-east-1:111122223333:identitypool/us-east-1:2dg778b3-50b7-565c-0f56-34200EXAMPLE"
    }],
    "eventType": "AwsApiCall",
    "managementEvent": false,
    "recipientAccountId": "111122223333",
    "eventCategory": "Data"
}
```

## GetId の CloudTrail イベントの例
<a name="cognito-cloudtrail-events-getid"></a>

次の例は、`GetId` アクションに対するリクエストのログエントリを示しています。

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "Unknown"
    },
    "eventTime": "2023-01-19T16:55:05Z",
    "eventSource": "cognito-identity.amazonaws.com",
    "eventName": "GetId",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "192.0.2.4",
    "userAgent": "aws-cli/2.7.25 Python/3.9.11 Darwin/21.6.0 exe/x86_64 prompt/off command/cognito-identity.get-id",
    "requestParameters": {
        "identityPoolId": "us-east-1:2dg778b3-50b7-565c-0f56-34200EXAMPLE",
        "logins": {
            "cognito-idp.us-east-1.amazonaws.com/us-east-1_aaaaaaaaa": "HIDDEN_DUE_TO_SECURITY_REASONS"
        }
    },
    "responseElements": {
        "identityId": "us-east-1:1cf667a2-49a6-454b-9e45-23199EXAMPLE"
    },
    "requestID": "dc28def9-07c8-460a-a8f3-3816229e6664",
    "eventID": "c5c459d9-40ec-41fd-8f6b-57865d5a9975",
    "readOnly": false,
    "resources": [{
        "accountId": "111122223333",
        "type": "AWS::Cognito::IdentityPool",
        "ARN": "arn:aws:cognito-identity:us-east-1:111122223333:identitypool/us-east-1:2dg778b3-50b7-565c-0f56-34200EXAMPLE"
    }],
    "eventType": "AwsApiCall",
    "managementEvent": false,
    "recipientAccountId": "111122223333",
    "eventCategory": "Data"
}
```

## GetOpenIdToken の CloudTrail イベントの例
<a name="cognito-cloudtrail-events-getopenidtoken"></a>

次の例は、`GetOpenIdToken` アクションに対するリクエストのログエントリを示しています。

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "Unknown"
    },
    "eventTime": "2023-01-19T16:55:08Z",
    "eventSource": "cognito-identity.amazonaws.com",
    "eventName": "GetOpenIdToken",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "192.0.2.4",
    "userAgent": "aws-cli/2.7.25 Python/3.9.11 Darwin/21.6.0 exe/x86_64 prompt/off command/cognito-identity.get-open-id-token",
    "requestParameters": {
        "identityId": "us-east-1:1cf667a2-49a6-454b-9e45-23199EXAMPLE",
        "logins": {
            "cognito-idp.us-east-1.amazonaws.com/us-east-1_aaaaaaaaa": "HIDDEN_DUE_TO_SECURITY_REASONS"
        }
    },
    "responseElements": {
        "identityId": "us-east-1:1cf667a2-49a6-454b-9e45-23199EXAMPLE"
    },
    "requestID": "a506ba18-10d7-4fdb-9548-a8187b2e38bb",
    "eventID": "19ffc1a6-6ed8-4580-a4e1-3062c5ce6457",
    "readOnly": false,
    "resources": [{
        "accountId": "111122223333",
        "type": "AWS::Cognito::IdentityPool",
        "ARN": "arn:aws:cognito-identity:us-east-1:111122223333:identitypool/us-east-1:2dg778b3-50b7-565c-0f56-34200EXAMPLE"
    }],
    "eventType": "AwsApiCall",
    "managementEvent": false,
    "recipientAccountId": "111122223333",
    "eventCategory": "Data"
}
```

## GetOpenIdTokenForDeveloperIdentity の CloudTrail イベントの例
<a name="cognito-cloudtrail-events-getopenidtokenfordeveloperidentity"></a>

次の例は、`GetOpenIdTokenForDeveloperIdentity` アクションに対するリクエストのログエントリを示しています。

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROA1EXAMPLE:johns-AssumedRoleSession",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/johns-AssumedRoleSession",
        "accountId": "111122223333",
        "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROA1EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "attributes": {
                "creationDate": "2023-01-19T16:53:14Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2023-01-19T16:55:08Z",
    "eventSource": "cognito-identity.amazonaws.com",
    "eventName": "GetOpenIdTokenForDeveloperIdentity",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "27.0.3.154",
    "userAgent": "aws-cli/2.7.25 Python/3.9.11 Darwin/21.6.0 exe/x86_64 prompt/off command/cognito-identity.get-open-id-token-for-developer-identity",
    "requestParameters": {
        "tokenDuration": 900,
        "identityPoolId": "us-east-1:2dg778b3-50b7-565c-0f56-34200EXAMPLE",
        "logins": {
            "JohnsDeveloperProvider": "HIDDEN_DUE_TO_SECURITY_REASONS"
        }
    },
    "responseElements": {
        "identityId": "us-east-1:1cf667a2-49a6-454b-9e45-23199EXAMPLE"
    },
    "requestID": "b807df87-57e7-4dd6-b90c-b06f46a61c21",
    "eventID": "f26fed91-3340-4d70-91ae-cdf555547b76",
    "readOnly": false,
    "resources": [{
        "accountId": "111122223333",
        "type": "AWS::Cognito::IdentityPool",
        "ARN": "arn:aws:cognito-identity:us-east-1:111122223333:identitypool/us-east-1:2dg778b3-50b7-565c-0f56-34200EXAMPLE"
    }],
    "eventType": "AwsApiCall",
    "managementEvent": false,
    "recipientAccountId": "111122223333",
    "eventCategory": "Data"
}
```

## UnlinkIdentity の CloudTrail イベントの例
<a name="cognito-cloudtrail-events-unlinkidentity"></a>

次の例は、`UnlinkIdentity` アクションに対するリクエストのログエントリを示しています。

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "Unknown"
    },
    "eventTime": "2023-01-19T16:55:08Z",
    "eventSource": "cognito-identity.amazonaws.com",
    "eventName": "UnlinkIdentity",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "192.0.2.4",
    "userAgent": "aws-cli/2.7.25 Python/3.9.11 Darwin/21.6.0 exe/x86_64 prompt/off command/cognito-identity.unlink-identity",
    "requestParameters": {
        "logins": {
            "cognito-idp.us-east-1.amazonaws.com/us-east-1_aaaaaaaaa": "HIDDEN_DUE_TO_SECURITY_REASONS"
        },
        "identityId": "us-east-1:1cf667a2-49a6-454b-9e45-23199EXAMPLE",
        "loginsToRemove": ["cognito-idp.us-east-1.amazonaws.com/us-east-1_aaaaaaaaa"]
    },
    "responseElements": null,
    "requestID": "99c2c8e2-9c29-416f-bb17-b650a5cbada9",
    "eventID": "d8e26126-202a-43c2-b458-3f225efaedc7",
    "readOnly": false,
    "resources": [{
        "accountId": "111122223333",
        "type": "AWS::Cognito::IdentityPool",
        "ARN": "arn:aws:cognito-identity:us-east-1:111122223333:identitypool/us-east-1:2dg778b3-50b7-565c-0f56-34200EXAMPLE"
    }],
    "eventType": "AwsApiCall",
    "managementEvent": false,
    "recipientAccountId": "111122223333",
    "eventCategory": "Data"
}
```

# インターフェイスエンドポイント (AWS PrivateLink) を使用して Amazon Cognito にアクセスする
<a name="vpc-interface-endpoints"></a>

を使用して AWS PrivateLink 、VPC と Amazon Cognito の間にプライベート接続を作成できます。インターネットゲートウェイ、NAT デバイス、VPN 接続、または Direct Connect 接続を使用せずに、VPC 内にあるかのように Amazon Cognito にアクセスできます。VPC 内のインスタンスは、Amazon Cognito にアクセスするためにパブリック IP アドレスを必要としません。

このプライベート接続を確立するには、 AWS PrivateLinkを利用した*インターフェイスエンドポイント*を作成します。インターフェイスエンドポイントに対して有効にする各サブネットにエンドポイントネットワークインターフェイスを作成します。これらは、Amazon Cognito 宛てのトラフィックのエントリポイントとして機能するリクエスタ管理のネットワークインターフェイスです。

詳細については「*AWS PrivateLink ガイド*」の「[Access AWS のサービス through AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html)」を参照してください。

**重要**  
以下の認証タイプは、現在 ではサポートされていません AWS PrivateLink。  
OAuth 2.0 クライアント認証情報フローによるマシンツーマシン (M2M) 認可
マネージドログインとクラシックホスト UI を使用してサインインします。

**Topics**
+ [AWS PrivateLink 統合の認証フロー](#privatelink-authentication-flows)
+ [のオペレーションモード AWS PrivateLink](#privatelink-operational-modes)
+ [Amazon Cognito に関する考慮事項](#vpc-endpoint-considerations)
+ [リソースコントロールポリシーによるアクセスの制御](#vpc-endpoint-considerations-rcps)
+ [Amazon Cognito のインターフェイスエンドポイントを作成する](#vpc-endpoint-create)
+ [インターフェイスエンドポイントのエンドポイントポリシーを作成する](#vpc-endpoint-policy)
+ [AWS PrivateLink オペレーションのアイデンティティベースのポリシーを作成する](#identity-based-vpc-policy)

## AWS PrivateLink 統合の認証フロー
<a name="privatelink-authentication-flows"></a>

次の表は、VPCs 内のクライアントが使用できる認証フローと、それらを管理するために適用できる IAM ポリシーを示しています。ユーザープールへのリクエストで評価できるポリシーは、リソースコントロールポリシー (RCPs)、VPC エンドポイントポリシー、およびアイデンティティベースのポリシーです。


| [リソース]  | 認証フロー | クライアントが VPC エンドポイントを転送したときに評価されるポリシー | クライアントオリジンがパブリックの場合に評価されるポリシー | 
| --- | --- | --- | --- | 
| ユーザープール | [マネージドログインとクラシックホスト UI サインイン](cognito-user-pools-managed-login.md) | なし (アクセスなし)[1](#privatelink-vpc-endpoint-note) | なし[2](#privatelink-domain-note) | 
| ユーザープール | [Machine-to-machine認可](cognito-user-pools-define-resource-servers.md#cognito-user-pools-define-resource-servers-about-m2m) | なし (アクセスなし)[1](#privatelink-vpc-endpoint-note) | なし[2](#privatelink-domain-note) | 
| ユーザープール | SDK および REST API の認証されていないリクエスト | RCPs、VPC エンドポイントポリシー[3](#privatelink-no-domain-note) | RCPs | 
| ユーザープール | SDK および REST API SigV4 [認証リクエスト](authentication-flows-public-server-side.md#amazon-cognito-user-pools-server-side-authentication-flow)  | RCPs、VPC エンドポイントポリシー、アイデンティティベースのポリシー[3](#privatelink-no-domain-note) | RCPs、アイデンティティベースのポリシー | 
| ID プール | SDK および REST API の認証されていないリクエスト ([基本](authentication-flow.md#authentication-flow-basic)フローと[拡張](authentication-flow.md#authentication-flow-enhanced)フロー) | RCPs、VPC エンドポイントポリシー | RCPs | 
| ID プール | SDK および REST API SigV4 認証リクエスト ([開発者認証](authentication-flow.md#authentication-flow-developer)フロー) | RCPs、アイデンティティベースのポリシー | RCPs、アイデンティティベースのポリシー | 

1 VPC エンドポイントは、ユーザープールドメインのリクエストを受け入れません。クライアントにインターネットへのルートがある場合、NAT が適用され、オリジンがパブリックになります。

2 ユーザープールドメインが存在すると、VPC エンドポイントを通過するユーザープールリクエストが完了できなくなります。すべてのクライアントは、ユーザープールドメインと API サービスエンドポイント*にのみ*パブリックトランジットパスを取ることができ、VPC エンドポイントをユーザープールで使用できなくなります。ドメインが割り当てられているユーザープールは と互換性がありません AWS PrivateLink。

3 ユーザープールにはドメインを割り当てる*ことはできません*。

## のオペレーションモード AWS PrivateLink
<a name="privatelink-operational-modes"></a>

次の実装モデルは、 AWS PrivateLink および Amazon Cognito でサポートされています。


| [リソース]  | 実装 | アクション | 
| --- | --- | --- | 
| ユーザープール | 完全プライベート SDK または REST API アプリケーション |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/vpc-interface-endpoints.html)  | 
| ユーザープール | パブリックおよびプライベート IP  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/vpc-interface-endpoints.html)  | 
| ユーザープール | プライベートまたはパブリック OAuth 2.0 認可サーバー |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/vpc-interface-endpoints.html)  | 
| ID プール | 完全プライベート |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/vpc-interface-endpoints.html)  | 
| ID プール | パブリックおよびプライベート IP  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/vpc-interface-endpoints.html)  | 

## Amazon Cognito に関する考慮事項
<a name="vpc-endpoint-considerations"></a>

Amazon Cognito のインターフェイスエンドポイントを設定する前に、「 *AWS PrivateLink ガイド*」の[「考慮事項](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#considerations-interface-endpoints)」を参照してください。Amazon Cognito は、インターフェイスエンドポイントを介したすべての Amazon Cognito API アクションの呼び出しをサポートしています。これらのオペレーションの詳細については、[Amazon Cognito ユーザープール API リファレンス](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html)」および[Amazon Cognito フェデレーティッドアイデンティティ API リファレンス](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/Welcome.html)」を参照してください。

AWS PrivateLink for Amazon Cognito は商用 AWS リージョンでのみ使用できます。

**Topics**
+ [ユーザープールと AWS PrivateLink](#vpc-endpoint-considerations-user-pools)
+ [ID プールと AWS PrivateLink](#vpc-endpoint-considerations-identity-pools)

### ユーザープールと AWS PrivateLink
<a name="vpc-endpoint-considerations-user-pools"></a>

インターフェイスエンドポイントを介してすべてのユーザープール API オペレーションにリクエストを行うことができますが、クライアント認証情報の付与やマネージドログインなど、アプリケーションがユーザープール OAuth 2.0 認可サーバーにリクエストするオペレーションにはリクエストできません。

`cognito-idp` ユーザープール API には[、認証されていない、認証された、トークンが認可された API オペレーション](authentication-flows-public-server-side.md)があります。VPC エンドポイントとリソースコントロールポリシーで認証されたオペレーションのアクセス許可を付与できます。*ID* ベースのポリシーとは異なり、認証されていないオペレーションやトークン認証されたオペレーションのアクセス許可を付与することもできます。VPC エンドポイントとリソースコントロールポリシータイプは、それ以外のパブリックオペレーションのリクエストを評価、拒否、または許可できます。

ドメインエンドポイントへのリクエストもパブリックですが、ポリシーで評価することはできません。VPC プライベート DNS は、ユーザープールドメインのリクエストを VPC エンドポイントにルーティングしません。ドメインサービスのリクエストは、パブリックインターネットパスを介してのみ行うことができます。詳細については、「[ユーザープールオペレーションに対するポリシーの影響](#vpc-endpoint-considerations-policy-effects)」を参照してください。

**Topics**
+ [サポートされているオペレーション](#vpc-endpoint-considerations-supported-operations)
+ [ユーザープールオペレーションに対するポリシーの影響](#vpc-endpoint-considerations-policy-effects)

#### サポートされているオペレーション
<a name="vpc-endpoint-considerations-supported-operations"></a>

VPC 内のシステムは、[ユーザープール API アクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncognitouserpools.html)にリクエストを送信できますが、ユーザープール[ドメインエンドポイント](cognito-userpools-server-contract-reference.md)には送信*できません*。マシンツーマシン (M2M)、フェデレーティッドサインイン、[認可コード付与](authorization-endpoint.md)などのドメインエンドポイントを使用する OpenID Connect (OIDC) および OAuth 2.0 ワークフローは、VPC エンドポイントからはアクセスできません。 [machine-to-machine ](cognito-user-pools-define-resource-servers.md) [サードパーティーの ID プロバイダーを使用したユーザープールへのサインイン](cognito-user-pools-identity-federation.md) VPC エンドポイントポリシーは、これらの HTTP ワークフローには影響せず、処理できません。VPC 内からのドメインエンドポイントへのリクエストは常にインターフェイスエンドポイントで失敗しますが、ユーザープールの VPC エンドポイントを設定すると、パブリック DNS とルーティングを通じて引き続き使用できます。

VPC 内のシステムからドメインが割り当てられないように、Amazon Cognito はインターフェイスエンドポイントでの`CreateUserPoolDomain`リクエストをブロックします。これにより、VPC にあるシステムからユーザープールにドメインを追加できなくなります。すべてのシステムからドメインが追加されないようにするには、次の例のような[リソースコントロールポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) (RCP) を に適用します AWS アカウント。このポリシーは、指定されたユーザープールに対する`CreateUserPoolDomain`アクションをブロックします。

```
{
    "Version": "2012-10-17", 		 	 	 		 	 	 
    "Statement": [
        {
            "Principal": "*",
            "Effect": "Deny",
            "Action": [
                "cognito-idp:CreateUserPoolDomain"
            ],
            "Resource": "arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_EXAMPLE"
        }
    ]
}
```

ユーザープールにはドメインがあり、いずれの場合もそのドメインが で使用できない場合があります AWS PrivateLink。`cognito-idp` [サービスエンドポイント](https://docs.aws.amazon.com/general/latest/gr/cognito.html#cognito-idp-region)へのすべての SDK ベースの[ユーザープール API リクエスト](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncognitouserpools.html)は AWS PrivateLink、 を除く を通じてリクエストを受け入れます`CreateUserPoolDomain`。ユーザープール API サービスエンドポイントとドメインエンドポイントは、パブリックインターネットパスを介して常にアクセスできます。パブリックソースからのアクセスに対処するには、[AWS WAF ウェブ ACLs](user-pool-waf.md)。

#### ユーザープールオペレーションに対するポリシーの影響
<a name="vpc-endpoint-considerations-policy-effects"></a>

すべてのユーザープール API オペレーションは、通常はパブリックおよび未認証であっても、VPC エンドポイントポリシーとリソースコントロールポリシー (RCPs) で制御できます。VPC 条件キーを使用して、アイデンティティベースのポリシーのユーザープールアクセスに制限を適用することもできます。[SigV4 形式の](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)認証情報を含むリクエストのみが、アイデンティティベースのポリシーで制御できます。マネージドログインとクラシックホスト UI オペレーションは別のカテゴリであり、VPC 転送やアクションへのポリシーの適用には使用できません。

**認証されていないオペレーション**  
クライアント側のアプリケーションの Amazon Cognito オペレーションは SigV4 で認証されません。オペレーションの例は、 のポリシーの例にあります[インターフェイスエンドポイントのエンドポイントポリシーを作成するエンドポイントポリシーを作成するアイデンティティベースのポリシーを作成する](#vpc-endpoint-policy)。認証されていないオペレーションのその他の例は、 `GetUser`および です`AssociateSoftwareToken`。これらのオペレーションを[アイデンティティベースのポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)に追加しても、効果はありません。ただし、VPC エンドポイントポリシーと [RCPs](#vpc-endpoint-considerations-rcps) では、これらのアクションへのアクセスを許可または制限できます。

認証されていないオペレーションは IAM プリンシパルに関連付けられません。VPC エンドポイントポリシーまたは RCP は、これらのアクションのすべてのプリンシパルを許可する必要があります。

**認証されたオペレーション**  
ユーザープール管理とサーバー側の認証の API オペレーション*は*、SigV4 で認証されます。認証されたオペレーションの場合、VPC エンドポイントに適用する[エンドポイントポリシー](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)、組織内の[リソースコントロールポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)、およびプリンシパルに適用する[アイデンティティベースのポリシー](#identity-based-vpc-policy)を使用してプリンシパルを制限できます。ID ベースポリシーとリソースコントロールポリシーは、 `aws:SourceVpc` や などの[ネットワークベースの条件キー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-network-properties)を使用して VPC 対応です`aws:SourceVpce`。

ユーザープールの API オペレーションのサーバー側、クライアント側、管理クラスの詳細については、「」を参照してください[API 認証と SDK 認証の認可モデル](authentication-flows-public-server-side.md)。

### ID プールと AWS PrivateLink
<a name="vpc-endpoint-considerations-identity-pools"></a>

Amazon Cognito ID プールは、 を介したすべての API オペレーションをサポートします AWS PrivateLink。

**Topics**
+ [サポートされているオペレーション](#vpc-endpoint-considerations-identity-pools-operations)
+ [AWS STS 統合によるネットワークコンテキストの制限](#vpc-endpoint-considerations-identity-pools-sts)
+ [サービス固有のコンテキストキー](#vpc-endpoint-considerations-identity-pools-context-keys)

#### サポートされているオペレーション
<a name="vpc-endpoint-considerations-identity-pools-operations"></a>

すべての ID プール API オペレーションは、インターフェイスエンドポイントを介してサポートされます。ID プールにはドメインエンドポイントがなく、同じ制限の対象ではありません。ただし、ID プールは との統合により、ネットワークベースのアクセスコントロールに特に考慮事項があります AWS STS。

#### AWS STS 統合によるネットワークコンテキストの制限
<a name="vpc-endpoint-considerations-identity-pools-sts"></a>

ID プールは、 オペレーションを使用して AWS STS `AssumeRoleWithWebIdentity`一時的な AWS 認証情報を提供します。拡張認証フロー AWS PrivateLink で ID プールが AWS STS を呼び出すと、`aws:SourceIp`、、 などのネットワークコンテキストキーには`aws:SourceVpc`、アプリケーションのネットワークコンテキストからではなく、ID プールサービスインフラストラクチャの値`aws:SourceVpce`が含まれます。

IAM ロールの信頼ポリシーまたはリソースコントロールポリシー (RCPs) がネットワークベースの条件キーを使用してアクセスを制限すると、ID プールオペレーションが予期せず拒否される可能性があります。この制限に対処するには、次のいずれかの方法を使用できます。

**サービス識別のプリンシパルタグ**  
ID プールで使用される IAM ロールにタグを付け、プリンシパルに適切なタグがある場合にオペレーションを許可するようにポリシーを変更します。まず、ID プールロールにタグを追加します。

```
aws iam tag-role \
    -\-role-name MyIdentityPoolRole \
    -\-tags Key=CognitoServiceCall,Value=true
```

次に、ネットワークベースのポリシーを変更して、タグ付けされたプリンシパルを許可します。例えば、RCP の場合:

```
{
    "Version": "2012-10-17", 		 	 	 		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Resource": "*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": ["allowed-ip-ranges"]
                },
                "StringNotEqualsIfExists": {
                    "aws:ResourceTag/CognitoServiceCall": "true"
                }
            }
        }
    ]
}
```

#### サービス固有のコンテキストキー
<a name="vpc-endpoint-considerations-identity-pools-context-keys"></a>

ID プールは、VPC エンドポイントポリシーと RCPs。これらのコンテキストキーを使用すると、きめ細かなアクセスコントロールを有効にし、ポリシーで認証されたユーザーと認証されていないユーザーを区別できます。

**[GetId](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetId.html)、[GetCredentialsForIdentity](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetCredentialsForIdentity.html)[GetOpenIdToken](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetOpenIdToken.html)、[UnlinkIdentity](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_UnlinkIdentity.html) などのnon-SigV4 オペレーションで使用できるサービス固有のコンテキストキー**
+ `cognito-identity-unauth:IdentityPoolArn` - 認証されていないユーザーの ID プール ARN でアクセスをフィルタリングします
+ `cognito-identity-unauth:AccountId` - 認証されていないユーザーの AWS アカウント ID でアクセスをフィルタリングします
+ `cognito-identity-auth:IdentityPoolArn` - 認証されたユーザーの ID プール ARN でアクセスをフィルタリングします
+ `cognito-identity-auth:AccountId` - 認証されたユーザーの AWS アカウント ID でアクセスをフィルタリングします

**[DeleteIdentities](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_DeleteIdentities.html) や [DescribeIdentity](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_DescribeIdentity.html) などの SigV4 オペレーションで使用できるサービス固有のコンテキストキー**
+ `cognito-identity:IdentityPoolArn` - ID プール ARN でアクセスをフィルタリングします

次の例に示すように、VPC エンドポイントポリシーでこれらのコンテキストキーを使用して、認証ステータスに基づいてアクセスを制限できます。

```
{
    "Version": "2012-10-17", 		 	 	 		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "cognito-identity:GetId",
                "cognito-identity:GetCredentialsForIdentity"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "cognito-identity-unauth:IdentityPoolArn": "arn:aws:cognito-identity:us-east-1:123456789012:identitypool/us-east-1:12345678-ffff-ffff-ffff-123456"
                }
            }
        }
    ]
}
```

## リソースコントロールポリシーによるアクセスの制御
<a name="vpc-endpoint-considerations-rcps"></a>

Amazon Cognito は、リソースコントロール[ポリシー (RCP) によるリソース](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)へのアクセスの制御をサポートしています。 RCPs [ネットワークベースの条件キー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-network-properties)を使用すると、RCPs はユーザープールと ID プール AWS PrivateLink へのアクセスが許可されているネットワークとアクションを定義できます。RCPs の `Action`ステートメントは、認証されたユーザープール API オペレーションと認証されていないユーザープール API オペレーションの両方へのアクセスを制御できます。

たとえば、次のポリシー例では、特定の VPC からすべてのユーザープールへのアクセスを禁止しています。

```
{
  "Version": "2012-10-17", 		 	 	 
  "Statement": [
    {
      "Sid": "DenyCognitoAccessOutsideVPC",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "cognito-idp:*",
      "Resource": "*",
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:SourceVpc": "vpc-02d6770f46ef1653b"
        }
      }
    }
  ]
}
```

## Amazon Cognito のインターフェイスエンドポイントを作成する
<a name="vpc-endpoint-create"></a>

Amazon Cognito のインターフェイスエンドポイントは、Amazon VPC コンソールまたは AWS Command Line Interface () を使用して作成できますAWS CLI。詳細については、「*AWS PrivateLink ガイド*」の「[インターフェイスエンドポイントを作成](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws)」を参照してください。

次のサービス名を使用して、Amazon Cognito ユーザープールのインターフェイスエンドポイントを作成します。

```
com.amazonaws.region.cognito-idp
```

次のサービス名を使用して、Amazon Cognito ID プールのインターフェイスエンドポイントを作成します。

```
com.amazonaws.region.cognito-identity
```

インターフェイスエンドポイントのプライベート DNS を有効にすると、デフォルトのリージョン DNS 名を使用して Amazon Cognito に API リクエストを行うことができます。たとえば、ユーザープール`cognito-idp.us-east-1.amazonaws.com`の場合は 、アイデンティティプール`cognito-identity.us-east-1.amazonaws.com`の場合は です。

## インターフェイスエンドポイントのエンドポイントポリシーを作成する
<a name="vpc-endpoint-policy"></a>

エンドポイントポリシーは、インターフェイスエンドポイントにアタッチできる IAM リソースです。デフォルトのエンドポイントポリシーでは、インターフェイスエンドポイントを介して Amazon Cognito へのフルアクセスを許可します。VPC から Amazon Cognito に許可されるアクセスを制御するには、カスタムエンドポイントポリシーをインターフェイスエンドポイントにアタッチします。

エンドポイントポリシーは以下の情報を指定します。
+ アクションを実行できるプリンシパル (AWS アカウント、IAM ユーザー、IAM ロール)。
+ 実行可能なアクション。
+ このアクションを実行できるリソース。
+ リクエストが許可または拒否される前に満たす必要がある条件。

詳細については、「*AWS PrivateLink ガイド*」の「[Control access to services using endpoint policies](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)」を参照してください。

**例: ユーザープールアクションの VPC エンドポイントポリシー**  
ユーザープールのカスタムエンドポイントポリシーの例を次に示します。このポリシーをインターフェイスエンドポイントにアタッチすると、すべてのリソースのすべてのプリンシパルに対して、リストされているユーザープールアクションへのアクセスが許可されます。

```
{
   "Version": "2012-10-17", 		 	 	 		 	 	 
   "Statement": [
      {
         "Principal": { 
            "AWS": "arn:aws:iam::123456789012:assumed-role/MyWebAppRole/MyWebAppSession"
         }, 
         "Effect": "Allow",
         "Action": [
            "cognito-idp:AdminInitiateAuth",
            "cognito-idp:AdminRespondToAuthChallenge",
            "cognito-idp:AdminSetUserPassword"
         ],
         "Resource":"arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_EXAMPLE"
      },
      {
         "Effect": "Allow",
         "Action": [
            "cognito-idp:InitiateAuth",
            "cognito-idp:RespondToAuthChallenge",
            "cognito-idp:ForgotPassword",
            "cognito-idp:ConfirmForgotPassword"
         ],
         "Resource":"arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_EXAMPLE"
      }
   ]
}
```

**例: ID プールアクションの VPC エンドポイントポリシー**  
ID プールのカスタムエンドポイントポリシーの例を次に示します。このポリシーは、サービス固有のコンテキストキーを使用して、特定の ID プールから認証されたユーザーへのアクセスを制限します。

```
{
   "Version": "2012-10-17", 		 	 	 		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": "*",
         "Action": [
            "cognito-identity:GetId",
            "cognito-identity:GetCredentialsForIdentity",
            "cognito-identity:GetOpenIdToken"
         ],
         "Resource": "*",
         "Condition": {
            "StringEquals": {
               "cognito-identity-auth:IdentityPoolArn": "arn:aws:cognito-identity:us-east-1:123456789012:identitypool/us-east-1:12345678-ffff-ffff-ffff-123456"
            }
         }
      }
   ]
}
```

## AWS PrivateLink オペレーションのアイデンティティベースのポリシーを作成する
<a name="identity-based-vpc-policy"></a>

[ID ベースのポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_id-based)は、 AWS プリンシパルにアタッチできる IAM リソースです。IAM 認証オペレーションのアイデンティティベースのポリシーを使用して、VPC エンドポイントを介して Amazon Cognito へのアクセスを制御できます。エンドポイントポリシーとは異なり、アイデンティティベースのポリシーでは、認証されていないオペレーションのアクセス許可を設定することはできません。認証されたオペレーションまたは管理オペレーションには、[署名バージョン 4 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)の承認が必要です。ユーザープールの場合、認証されたオペレーションには、[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) などのサーバー側の認証リクエストと[UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) などの管理リクエストが含まれます。ID プールの場合、認証されたオペレーションには [DeleteIdentities](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_DeleteIdentities.html) や [DescribeIdentity](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_DescribeIdentity.html) などの管理リクエストが含まれます。

アイデンティティベースのポリシーでは、次の情報を指定します。
+ 実行可能なアクション。
+ このアクションを実行できるリソース。
+ リクエストが許可または拒否される前に満たす必要がある条件。

**例: ユーザープールサーバー側の認証のアイデンティティベースのポリシー**  
次のポリシー例では、指定されたエンドポイントから、指定されたユーザープール内のリストされたユーザープールアクションへのアクセスを許可します。このポリシーをウェブアプリケーションの引き受けた IAM ロールに適用します。

```
{
    "Version": "2012-10-17", 		 	 	 		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cognito-idp:AdminInitiateAuth",
                "cognito-idp:AdminRespondToAuthChallenge",
                "cognito-idp:AdminSetUserPassword"
            ],
            "Resource": "arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_EXAMPLE",
            "Condition": {
                "StringEquals": {
                    "aws:SourceVpce": "vpce-1a2b3c4d"
                }
            }
        }
    ]
}
```

**例: ID プール管理オペレーションの ID ベースのポリシー**  
次のポリシー例では、指定された VPC エンドポイントから ID プール管理アクションへのアクセスを許可します。ID プール管理を実行する必要がある IAM プリンシパルにこのポリシーを適用します。

```
{
    "Version": "2012-10-17", 		 	 	 		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cognito-identity:DeleteIdentities",
                "cognito-identity:DescribeIdentity"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceVpce": "vpce-1a2b3c4d"
                },
                "StringEquals": {
                   "cognito-identity:IdentityPoolArn": "arn:aws:cognito-identity:us-east-1:123456789012:identitypool/us-east-1:12345678-ffff-ffff-ffff-123456"
                }
            }
        }
    ]
}
```

# Amazon Cognito のコンプライアンス検証
<a name="compliance-validation"></a>

サードパーティーの監査者は、複数のコンプライアンスプログラムの一環として Amazon Cognito のセキュリティと AWS コンプライアンスを評価します。これらのプログラムには、SOC、PCI、FedRAMP、HIPAA などがあります。

特定のコンプライアンスプログラムの対象となる AWS サービスのリストについては、「コンプライアンス[AWS プログラムの対象となるサービスコンプライアンス](https://aws.amazon.com/compliance/services-in-scope/)」を参照してください。一般的な情報については、「[AWS コンプライアンスプログラム](https://aws.amazon.com/compliance/programs/)」を参照してください。

を使用して、サードパーティーの監査レポートをダウンロードできます AWS Artifact。詳細については、[「Downloading reports in AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)」を参照してください。

Amazon Cognito の使用時におけるユーザーのコンプライアンス責任は、データの機密性、会社のコンプライアンス目的、および適用される法律と規制に応じて異なります。 AWS は、コンプライアンスに役立つ以下のリソースを提供しています。
+ 「[セキュリティ & コンプライアンス クイックリファレンスガイド](https://aws.amazon.com/quickstart/?awsf.quickstart-homepage-filter=categories%23security-identity-compliance)」– これらのデプロイガイドには、アーキテクチャ上の考慮事項の説明と、 AWSでセキュリティとコンプライアンスに重点を置いたベースライン環境をデプロイするためのステップが記載されています。
+ [HIPAA セキュリティとコンプライアンスのためのアーキテクチャホワイトペーパー ](https://docs.aws.amazon.com/whitepapers/latest/architecting-hipaa-security-and-compliance-on-aws/architecting-hipaa-security-and-compliance-on-aws.pdf) – このホワイトペーパーでは、企業が AWS を使用して HIPAA 準拠のアプリケーションを作成する方法について説明します。
+ [AWS コンプライアンスリソース](https://aws.amazon.com/compliance/resources/) – このワークブックとガイドのコレクションは、お客様の業界や地域に適用される場合があります。
+ [「 デベロッパーガイド」のルールを使用してリソースを評価する](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) – AWS Configは、リソース設定が内部プラクティス、業界ガイドライン、および規制にどの程度準拠しているかを評価します。 *AWS Config *
+ [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html) – この AWS サービスは、 内のセキュリティ状態を包括的に把握 AWS し、セキュリティ業界標準とベストプラクティスへの準拠を確認するのに役立ちます。

# Amazon Cognito の耐障害性
<a name="disaster-recovery-resiliency"></a>

 AWS グローバルインフラストラクチャは、 AWS リージョンとアベイラビリティーゾーンを中心に構築されています。リージョンには、低レイテンシー、高いスループット、そして高度の冗長ネットワークで接続されている複数の物理的に独立および隔離されたアベイラビリティーゾーンがあります。アベイラビリティーゾーンでは、ゾーン間で中断することなく自動的にフェイルオーバーするアプリケーションとデータベースを設計および運用することができます。アベイラビリティーゾーンは、従来の単一または複数のデータセンターインフラストラクチャよりも可用性、フォールトトレランス、および拡張性が優れています。

 AWS リージョンとアベイラビリティーゾーンの詳細については、[AWS 「 グローバルインフラストラクチャ](https://aws.amazon.com/about-aws/global-infrastructure/)」を参照してください。

**Topics**
+ [リージョンデータに関する考慮事項](security-cognito-regional-data-considerations.md)

# リージョンデータに関する考慮事項
<a name="security-cognito-regional-data-considerations"></a>

Amazon Cognito ユーザープールは、それぞれ 1 つの AWS リージョンで作成され、そのリージョンにのみユーザープロファイルデータを保存します。ユーザープールは、オプション機能の設定方法に応じて、ユーザーデータを別の AWS リージョンに送信できます。
+ デフォルトの`no-reply@verificationemail.com` E メールアドレス設定は Amazon Cognito ユーザープールでの E メールアドレスのルーティング検証に使用されます。E メールは関連付けられているユーザープールと同じリージョン経由でルーティングされます。
+ Amazon Cognito ユーザープールで Amazon Simple Email Service (Amazon SES) を設定するために別の E メールアドレスが使用されている場合、その E メールアドレスは Amazon SES の E メールアドレスに関連付けられた AWS リージョンを介してルーティングされます。
+ Amazon Cognito ユーザープールからの SMS メッセージは、「[E メールまたは電話による検証の設定](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-email-phone-verification.html)」で特に指定されていない限り、同じリージョンの Amazon SNS 経由で送信されます。
+ Amazon Cognito ユーザープールで Amazon Pinpoint 分析が使用される場合、イベントデータは米国東部 (バージニア北部) リージョンにルーティングされます。

**注記**  
 Amazon Pinpoint は、北米、欧州、アジア、オセアニアの複数の AWS リージョンで利用できます。Amazon Pinpoint リージョンには、Amazon Pinpoint API が含まれています。Amazon Pinpoint リージョンが Amazon Cognito でサポートされている場合、Amazon Cognito は*同じ* Amazon Pinpoint リージョン内の Amazon Pinpoint プロジェクトにイベントを送信します。リージョンが Amazon Pinpoint でサポート*されていない*場合、Amazon Cognito は us-east-1 でのイベントの送信*のみ*をサポートします。Amazon Pinpoint の詳細なリージョン情報については、「[Amazon Pinpoint エンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/pinpoint.html)」および「[Amazon Cognito ユーザープールを使用して Amazon Pinpoint 分析を使用する](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-pinpoint-integration.html)」を参照してください。

# Amazon Cognito のインフラストラクチャセキュリティ
<a name="infrastructure-security"></a>

マネージドサービスである Amazon Cognito は、 AWS グローバルネットワークセキュリティで保護されています。 AWS セキュリティサービスと がインフラストラクチャ AWS を保護する方法については、[AWS 「 クラウドセキュリティ](https://aws.amazon.com/security/)」を参照してください。インフラストラクチャセキュリティのベストプラクティスを使用して環境を AWS 設計するには、*「Security Pillar AWS Well‐Architected Framework*」の[「Infrastructure Protection](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html)」を参照してください。

 AWS 公開された API コールを使用して、ネットワーク経由で Amazon Cognito にアクセスします。クライアントは次をサポートする必要があります。
+ Transport Layer Security (TLS)。TLS 1.2 が必須で、TLS 1.3 をお勧めします。
+ DHE (楕円ディフィー・ヘルマン鍵共有) や ECDHE (楕円曲線ディフィー・ヘルマン鍵共有) などの完全前方秘匿性 (PFS) による暗号スイート。これらのモードは Java 7 以降など、ほとんどの最新システムでサポートされています。

# Amazon Cognito ユーザープールの設定と脆弱性分析
<a name="vulnerability-analysis-and-management"></a>

AWS は、ゲストオペレーティングシステム (OS) やデータベースのパッチ適用、ファイアウォール設定、ディザスタリカバリなどの基本的なセキュリティタスクを処理します。これらの手順は適切な第三者によって確認され、証明されています。詳細については、以下のリソースを参照してください。
+ [Amazon Cognito のコンプライアンス検証](compliance-validation.md)
+ [責任共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)

# AWS Amazon Cognito の マネージドポリシー
<a name="security-iam-awsmanpol"></a>







ユーザー、グループ、ロールにアクセス許可を追加するには、自分でポリシーを記述するよりも AWS 管理ポリシーを使用する方が簡単です。チームに必要な権限のみを提供する [IAM カスタマーマネージドポリシーを作成する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) には時間と専門知識が必要です。すぐに開始するには、 AWS マネージドポリシーを使用できます。これらのポリシーは一般的なユースケースを対象としており、 AWS アカウントで利用できます。 AWS 管理ポリシーの詳細については、*IAM ユーザーガイド*の「 [AWS 管理ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)」を参照してください。

AWS サービスは、 AWS 管理ポリシーを維持および更新します。 AWS 管理ポリシーのアクセス許可は変更できません。サービスでは新しい機能を利用できるようにするために、 AWS マネージドポリシーに権限が追加されることがあります。この種類の更新はポリシーがアタッチされている、すべてのアイデンティティ (ユーザー、グループおよびロール) に影響を与えます。新しい機能が立ち上げられた場合や、新しいオペレーションが使用可能になった場合に、各サービスが AWS マネージドポリシーを更新する可能性が最も高くなります。サービスは AWS マネージドポリシーからアクセス許可を削除しないため、ポリシーの更新によって既存のアクセス許可が損なわれることはありません。

さらに、 は、複数のサービスにまたがるジョブ関数の マネージドポリシー AWS をサポートしています。例えば、**ReadOnlyAccess** AWS 管理ポリシーは、すべての AWS サービスとリソースへの読み取り専用アクセスを提供します。サービスが新機能を起動すると、 は新しいオペレーションとリソースの読み取り専用アクセス許可 AWS を追加します。ジョブ機能のポリシーの一覧および詳細については、「*IAM ユーザーガイド*」の「[AWS のジョブ機能のマネージドポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)」を参照してください。

**AWS Amazon Cognito へのアクセスを許可する マネージド IAM ポリシー**
+ `AmazonCognitoPowerUser` – ID プールとユーザープールのあらゆる側面へのアクセスと管理のための許可。このポリシーの許可を確認するには、「[AmazonCognitoPowerUser](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AmazonCognitoPowerUser)」を参照してください。
+ `AmazonCognitoReadOnly` - ID プールとユーザープールへの読み取り専用アクセスのための許可。このポリシーの許可を確認するには、「[AmazonCognitoReadOnly](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AmazonCognitoReadOnly)」を参照してください。
+ `AmazonCognitoDeveloperAuthenticatedIdentities` – 認証システムが Amazon Cognito と統合するのための許可。このポリシーの許可を確認するには、「[AmazonCognitoDeveloperAuthenticatedIdentities](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AmazonCognitoDeveloperAuthenticatedIdentities)」を参照してください。

これらのポリシーは Amazon Cognito チームによって維持されるため、新しい API が追加されても、ユーザーは引き続き同じアクセスレベルを維持することができます。

**注記**  
新しいアイデンティティプールを作成すると、認証済みユーザーアクセスとゲストユーザーアクセス用の新しいロールを自動的に作成できます。新しい IAM ロールでアイデンティティプールを作成する管理者には、ロールを作成するための IAM アクセス許可も必要です。

認証されていないゲストアクセスを持つ ID プールは、認証されていないユーザーに[セッション](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)ポリシーとして追加の AWS 管理ポリシーを適用します。この AWS 管理ポリシーには、意図した管理用途はありません。代わりに、アイデンティティプールの[拡張認証フロー](https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html)でゲストユーザーに適用できるアクセス許可の範囲が制限されます。詳細については、「[IAM ロール](iam-roles.md)」を参照してください。

**AWS Amazon Cognito がゲストユーザーに付与する マネージド IAM ポリシー**
+ `AmazonCognitoUnAuthedIdentitiesSessionPolicy` - インラインセッションポリシーと組み合わせて、IAM 管理者がアイデンティティプールゲストユーザーに付与できるアクセス許可を制限します。Amazon Cognito は、このポリシーをゲストセッションに自動的に適用します。詳細については、「[ゲストの AWS マネージドセッションポリシー](iam-roles.md#access-policies-managed-policy)」を参照してください。













## Amazon Cognito による AWS マネージドポリシーの更新
<a name="security-iam-awsmanpol-updates"></a>



このサービスがこれらの変更の追跡を開始してからの Amazon Cognito の AWS マネージドポリシーの更新に関する詳細を表示します。このページへの変更に関する自動アラートについては、Amazon Cognito の「[ドキュメント履歴](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-document-history.html)」ページで RSS フィードにサブスクライブしてください。




| 変更 | 説明 | 日付 | 
| --- | --- | --- | 
| AmazonCognitoPowerUser - 変更 | Amazon Cognito は、Amazon Cognito ユーザープールの管理権限ユーザーの AWS End User Messaging SMS API オペレーション [DescribeAccountAttributes](https://docs.aws.amazon.com/pinpoint/latest/apireference_smsvoicev2/API_DescribeAccountAttributes.html) の使用を許可する新しいアクションを追加しました。 | 2025 年 2 月 27 日 | 
| AmazonCognitoUnAuthedIdentitiesSessionPolicy - 変更 | Amazon Cognito は、ID プール内の認証されていない (ゲスト) ユーザー AWS Key Management Service に対して の使用を許可する新しいアクションを追加しました。 | 2024 年 10 月 30 日 | 
| AmazonCognitoUnAuthedIdentitiesSessionPolicy - 変更 | Amazon Cognito は、アイデンティティプール内の認証されていない (ゲスト) ユーザーに対して Amazon Location Service の使用を許可する新しいアクションを追加しました。 | 2024 年 8 月 9 日 | 
| AmazonCognitoUnAuthedIdentitiesSessionPolicy – 新しいポリシー | ID プール内のゲストユーザーの特権スコープダウンのための AWS マネージドポリシーを追加しました。 | 2023 年 7 月 14 日 | 
| AmazonCognitoPowerUser および AmazonCognitoReadOnly– 変更 | パワーユーザーが Amazon Cognito ユーザープールへの AWS WAF ウェブ ACLs の関連付けを表示および管理できるようにする新しいアクセス許可を追加しました。読み取り専用ユーザーが Amazon Cognito ユーザープールへの AWS WAF ウェブ ACLs の関連付けを表示できるようにする新しいアクセス許可を追加しました。 | 2022 年 7 月 19 日 | 
| AmazonCognitoPowerUser - 変更 | Amazon Cognito による Amazon Simple Email Service PutIdentityPolicy および ListConfigurationSets のオペレーションの呼び出しを可能にする新しい許可が追加されました。この変更により、Amazon Cognito ユーザープールは、 Amazon SES 送信認可ポリシーを更新し、ユーザープールの E メール送信設定で Amazon SES の設定を適用できるようになります。 | 2021 年 11 月 17 日 | 
| AmazonCognitoPowerUser - 変更 |  Amazon Cognito による Amazon Simple Notification Service の `GetSMSSandboxAccountStatus` オペレーションの呼び出しを可能にする新しい許可が追加されました。 この変更により、Amazon Cognito ユーザープールは、ユーザープールを通じてすべてのエンドユーザーにメッセージを送信するために、Amazon Simple Notification Service のサンドボックスから乗り換える必要があるかどうかを判断できるようになります。  | 2021 年 6 月 1 日 | 
|  Amazon Cognito が変更の追跡を開始  |  Amazon Cognito は、 AWS 管理ポリシーの変更の追跡を開始しました。  | 2021 年 3 月 1 日 | 