

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

# 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)」を参照してください。