

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

# インターフェイスエンドポイント (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"
                }
            }
        }
    ]
}
```