

# IAM および AWS STS の条件コンテキストキー
<a name="reference_policies_iam-condition-keys"></a>

JSON ポリシーの `Condition` 要素を使用して、すべての AWS リクエストのリクエストコンテキストに含まれるキーの値をテストできます。これらのキーは、リクエスト自体、またはリクエストが参照するリソースに関する情報を示します。ユーザーが要求したアクションを許可する前に、キーが指定された値を持っているかどうかを確認できます。これにより、JSON ポリシーステートメントが着信リクエストと照合するとき、しないときを細かく制御できます。JSON ポリシーで `Condition` 要素を使用する方法の詳細については、「[IAM JSON ポリシー要素Condition](reference_policies_elements_condition.md)」を参照してください。

このトピックでは、IAM サービス (`iam:` プレフィックス付き) および AWS Security Token Service (AWS STS) サービス (`sts:` プレフィックス付き) で定義および提供されているキーについて説明します。他のいくつかの AWS サービスは、そのサービスによって定義されたアクションおよびリソースに関連するサービス固有のキーも提供します。詳細については、「[AWS のサービスのアクション、リソース、および条件キー](reference_policies_actions-resources-contextkeys.html)」を参照してください。条件キーをサポートするサービスのドキュメントには、追加情報がある場合があります。例えば、Amazon S3 リソースのポリシーで使用できるキーについては、[Amazon Simple Storage Service ユーザーガイド](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazon-s3-policy-keys.html#AvailableKeys-iamV2)の「*Amazon S3 ポリシーキー*」を参照してください。

**Topics**
+ [IAM で使用可能なキー](#available-keys-for-iam)
+ [OIDC AWS フェデレーションで使用できるキー](#condition-keys-wif)
+ [SAML ベースの AWS STS フェデレーションに利用可能なキー](#condition-keys-saml)
+ [クロスサービス SAML ベースの AWS STS フェデレーションコンテキストキー](#cross-condition-keys-saml)
+ [AWS STS に利用可能なキー](#condition-keys-sts)

## IAM で使用可能なキー
<a name="available-keys-for-iam"></a>

IAM リソースへのアクセスを制御するポリシーで以下の条件キーを使用できます。

**iam:AssociatedResourceArn**  
[ARN 演算子](reference_policies_elements_condition_operators.md#Conditions_ARN)で動作します。  
宛先サービスでこのロールが関連付けられるリソースの ARN を指定します。通常、リソースは、プリンシパルがロールを渡すサービスに属します。場合によっては、リソースが 3 番目のサービスに属することがあります。たとえば、Amazon EC2 インスタンスで使用するロールを Amazon EC2 Auto Scaling に渡すことができます。この場合、条件は Amazon EC2 インスタンスの ARN と一致します。  
この条件キーは、ポリシーの [PassRole](id_roles_use_passrole.md) アクションにのみ適用されます。他のアクションを制限するために使用することはできません。  
ポリシーで `iam:AssociatedResourceArn` 条件を使用して [PassRole](id_roles_use_passrole.md) アクションを制限する場合、ポリシーで [AddRoleToInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddRoleToInstanceProfile.html) アクションへのアクセスを定義することを意図している場合は、特別な考慮事項が適用されます。この場合、EC2 インスタンス ARN でリージョンまたはインスタンス ID を指定することはできません。ARN 値は `arn:aws:ec2:*:CallerAccountId:instance/*` にする必要があります。他の ARN 値を使用すると、予期しない評価結果が発生する可能性があります。
エンティティがロールを渡すことを許可するには、ID ベースのポリシーでこの条件キーを使用しますが、そのロールが指定されたリソースに関連付けられている場合に限ります。たとえば、IAM ユーザーまたはロールが、AWS アカウント のインスタンスで使用する任意のロールを Amazon EC2 サービスに渡すことを許可できます。IAM ユーザーまたはロールは、ロールを他のサービスに渡すことはできません。  

```
{
    "Effect": "Allow",
    "Action": "iam:PassRole",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "iam:PassedToService": "ec2.amazonaws.com"
        },
        "ArnLike": {
            "iam:AssociatedResourceARN": [
                "arn:aws:ec2:*:111122223333:instance/*"
            ]
        }
    }
}
```
[iam:PassedToService](#ck_PassedToService) をサポートする AWS サービスは、この条件キーもサポートします。

**iam:AWSServiceName**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
このロールがアタッチされる AWS のサービスを指定します。  
この条件キーは [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html) API オペレーションでサポートされています。  
サービスにリンクされたロールを使用してサポートするサービスについては、「[IAM と連携する AWS のサービス](reference_aws-services-that-work-with-iam.md)」を参照し、**[サービスにリンクされたロール]** 列が **[はい]** になっているサービスを検索してください。サービスリンクロールに関するドキュメントをサービスで表示するには、リンクで **[はい]** を選択します。
この例では、サービス名が *access-analyzer.amazonaws.com* である場合、エンティティが [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html) API オペレーションを使用して、サービスにリンクされたロールを作成することを許可します。    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
       "Effect": "Allow",
       "Action": "iam:CreateServiceLinkedRole",
       "Resource": "*",
       "Condition": {
         "StringLike": {
           "iam:AWSServiceName": "access-analyzer.amazonaws.com"
         }
       }
     }]
 }
```

**iam:FIDO-certification**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
FIDO セキュリティキーの登録時に MFA デバイスの FIDO 証明書レベルをチェックします。デバイス証明書は [FIDO Alliance Metadata Service (MDS)](https://fidoalliance.org/metadata/) から取得できます。FIDO セキュリティキーの証明書ステータスまたはレベルが変更されても、デバイスを登録し直して更新された証明書情報を取得しない限り、FIDO セキュリティキーが更新されることはありません。  
L1、L1plus、L2、L2plus、L3、L3plus に使用できる値  
この例では、セキュリティキーを登録し、デバイスの FIDO レベル1 plus 証明書を取得します。    
****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-certification": "L1plus"
                }
            }
        }
    ]
                  
 }
```

**iam:FIDO-FIPS-140-2-certification**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
FIDO セキュリティキーの登録時に MFA デバイスの FIPS-140-2 検証証明書レベルをチェックします。デバイス証明書は [FIDO Alliance Metadata Service (MDS)](https://fidoalliance.org/metadata/) から取得できます。FIDO セキュリティキーの証明書ステータスまたはレベルが変更されても、デバイスを登録し直して更新された証明書情報を取得しない限り、FIDO セキュリティキーが更新されることはありません。  
L1、L2、L3、L4 に使用できる値  
この例では、セキュリティキーを登録し、デバイスの FIPS-140-2 レベル2 証明書を取得します。    
****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-2-certification": "L2"
                }
            }
        }
    ]
                  
 }
```

**iam:FIDO-FIPS-140-3-certification**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
FIDO セキュリティキーの登録時に MFA デバイスの FIPS-140-3 検証証明書レベルをチェックします。デバイス証明書は [FIDO Alliance Metadata Service (MDS)](https://fidoalliance.org/metadata/) から取得できます。FIDO セキュリティキーの証明書ステータスまたはレベルが変更されても、デバイスを登録し直して更新された証明書情報を取得しない限り、FIDO セキュリティキーが更新されることはありません。  
L1、L2、L3、L4 に使用できる値  
この例では、セキュリティキーを登録し、デバイスの FIPS-140-3 レベル3 証明書を取得します。    
****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-3-certification": "L3"
                }
            }
        }
    ]
                  
 }
```

**iam:OrganizationsPolicyId**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
指定された AWS Organizations IDを持つポリシーがリクエストで使用されたポリシーと一致するかどうかを確認します。この条件キーを使用する IAM ポリシーの例を表示するには、「[IAM: AWS Organizations ポリシーのサービスの最終アクセス時間情報を表示](reference_policies_examples_iam_service-accessed-data-orgs.md)」を参照してください。

**iam:PassedToService**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
ロールを渡すことができるサービスのサービスプリンシパルを指定します。この条件キーは、ポリシーの [PassRole](id_roles_use_passrole.md) アクションにのみ適用されます。他のアクションを制限するために使用することはできません。  
ポリシーでこの条件キーを使用する場合は、サービスプリンシパルを使用してサービスを指定します。サービスプリンシパルは、ポリシーの `Principal` 要素で指定できるサービスの名前です。通常の形式は、`SERVICE_NAME_URL.amazonaws.com` です。  
特定のサービスにのみロールを渡すことができるようにユーザーを制限するには、`iam:PassedToService` を使用します。たとえば、ユーザーは、代理で Amazon S3 バケットにログデータを書き込むために CloudWatch を信頼する[サービスロール](id_roles.md#iam-term-service-role)を作成する場合があります。次に、ユーザーは新しいサービスロールにアクセス許可ポリシーと信頼ポリシーをアタッチする必要があります。この場合、信頼ポリシーで、`cloudwatch.amazonaws.com` 要素の `Principal` を指定する必要があります。ユーザーが CloudWatch にロールを渡すことを許可するポリシーを表示するには、「[IAM: IAM ロールを特定の AWS のサービスに渡す](reference_policies_examples_iam-passrole-service.md)」を参照してください。  
この条件キーを使用することで、ユーザーは、指定したサービスにのみ、サービスロールを作成することができます。たとえば、前述のポリシーを持つユーザーが Amazon EC2 のサービスロールを作成しようとすると、オペレーションは失敗します。このエラーは、ユーザーにロールを Amazon EC2 に渡すアクセス許可がないために発生します。  
ロールをサービスに渡し、次に別のサービスにロールを渡すことがあります。`iam:PassedToService` には、ロールを引き受ける最終サービスのみが含まれ、ロールを渡す中間サービスは含まれません。  
一部のサービスでは、この条件キーをサポートしていません。

**iam:PermissionsBoundary**  
[ARN 演算子](reference_policies_elements_condition_operators.md#Conditions_ARN)で動作します。  
指定したポリシーが IAM プリンシパルリソースのアクセス許可の境界としてアタッチされていることを確認します。詳細については、「[IAM エンティティのアクセス許可境界](access_policies_boundaries.md)」を参照してください。

**iam:PolicyARN**  
[ARN 演算子](reference_policies_elements_condition_operators.md#Conditions_ARN)で動作します。  
管理ポリシーを含むリクエストの管理ポリシーの Amazon リソースネーム (ARN) を確認します。詳細については、「[ポリシーへのアクセスの制御](access_controlling.md#access_controlling-policies)」を参照してください。

**iam:RegisterSecurityKey**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
MFA デバイス有効化の現在の状態をチェックします。  
`Create` または `Activate` に使用できる値です。  
この例では、セキュリティキーを登録し、デバイスの FIPS-140-3 レベル1 証明書を取得します。    
****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-3-certification": "L1"
                }
            }
        }
    ]
                  
 }
```

**iam:ResourceTag/{{key-name}}**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
リソース (ユーザーまたはロール) を識別するためにアタッチされたタグが、指定されたキーの名前および値と一致するかどうかをチェックします。  
IAM と AWS STS は `iam:ResourceTag` IAM 条件キーと `aws:ResourceTag`グローバル条件キーの両方をサポートします。
カスタム属性は、キーバリューのペアの形式で IAM リソースに追加できます。IAM リソース のタグ付けの詳細については、「[AWS Identity and Access Management リソースのタグ](id_tags.md)」を参照してください。`ResourceTag` リソース (IAM リソースを含む) への[アクセスを制御](access_tags.md#access_tags_control-resources)するには AWS を使用します。ただし、IAM ではグループのタグをサポートしていないため、タグを使用してグループへのアクセスを制御することはできません。  
この例は、**status=terminated** タグを持つユーザーの削除を許可する ID ベースポリシーを作成する方法を示しています。このポリシーを使用するには、サンプルポリシーの{{イタリック体のプレースホルダーテキスト}}を独自の情報に置き換えます。次に、「[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)」の手順に従います。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": "iam:DeleteUser",
        "Resource": "*",
        "Condition": {"StringEquals": {"iam:ResourceTag/{{status}}": "{{terminated}}"}}
    }]
}
```

**iam:ServiceSpecificCredentialAgeDays**  
[桁演算子](reference_policies_elements_condition_operators.md#Conditions_Numeric)で動作します。  
この条件キーは、有効期限の設定に基づいてサービス固有の認証情報の作成を制限します。これにより、作成できるサービス固有の認証情報の最大有効期間を日数で制御できます。  
日数の有効範囲は 1～36600 (最小 1 日、最大 36600 日) です。  
この条件キーは [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html) API オペレーションでサポートされています。  
この例では、90 日以内に期限切れになる場合にのみ、Amazon Bedrock サービスのサービス固有の認証情報の作成をユーザーに許可します。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceSpecificCredential",
            "Resource": "arn:aws:iam::111122223333:user/{{username}}",
            "Condition": {
                "StringEquals": {
                    "iam:ServiceSpecificCredentialServiceName": "{{bedrock.amazonaws.com}}"
                },
                "NumericLessThanEquals": {
                    "iam:ServiceSpecificCredentialAgeDays": "{{90}}"
                }
            }
        }
    ]
}
```

**iam:ServiceSpecificCredentialServiceName**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
サービス固有の認証情報を管理するときに使用できる AWS サービスを指定します。この条件キーを使用すると、サービス固有の認証情報を管理するときに許可される AWS サービスを制限できます。  
この条件キーは以下の API オペレーションでサポートされています。  
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html)
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html)
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html)
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html)
正確な値形式を持つサービス固有の認証情報では以下のサービスがサポートされています。  
+ `bedrock.amazonaws.com`
+ `cassandra.amazonaws.com`
+ `codecommit.amazonaws.com`
この例では、Amazon Bedrock サービスに限り、[https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html) API オペレーションを使用したサービス固有の認証情報の作成をユーザーに許可します。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceSpecificCredential",
            "Resource": "arn:aws:iam::111122223333:user/{{username}}",
            "Condition": {
                "StringEquals": {
                    "iam:ServiceSpecificCredentialServiceName": "{{bedrock.amazonaws.com}}"
                }
            }
        }
    ]
}
```

**iam:DelegationDuration**  
[桁演算子](reference_policies_elements_condition_operators.md#Conditions_Numeric)で動作します。  
委任リクエストでリクエストされた一時アクセスの期間に基づいて、アクセスをフィルタリングします。  
製品プロバイダーは、この条件キーを使用して、顧客に送信される委任リクエストで許可される最大期間を管理できます。期間は秒単位で指定され、顧客が交換トークンを発行した後に、一時的な認証情報を有効にする期間を決定します。それにより、製品プロバイダーは、自らのユースケースに基づいてアクセス期間の上限に関する内部ポリシーを適用できます。  
この条件キーは `CreateDelegationRequest` API オペレーションでサポートされています。  
こちらの例では、リクエストされた期間が 7200 秒 (2 時間) 以下である場合のみ委任リクエストの作成が許可されます。  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateDelegationRequest",
            "Resource": "*",
            "Condition": {
                "NumericLessThanEquals": {
                    "iam:DelegationDuration": "7200"
                }
            }
        }
    ]
}
```

**iam:NotificationChannel**  
[ARN 演算子](reference_policies_elements_condition_operators.md#Conditions_ARN)で動作します。  
委任リクエストの通知を受信するために、指定された Amazon SNS トピック ARN に基づいてアクセスをフィルタリングします。  
製品プロバイダーは、この条件キーを使用することで、CreateDelegationRequest API コールの委任リクエストの通知に使用できる SNS トピックを制限できます。製品プロバイダーは、ステータス変更の通知を受信したりトークンを交換したりするために SNS トピックを指定する必要があります。それにより、通知は、製品プロバイダーの組織内の、承認されたチャネルにのみ送信されます。  
この条件キーは `CreateDelegationRequest` API オペレーションでサポートされています。  
こちらの例では、通知に特定の SNS トピックを使用する場合のみ、委任リクエストの作成が許可されます。  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateDelegationRequest",
            "Resource": "*",
            "Condition": {
                "ArnEquals": {
                    "iam:NotificationChannel": "arn:aws:sns:us-east-1:123456789012:delegation-notifications"
                }
            }
        }
    ]
}
```

**iam:TemplateArn**  
[ARN 演算子](reference_policies_elements_condition_operators.md#Conditions_ARN)で動作します。  
委任リクエストでアクセス許可を定義するために使用される、ポリシーテンプレート ARN に基づき、アクセスをフィルタリングします。  
製品プロバイダーは、この条件キーを使用することで、CreateDelegationRequest API コールに使用できるポリシーテンプレートを管理できます。ポリシーテンプレートは、製品プロバイダーが顧客のアカウントでリクエストする一時的なアクセス許可を定義します。それにより、製品プロバイダーは、委任リクエストの作成時に使用可能な、登録済みのポリシーテンプレートを制限できます。  
この条件キーは `CreateDelegationRequest` API オペレーションでサポートされています。  
こちらの例では、特定のパートナードメインのポリシーテンプレートが使用される場合にのみ、委任リクエストの作成が許可されます。  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateDelegationRequest",
            "Resource": "*",
            "Condition": {
                "ArnLike": {
                    "iam:TemplateArn": "arn:aws:iam:::delegation-template/partner_*"
                }
            }
        }
    ]
}
```

**iam:DelegationRequestOwner**  
[ARN 演算子](reference_policies_elements_condition_operators.md#Conditions_ARN)で動作します。  
この委任リクエストを所有している AWS ID またはプリンシパルに基づき、アクセスをフィルタリングします。  
顧客は、この条件キーを使用することで、所有権に基づいて、委任リクエストにアクションを実行できるユーザーを管理できます。委任リクエストの所有者は、この委任リクエストを開始または受信した顧客アカウントの、AWS ID またはプリンシパルです。  
この条件キーは以下の API オペレーションでサポートされています。  
+ `GetDelegationRequest`
+ `AcceptDelegationRequest`
+ `RejectDelegationRequest`
+ `SendDelegatedToken`
+ `ListDelegationRequests`
+ `UpdateDelegationRequest`
こちらの例では、ユーザーが所有している委任リクエストのみを管理することが、ユーザーに許可されます。  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:GetDelegationRequest",
                "iam:AcceptDelegationRequest",
                "iam:RejectDelegationRequest",
                "iam:SendDelegatedToken",
                "iam:UpdateDelegationRequest",
                "iam:ListDelegationRequests"
            ],
            "Resource": "*",
            "Condition": {
                "ArnEquals": {
                    "iam:DelegationRequestOwner": "${aws:PrincipalArn}"
                }
            }
        }
    ]
}
```

## OIDC AWS フェデレーションで使用できるキー
<a name="condition-keys-wif"></a>

OIDC フェデレーションを使用して、OpenID Connect 互換の ID プロバイダー (IdP) を介して認証されたユーザーに対して、AWS アカウントの IAM OpenID Connect (OIDC) ID プロバイダーへの一時的なセキュリティ認証情報を付与できます。このようなプロバイダーの例として、GitHub、Amazon Cognito、Login with Amazon、Google などがあります。自分の IdP から取得した ID トークンとアクセストークン、および Amazon Elastic Kubernetes Service ワークロードに付与された[サービスアカウントトークン](https://docs.aws.amazon.com/eks/latest/userguide/service-accounts.html#service-account-tokens)を使用できます。

AWS OIDC の条件コンテキストキーを使用し、フェデレーティッドプリンシパルによる特定のプロバイダー、アプリ、ユーザーに関連付けられたリソースへのアクセスを制限するポリシーを作成できます。これらのキーは、通常、ロールの信頼ポリシーで使用されます。OIDC プロバイダーの名前 (`token.actions.githubusercontent.com`) の後にクレーム (`:aud`) を付けて条件キー (`token.actions.githubusercontent.com:aud`) を定義します。

一部の OIDC フェデレーション条件キーは、リソースアクセスを承認するためにロールセッションで使用できます。「**セッションで使用可能**」列の値が「**はい**」の場合、これらの条件キーをポリシーで使用して、他の AWS サービスでユーザーがアクセスできる内容を定義できます。クレームがセッションで使用できない場合、OIDC 条件コンテキストキーは、最初の [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) 認証のロール信頼ポリシーでのみ使用できます。

IdP を選択すると、IdP からのクレームが AWS の IAM 条件コンテキストキーにどのようにマッピングされるかを確認できます。GitHub と Google のキーの詳細については、**[デフォルト]** タブを参照してください。

------
#### [ Default ]

「デフォルト」には、標準の OIDC クレームと、そのクレームが AWS の AWS STS 条件コンテキストキーにどのようにマッピングされるかがリストされています。これらのキーを使用して、ロールへのアクセスを制御できます。そのためには、「**AWS STS 条件キー**」を「**IdP JWT クレーム**」列の値と比較します。IdP がタブオプションに表示されていない場合は、このマッピングを使用します。

OIDC JWT ID トークンでデフォルト実装を使用する IdPs の例としては、GitHub Actions ワークフローと Google があります。


| AWS STS 条件キー | IdP JWT クレーム | セッションで使用可能 | 
| --- | --- | --- | 
| amr | amr | はい | 
| aud | azp<br />`azp` の値が設定されていない場合、`aud` 条件キーは `aud` クレームにマッピングされます。 | はい | 
| E メール | E メール | いいえ | 
| oaud | aud | いいえ | 
| sub | sub | はい | 

GitHub での OIDC 条件コンテキストキーの使用の詳細については、「[GitHub OIDC ID プロバイダーのロールの設定](id_roles_create_for-idp_oidc.md#idp_oidc_Create_GitHub)」を参照してください。Google `aud` フィールドおよび `azp` フィールドの詳細については、[Google Identity Platform OpenID 接続](https://developers.google.com/identity/protocols/OpenIDConnect)ガイドを参照してください。

**amr**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。このキーには複数の値が含まれるため、[条件 set 演算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)を使用してポリシーでキーをテストします。  
**例**: `token.actions.githubusercontent.com:amr`  
認証方法リファレンスには、ユーザーに関するログイン情報が含まれます。キーには、次の値が含まれている可能性があります。  
+ ユーザーが認証されていない場合、キーには `unauthenticated` のみが含まれています。
+ ユーザーが認証されている場合、キーには `authenticated` という値と、呼び出しで使用されるログインプロバイダーの名前 (`accounts.google.com`) が含まれています。

**aud**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例:**   
+ `accounts.google.com:aud`
+ `token.actions.githubusercontent.com:aud`
`aud` 条件キーを使用して、オーディエンスがポリシーで指定したものと一致することを確認します。同じ ID プロバイダーに対して、aud キーと sub キーを一緒に使用することができます。  
この条件キーは、以下のトークンフィールドから設定されます。  
+ `azp` フィールドが設定されていない場合の、アプリケーションの `aud` for OAuth 2.0 Google クライアント ID。`azp` フィールドが設定されると、`aud` フィールドは `accounts.google.com:oaud` 条件キーと一致します。
+ `azp` フィールドが設定されている場合の `azp`。これは、ウェブアプリケーションおよび Android アプリに異なる OAuth 2.0 Google クライアント ID があるが同じ Google API プロジェクトを共有している、ハイブリッドアプリで発生する可能性があります。
`accounts.google.com:aud` 条件キーを使用してポリシーを記述する場合、アプリが `azp` フィールドを設定するハイブリッドアプリであるかどうかを知る必要があります。  
`azp` フィールドが設定されていません  
次のサンプルポリシーは、`azp` フィールドを設定しない非ハイブリッドアプリケーションに対して機能します。この場合、Google ID トークン `aud` フィールドの値は、`accounts.google.com:aud` および `accounts.google.com:oaud` 条件キーの両方の値に一致します。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {"Federated": "accounts.google.com"},
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "accounts.google.com:aud": "aud-value",
                    "accounts.google.com:oaud": "aud-value",
                    "accounts.google.com:sub": "sub-value"
                }
            }
        }
    ]
}
```
`azp` フィールドが設定されました  
次のサンプルポリシーは、`azp` フィールドを設定するハイブリッドアプリケーションに対して機能します。この場合、Google ID トークン `aud` フィールドの値は `accounts.google.com:oaud` 条件キーの値にのみ一致します。`azp` フィールドの値は `accounts.google.com:aud` 条件キーの値と一致します。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {"Federated": "accounts.google.com"},
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "accounts.google.com:aud": "azp-value",
                    "accounts.google.com:oaud": "aud-value",
                    "accounts.google.com:sub": "sub-value"
                }
            }
        }
    ]
}
```

**email**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
例: `accounts.google.com:email`  
この条件キーはユーザーの E メールアドレスを検証します。このクレームの値は、このアカウントに固有のものではなく、時間の経過と共に変化する可能性があります。そのため、この値をユーザーレコードを検証するための主要な識別子として使用しないでください。

**oaud**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
例: `accounts.google.com:oaud`  
このキーは、この ID トークンが対象としている他のオーディエンス (`aud`) を指定します。アプリケーションの OAuth 2.0 クライアント ID のひとつである必要があります。

**sub**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例:**  
+ `accounts.google.com:sub`
+ token.actions.githubusercontent.com:sub
これらのキーを使用して、サブジェクトがポリシーで指定したものと一致することを確認します。`sub` キーは、同じ ID プロバイダーの `aud` キーで使用できます。  
以下のロール信頼ポリシーでは、`sub` 条件キーによって、ロールが `demo` という名前の GitHub ブランチに限定されています。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::{{111122223333}}:oidc-provider/token.actions.githubusercontent.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com",
          "token.actions.githubusercontent.com:sub": "repo:{{org-name/repo-name}}:ref:refs/heads/{{demo}}"
        }
      }
    }
  ]
}
```

------
#### [ Amazon Cognito ]

このタブでは、Amazon Cognito が OIDC クレームを AWS 内の AWS STS 条件コンテキストキーにどのようにマッピングするかについて説明します。これらのキーを使用して、ロールへのアクセスを制御できます。そのためには、「**AWS STS 条件キー**」を「**IdP JWT クレーム**」列の値と比較します。

Amazon Cognito が使用するロールの場合、キーはクレームの後に `cognito-identity.amazonaws.com` を使用して定義されます。

アイデンティティプールクレームのマッピングの詳細については、「*Amazon Cognito 開発者ガイド*」の「[デフォルトのプロバイダーマッピング](https://docs.aws.amazon.com/cognito/latest/developerguide/provider-mappings.html)」を参照してください。ユーザープールクレームのマッピングの詳細については、「*Amazon Cognito 開発者ガイド*」の「[ID トークンの使用](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-id-token.html)」を参照してください。


| AWS STS 条件キー | IdP JWT クレーム | セッションで使用可能 | 
| --- | --- | --- | 
| amr | amr | はい | 
| aud | aud | はい | 
| oaud | aud | いいえ | 
| sub | sub | はい | 

**amr**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。このキーには複数の値が含まれるため、[条件 set 演算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)を使用してポリシーでキーをテストします。  
**例** - `cognito-identity.amazonaws.com:amr`  
認証方法リファレンスには、ユーザーに関するログイン情報が含まれます。キーには、次の値が含まれている可能性があります。  
+ ユーザーが認証されていない場合、キーには `unauthenticated` のみが含まれています。
+ ユーザーが認証されている場合、キーには `authenticated` という値と、呼び出しで使用されるログインプロバイダーの名前 (`cognito-identity.amazonaws.com`) が含まれています。
例えば、Amazon Cognito ロールの信頼ポリシー内の次の条件では、ユーザーが認証されていないかどうかをテストします。  

```
"Condition": {
  "StringEquals": 
    { "cognito-identity.amazonaws.com:aud": "us-east-2:{{identity-pool-id}}" },
  "ForAnyValue:StringLike": 
    { "cognito-identity.amazonaws.com:amr": "unauthenticated" }
}
```

**aud**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `cognito-identity.amazonaws.com:aud`  
ユーザーを認証したユーザープールアプリクライアント。Amazon Cognito は、アクセストークン `client_id` クレームで同じ値をレンダリングします。

**oaud**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `cognito-identity.amazonaws.com:oaud`  
ユーザーを認証したユーザープールアプリクライアント。Amazon Cognito は、アクセストークン `client_id` クレームで同じ値をレンダリングします。

**sub**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `cognito-identity.amazonaws.com:sub`  
認証されたユーザーの固有識別子 (UUID) またはサブジェクト。ユーザー名はユーザープール内で一意ではない可能性があります。sub クレームは、特定のユーザーを識別する最良の方法です。`sub` キーは、同じ ID プロバイダーの `aud` キーで使用できます。  

```
"Condition": {
         "StringEquals": {
            "cognito-identity.amazonaws.com:aud": "us-east-1:12345678-abcd-abcd-abcd-123456790ab",
            "cognito-identity.amazonaws.com:sub": [
               "us-east-1:12345678-1234-1234-1234-123456790ab",
               "us-east-1:98765432-1234-1234-1243-123456790ab"
            ]
         }
      }
```

------
#### [ Login with Amazon ]

このタブでは、Login with Amazon が OIDC クレームを AWS 内の AWS STS 条件コンテキストキーにどのようにマッピングするかについて説明します。これらのキーを使用して、ロールへのアクセスを制御できます。そのためには、「**AWS STS 条件キー**」を「**IdP JWT クレーム**」列の値と比較します。


| AWS STS 条件キー | IdP JWT クレーム | セッションで使用可能 | 
| --- | --- | --- | 
| app\_id | アプリケーション ID  | はい | 
| sub | ユーザー ID | はい | 
| user\_id | ユーザー ID | はい | 

**app\_id**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `www.amazon.com:app_id`  
このキーは、他の ID プロバイダーが使用する `aud` フィールドと一致するオーディエンスコンテキストを指定します。

**sub**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `www.amazon.com:sub`  
このキーは、ユーザー ID がポリシーで指定したものと一致することを確認します。`sub ` キーは、同じ ID プロバイダーの `aud` キーで使用できます。

**user\_id**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `www.amazon.com:user_id`  
このキーは、他の ID プロバイダーが使用する `aud` フィールドと一致するオーディエンスコンテキストを指定します。同じ ID プロバイダーに対して、`user_id` キーと `id` キーを一緒に使用することができます。

------
#### [ Facebook ]

このタブでは、Facebook が OIDC クレームを AWS 内の AWS STS 条件コンテキストキーにどのようにマッピングするかについて説明します。これらのキーを使用して、ロールへのアクセスを制御できます。そのためには、「**AWS STS 条件キー**」を「**IdP JWT クレーム**」列の値と比較します。


| AWS STS 条件キー | IdP JWT クレーム | セッションで使用可能 | 
| --- | --- | --- | 
| app\_id | アプリケーション ID  | はい | 
| id | id | はい | 

**app\_id**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `graph.facebook.com:app_id`  
このキーは、オーディエンスコンテキストが、他の ID プロバイダーが使用する `aud` フィールドと一致することを確認します。

**id**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `graph.facebook.com:id`  
このキーは、アプリケーション (またはサイト) ID がポリシーで指定したものと一致することを確認します。

------
#### [ GitHub ]

このタブでは、GitHub Actions が OIDC クレームを AWS 内の AWS STS 条件コンテキストキーにどのようにマッピングするかについて説明します。これらのキーを使用して、ロールへのアクセスを制御できます。そのためには、「**AWS STS 条件キー**」を「**IdP JWT クレーム**」列の値と比較します。


| AWS STS 条件キー | IdP JWT クレーム | セッションで使用可能 | 
| --- | --- | --- | 
| アクター | アクター | いいえ | 
| actor\_id | actor\_id | いいえ | 
| job\_workflow\_ref | job\_workflow\_ref | いいえ | 
| repository | repository | いいえ | 
| repository\_id | repository\_id | いいえ | 
| workflow | workflow | いいえ | 
| ref | ref | いいえ | 
| 環境 | 環境 | いいえ | 
| enterprise\_id | enterprise\_id | いいえ | 

**アクター**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `token.actions.githubusercontent.com:actor`  
このキーは、ワークフロー実行を開始した個人アカウントを識別します。これを使用して、特定のアクターへのアクセスを制限します。

**actor\_id**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `token.actions.githubusercontent.com:actor_id`  
このキーは、ワークフロー実行を開始した個人アカウントを検証します。アクター ID は GitHub によって生成され、変更することはできません。

**job\_workflow\_ref**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `token.actions.githubusercontent.com:job_workflow_ref`  
このキーには、再利用可能なワークフローを使用するジョブが参照する、再利用可能なワークフローのパスが指定されます。これを使用して、特定のワークフローへのアクセスを制限し、承認されたワークフローのみがロールを引き受けられるようにします。

**repository**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `token.actions.githubusercontent.com:repository`  
このキーは、ワークフローが実行されているリポジトリを識別します。これを使用して、特定の GitHub リポジトリへのアクセスを制限します。

**repository\_id**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `token.actions.githubusercontent.com:repository_id`  
このキーは、ワークフローが実行されているリポジトリの ID を検証します。リポジトリ ID は変更不可能であり、リポジトリの名前を変更することによる影響はありません。

**workflow**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `token.actions.githubusercontent.com:workflow`  
このキーには、ワークフローの名前が指定されます。これを使用して、リポジトリ内の特定のワークフローへのアクセスを制限します。

**ref**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `token.actions.githubusercontent.com:ref`  
このキーは、ワークフロー実行をトリガーした git ref (ブランチまたはタグ) を識別します。これを使用して、`main` または `production` ブランチのみを許可するなど、特定のブランチに基づいてアクセスを制限します。

**環境**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `token.actions.githubusercontent.com:environment`  
このキーには、ジョブで使用される環境の名前が指定されます。これを使用して、開発環境、ステージング環境、本番環境の個別のアクセス許可など、環境ベースのアクセスコントロールを実装します。  
環境クレームが信頼ポリシーに含まれている場合は、GitHub ワークフローで環境を設定して提供する必要があります。

**enterprise\_id**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `token.actions.githubusercontent.com:enterprise_id`  
このキーは、ワークフローが実行されているリポジトリを含むエンタープライズの ID を検証します。これを使用して、アクセスが GitHub Enterprise 組織内のリポジトリに制限されるようにします。

次の信頼ポリシーの例では、GitHub OIDC トークンのカスタムクレームを使用してロールへのアクセスを制限します。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "Federated": "arn:aws:iam::AWS_ACCOUNT_ID:oidc-provider/token.actions.githubusercontent.com"
         },
         "Action": "sts:AssumeRoleWithWebIdentity",
         "Condition": {
            "StringLike": {
                "token.actions.githubusercontent.com:aud": "sts.amazonaws.com",
                "token.actions.githubusercontent.com:job_workflow_ref": "octo-org/octo-automation/.github/workflows/oidc.yml@refs/heads/main",
                "token.actions.githubusercontent.com:repository": "octo-org/octo-repo",
                "token.actions.githubusercontent.com:actor": "octocat",
                "token.actions.githubusercontent.com:ref": "refs/heads/main",
                "token.actions.githubusercontent.com:enterprise_id": "345"
               }
           }
        }
    ]
}
```

------
#### [ Google ]

このタブでは、Google が OIDC クレームを AWS 内の AWS STS 条件コンテキストキーにどのようにマッピングするかについて説明します。これらのキーを使用して、ロールへのアクセスを制御できます。そのためには、「**AWS STS 条件キー**」を「**IdP JWT クレーム**」列の値と比較します。


| AWS STS 条件キー | IdP JWT クレーム | セッションで使用可能 | 
| --- | --- | --- | 
| google/organization\_number | google:organization\_number | いいえ | 

**google/organization\_number**  
[桁演算子](reference_policies_elements_condition_operators.md#Conditions_Numeric)で動作します。  
**例** - `accounts.google.com:google/organization_number`  
このキーは、トークンが特定の Google Cloud または Google Workspace 組織に属する Google ID であることを確認します。これを使用して、特定の組織のユーザーへのアクセスを制限し、組織の ID のみがロールを引き受けられるようにします。

次の信頼ポリシーの例では、`google/organization_number` クレームを使用してロールへのアクセスを制限します。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "Federated": "accounts.google.com"
         },
         "Action": "sts:AssumeRoleWithWebIdentity",
         "Condition": {
            "NumericEquals": {
                "accounts.google.com:google/organization_number": "123456"
               }
           }
        }
    ]
}
```

------
#### [ CircleCI ]

このタブでは、CircleCI が OIDC クレームを AWS 内の AWS STS 条件コンテキストキーにどのようにマッピングするかについて説明します。これらのキーを使用して、ロールへのアクセスを制御できます。そのためには、「**AWS STS 条件キー**」を「**IdP JWT クレーム**」列の値と比較します。


| AWS STS 条件キー | IdP JWT クレーム | セッションで使用可能 | 
| --- | --- | --- | 
| oidc.circleci.com/project-id | oidc.circleci.com/project-id | いいえ | 

**oidc.circleci.com/project-id**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `circleci-issuer-url:oidc.circleci.com/project-id`  
このキーは、ジョブが実行されている CircleCI プロジェクトを識別します。その値は、CircleCI プロジェクトを一意に識別する UUID を含む文字列です。これを使用して、特定の CircleCI プロジェクトへのアクセスを制限します。

次の信頼ポリシーの例では、`oidc.circleci.com/project-id` クレームを使用してロールへのアクセスを制限します。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::123456789012:oidc-provider/oidc.circleci.com/org/12345"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "oidc.circleci.com/org/12345:aud": "sts.amazonaws.com",
          "oidc.circleci.com/org/12345:oidc.circleci.com/project-id": "76543210-ba98-fedc-3210-edcba0987654"
        }
      }
    }
  ]
}
```

------
#### [ Oracle Cloud Infrastructure (OCI) ]

このタブでは、Oracle Cloud Infrastructure が OIDC クレームを AWS 内の AWS STS 条件コンテキストキーにどのようにマッピングするかについて説明します。これらのキーを使用して、ロールへのアクセスを制御できます。そのためには、「**AWS STS 条件キー**」を「**IdP JWT クレーム**」列の値と比較します。


| AWS STS 条件キー | IdP JWT クレーム | セッションで使用可能 | 
| --- | --- | --- | 
| rpst\_id | rpst\_id | いいえ | 

**rpst\_id**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `oci-issuer-url:rpst_id`  
このキーは、OCI のリソースプリンシパルを一意に識別します。これを使用して、特定の OCI リソースプリンシパルへのアクセスを制限します。rpst\_id (リソースプリンシパルセッショントークン ID) は、OCI リソースベースの認証の安定した識別子を提供します。

次の信頼ポリシーの例では、`rpst_id` クレームを使用してロールへのアクセスを制限します。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::123456789012:oidc-provider/idcs-abc123ef5678901234abcd.identity.oraclecloud.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "idcs-abc123ef5678901234abcd.identity.oraclecloud.com:aud": "sts.amazonaws.com",
          "idcs-abc123ef5678901234abcd.identity.oraclecloud.com:rpst_id": "your-rpst-id"
        }
      }
    }
  ]
}
```

------

### OIDC フェデレーションに関する追加情報
<a name="condition-keys-wif-more-info"></a>


+ [Amazon Cognito ユーザーガイド](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html)
+ [OIDC フェデレーション](id_roles_providers_oidc.md)

## SAML ベースの AWS STS フェデレーションに利用可能なキー
<a name="condition-keys-saml"></a>

AWS Security Token Service (AWS STS) を使用して [SAML ベースのフェデレーション](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSAML.html)を操作する場合、追加の条件キーをポリシーに含めることができます。

### SAML ロールの信頼ポリシー
<a name="condition-keys-saml_trust-policy"></a>

ロールの信頼ポリシーには、以下のキーを含めることができます。これらのキーは、ロールの引き受け許可を発信者に与えるかどうかを規定するのに役立ちます。`saml:doc` を除いて、すべての値が SAML アサーションから派生します。条件付きのポリシーを作成または編集すると、リスト内のすべての項目が IAM コンソールのビジュアルエディタで使用できるようになります。`[]` とマークされている項目は、指定された型のリストである値を持つことが*できます*。

**saml:aud**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
SAML アサーションの提供先のエンドポイント URL。このキーの値は、アサーションの `SAML Recipient` フィールドから取得されます。`Audience` フィールドから取得された値では*ありません*。

**saml:commonName[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `commonName` 属性です。

**saml:cn[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `eduOrg` 属性です。

**saml:doc**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは、ロールの引き受けに使用されたプリンシパルを表します。形式は、{{account-ID}}/{{provider-friendly-name}} です (`123456789012/SAMLProviderName` など)。*account-ID* 値は、[SAML プロバイダー](id_roles_providers_create_saml.md)を所有するアカウントを参照します。

**saml:edupersonaffiliation[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `eduPerson` 属性です。

**saml:edupersonassurance[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `eduPerson` 属性です。

**saml:edupersonentitlement[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `eduPerson` 属性です。

**saml:edupersonnickname[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `eduPerson` 属性です。

**saml:edupersonorgdn**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `eduPerson` 属性です。

**saml:edupersonorgunitdn[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `eduPerson` 属性です。

**saml:edupersonprimaryaffiliation**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `eduPerson` 属性です。

**saml:edupersonprimaryorgunitdn**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `eduPerson` 属性です。

**saml:edupersonprincipalname**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `eduPerson` 属性です。

**saml:edupersonscopedaffiliation[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `eduPerson` 属性です。

**saml:edupersontargetedid[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `eduPerson` 属性です。

**saml:eduorghomepageuri[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `eduOrg` 属性です。

**saml:eduorgidentityauthnpolicyuri[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `eduOrg` 属性です。

**saml:eduorglegalname[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `eduOrg` 属性です。

**saml:eduorgsuperioruri[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `eduOrg` 属性です。

**saml:eduorgwhitepagesuri[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `eduOrg` 属性です。

**saml:givenName[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `givenName` 属性です。

**saml:iss**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
発行者。URN で表されます。

**saml:mail[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `mail` 属性です。

**saml:name[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `name` 属性です。

**saml:namequalifier**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
SAML プロバイダーのフレンドリ名に基づくハッシュ値。値は、次の値を順番に連結し、'/' 文字で区切ります。  

1. `Issuer` 応答値 (`saml:iss`)

1. `AWS` アカウント ID

1.  IAM の SAML プロバイダーのフレンドリ名（ARN の最後の部分） 
SAML プロバイダーのアカウント ID とフレンドリ名の連結は、キー `saml:doc` として IAM ポリシーで使用できます。詳細については、「[SAML ベースのフェデレーションでユーザーを一意に識別する](id_roles_providers_saml.md#CreatingSAML-userid)」を参照してください。

**saml:organizationStatus[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `organizationStatus` 属性です。

**saml:primaryGroupSID[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `primaryGroupSID` 属性です。

**saml:sub**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
\* これはクレームの件名です。組織内の個々のユーザーを一意に識別する値が含まれます（例: `_cbb88bf52c2510eabe00c1642d4643f41430fe25e3`）。

**saml:sub\_type**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
このキーの値は、`persistent` か `transient`、または SAML アサーションで使用されている `Format` と `Subject` 要素の完全な `NameID` URI で構成されます。`persistent` の値は、`saml:sub` 値がセッション間のユーザーでも同じことを意味します。値が `transient` の場合、ユーザーの `saml:sub` 値はセッションごとに異なります。`NameID` 要素の `Format` 属性の詳細については、「[認証レスポンス用の SAML アサーションを設定する](id_roles_providers_create_saml_assertions.md)」を参照してください。

**saml:surname[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `surnameuid` 属性です。

**saml:uid[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `uid` 属性です。

**saml:x500UniqueIdentifier[]**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
これは `x500UniqueIdentifier` 属性です。

`eduPerson` および `eduOrg` 属性に関する一般的な情報については、[REFEDS Wiki ウェブサイト](https://wiki.refeds.org/display/STAN/eduPerson)を参照してください。`eduPerson` 属性のリストについては、「[eduPerson オブジェクトクラス仕様 (201602)](https://software.internet2.edu/eduperson/internet2-mace-dir-eduperson-201602.html)」を参照してください。

リストタイプの条件キーには、複数の値を含めることができます。リスト値のポリシー内で条件を作成するには、[set 演算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys) (`ForAllValues`、`ForAnyValue`) を使用できます。たとえば、所属先が「faculty」または「staff」である（ただし、「student」ではない）すべてのユーザーを許可するには、次のような条件を使用します。

```
"Condition": {
   "ForAllValues:StringLike": {
     "saml:edupersonaffiliation":[ "faculty", "staff"] 
   }
}
```

## クロスサービス SAML ベースの AWS STS フェデレーションコンテキストキー
<a name="cross-condition-keys-saml"></a>

SAML ベースのフェデレーション条件キーの中には、後続のリクエストで使用することで、他のサービスや `AssumeRole` 呼び出しで AWS の操作を許可できるものがあります。フェデレーテッドプリンシパルが別のロールを引き受けるときのロール信頼ポリシーや、フェデレーションプリンシパルによるリソースアクセスを許可する他の AWS サービスのリソースポリシーで使用できる条件キーは以下のとおりです。これらのキーの使用に関する詳細は、[「SAML 2.0 ベースのフェデレーションについて」](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html#CreatingSAML-userid)を参照してください。

条件キーを選択すると、説明が表示されます。
+ [saml:namequalifier](#ck_saml-namequalifier)
+ [saml:sub](#ck_saml-sub)
+ [saml:sub_type](#ck_saml-subtype)

**注記**  
最初の外部 ID プロバイダー (IdP) 認証レスポンスの後は、他の SAML ベースのフェデレーション条件キーは使用できません。

## AWS STS に利用可能なキー
<a name="condition-keys-sts"></a>

AWS Security Token Service (AWS STS) オペレーションを使用して引き受けたロールについては、IAM ロール信頼ポリシーで以下の条件キーを使用できます。

**saml:sub**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
\* これはクレームの件名です。組織内の個々のユーザーを一意に識別する値が含まれます（例: `_cbb88bf52c2510eabe00c1642d4643f41430fe25e3`）。

**sts:AWSServiceName**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
ベアラートークンを使用できるサービスを指定するには、このキーを使用します。ポリシーでこの条件キーを使用する場合は、サービスプリンシパルを使用してサービスを指定します。サービスプリンシパルは、ポリシーの `Principal` 要素で指定できるサービスの名前です。例えば、`codeartifact.amazonaws.com` は AWS CodeArtifact サービスプリンシパルです。  
**可用性** – このキーは、ベアラートークンを取得するリクエストに含まれています。AWS STS を直接呼び出してベアラートークンを取得することはできません。他のサービスでいくつかのオペレーションを実行すると、自動的にベアラートークンがリクエストされます。  
一部の AWS のサービスでは、プログラムでリソースにアクセスする前に、AWS STS サービスベアラートークンを取得するアクセス許可が必要です。例えば、AWS CodeArtifact では、プリンシパルがベアラートークンを使用して一部のオペレーションを実行する必要があります。`aws codeartifact get-authorization-token` コマンドは、ベアラートークンを返します。その後、ベアラートークンを使用して AWS CodeArtifact 操作を実行できます。ベアラートークンの詳細については、「[サービスベアラートークン](id_credentials_bearer.md)」を参照してください。  
この条件キーを使用すると、プリンシパルが特定のサービスで使用するベアラートークンを取得することを許可できます。

**sts:DurationSeconds**  
[桁演算子](reference_policies_elements_condition_operators.md#Conditions_Numeric)で動作します。  
AWS AWS STS ベアラートークンまたは JSON ウェブトークンを [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) API から取得するときに、プリンシパルが使用できる期間 (秒単位) を指定するには、このキーを使用します。  
**可用性** – このキーは、ベアラートークンまたは JSON ウェブトークンを GetWebIdentityToken API から取得するリクエストに存在します。AWS STS を直接呼び出してベアラートークンを取得することはできません。他のサービスでいくつかのオペレーションを実行すると、自動的にベアラートークンがリクエストされます。このキーは、AWS STS assume-role オペレーションには適用されません。  
一部の AWS のサービスでは、プログラムでリソースにアクセスする前に、AWS STS サービスベアラートークンを取得するアクセス許可が必要です。例えば、AWS CodeArtifact では、プリンシパルがベアラートークンを使用して一部のオペレーションを実行する必要があります。`aws codeartifact get-authorization-token` コマンドは、ベアラートークンを返します。その後、ベアラートークンを使用して AWS CodeArtifact 操作を実行できます。ベアラートークンの詳細については、「[サービスベアラートークン](id_credentials_bearer.md)」を参照してください。

**sts:IdentityTokenAudience**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
IAM プリンシパルが [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) API を使用して JSON ウェブトークン (JWT) をリクエストできる対象者を指定するときは、このキーを使用します。IAM ポリシーにこの条件キーがある場合、IAM プリンシパルはポリシーで指定された対象者に対してのみトークンをリクエストできます。外部サービスは、JSON ウェブトークンの対象者 (「aud」) クレームを検証して、トークンが彼らを対象とするものであることを確認します。  
**可用性** – このキーは、外部サービスによる認証用の JSON ウェブトークン (JWT) を取得するために使用される、GetWebIdentityToken API へのリクエストに含まれています。  
ポリシーでこの条件キーを使用するときは、対象とする受信者の識別子 (https://api.example.com など) に一致するオーディエンス値を指定します。  
次のポリシー例では、プリンシパルが、指定された外部サービスのトークンをリクエストすることを許可します。  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:GetWebIdentityToken",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "sts:IdentityTokenAudience": [
                        "https://api2.example.com",
                        "https://api1.example.com"
                    ]
                }
            }
        }
    ]
}
```

**sts:SigningAlgorithm**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
[GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) API によって生成された JSON ウェブトークン (JWT) に、AWS AWS STS が署名するときに使用する暗号化アルゴリズムを指定するときは、このキーを使用します。ポリシーでこの条件キーを使用するときは、ES384 (P-384 カーブと SHA-384 付きの ECDSA) または RS256 (SHA-256 付きの RSA) のいずれかを指定します。  
**可用性** – このキーは、外部サービスによる認証用の JSON ウェブトークン (JWT) を取得するために使用される、GetWebIdentityToken API へのリクエストに含まれています。  
この条件キーを使用することで、セキュリティ要件と互換性のある署名アルゴリズム、または統合する外部サービスを使用して、IAM プリンシパルにトークンをリクエストさせることができます。ES384 を使用するとセキュリティとパフォーマンスを最適化できる一方、RS256 を使用すると、ECDSA をサポートしていないシステムとの互換性を高めることができます。  
次のポリシー例では、プリンシパルは ES384 署名アルゴリズムを使用する必要があります。  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:GetWebIdentityToken",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "sts:SigningAlgorithm": "ES384"
                }
            }
        }
    ]
}
```

**sts:ExternalId**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
IAM ロールを引き受けるときにプリンシパルが特定の識別子を提供するように要求するには、このキーを使用します。  
**可用性** – このキーは、AWS CLI または AWS API を使用してロールを引き受ける際にプリンシパルが外部 ID を提供するときにリクエストに含まれています。  
別のアカウントでロールを引き受ける際に必要になる場合がある一意の ID。ロールが属するアカウントの管理者から外部 ID が提供された場合は、その値を `ExternalId` パラメータに指定します。この値は、パスフレーズやアカウント番号などの任意の文字列とすることができます。外部 ID の最も重要な機能は、混乱した代理問題の防止と対処です。外部 ID と混乱した代理問題の詳細については、「[第三者が所有する AWS アカウント へのアクセス](id_roles_common-scenarios_third-party.md)」を参照してください。  
`ExternalId` の値は、2～1,224 文字で構成されている必要があります。この値は、空白のない英数字にする必要があります。次の記号を含めることもできます。プラス記号 (\+)、等号 (=)、カンマ (,)、ピリオド (.)、アットマーク (@)、コロン (:)、スラッシュ (/)、およびハイフン (–)。

**sts:RequestContext/*context-key***  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
このキーを使用して、リクエストで渡された信頼されたトークン発行者の署名付きコンテキストアサーションに埋め込まれているセッションコンテキストのキーと値のペアを、ロールの信頼ポリシーで指定されたコンテキストキー値と比較します。  
**可用性** — このキーは、AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API 操作を使用してロールを引き受ける際、`ProvidedContexts` リクエストパラメータでコンテキストアサーションが提供されるときに、リクエストに含まれます。  
このコンテキストキーは `"sts:RequestContext/context-key":"context-value"` の形式になります。ここで、`context-key` と `context-value` はコンテキストキーと値のペアです。複数のコンテキストキーがリクエストで渡された署名付きコンテキストアサーションに埋め込まれると、キーと値のペアごとに 1 つのコンテキストキーが存在します。結果のセッショントークンにプリンシパルがコンテキストキーを設定できるようにするには、ロールの信頼ポリシーで `sts:SetContext` アクションのアクセス権限を付与する必要があります。このキーで使用できるサポートされている IAM Identity Center コンテキストキーの詳細については、「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[IAM Identity Center の AWS STS 条件キー](https://docs.aws.amazon.com/singlesignon/latest/userguide/condition-context-keys-sts-idc.html)」を参照してください。  
ロール信頼ポリシーでこのキーを使用すると、ユーザーがロールを引き受けるときに、ユーザーまたはその属性に基づいてきめ細かいアクセス制御を実施できます。ロールを引き継ぐと、コンテキストプロバイダがロール割り当てリクエストで設定したセッションコンテキストのキーと値のペアを含むアクティビティが `AdditionalEventData` 属性内の AWS CloudTrail ログに表示されます。これにより、管理者がロールを異なるプリンシパルで使用する場合に、ロールセッションを区別しやすくなります。キーと値のペアは、AWS CloudTrail または AWS STS ではなく、指定されたコンテキストプロバイダーによって設定されます。これにより、コンテキストプロバイダーは、CloudTrail ログとセッション情報に含まれるコンテキストを制御できます。

**sts:RequestContextProviders**  
[ARN 演算子](reference_policies_elements_condition_operators.md#Conditions_ARN)で動作します。  
このキーを使用して、リクエスト内のコンテキストプロバイダー ARN をロールの信頼ポリシーで指定されたコンテキストプロバイダー ARN と比較します。  
**可用性** — このキーは、AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API 操作を使用してロールを引き受ける際、`ProvidedContexts` リクエストパラメータでコンテキストアサーションが提供されるときに、リクエストに含まれます。  
次の条件例では、リクエストで渡されたコンテキストプロバイダー ARN が、ロールの信頼ポリシー条件で指定された ARN と一致することを確認します。コンテキストキーの欠落または空の値を持つコンテキストキーによる true 評価が実行されないように、`ForAllValues` で null チェックを追加することをお勧めします。詳細については、「[条件キーの有無をチェックする条件演算子](reference_policies_elements_condition_operators.md#Conditions_Null)」を参照してください。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Action": "sts:SetContext",
    "Effect": "Allow",
    "Resource": "*",
    "Condition": {
      "ForAllValues:ArnEquals": {
        "sts:RequestContextProviders": [
          "arn:aws:iam::aws:contextProvider/IdentityCenter"
        ]
      },
      "Null": {
        "sts:RequestContextProviders": "false"
      }
    }
  }
}
```

**sts:RoleSessionName**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
このキーを使用して、ロールを引き受けるときにプリンシパルが指定するセッション名と、ポリシーで指定されている値を比較します。  
**可用性** – このキーは、プリンシパルが AWS マネジメントコンソール、assume-role CLI コマンド、または AWS STS `AssumeRole` API オペレーションを使用してロールを引き受けるときにリクエストに含まれています。  
ロール信頼ポリシーでこのキーを使用すると、ユーザーがロールを引き受けるときに特定のセッション名を指定するように要求できます。たとえば、IAM ユーザーがセッション名として自分のユーザー名を指定するように要求できます。IAM ユーザーがロールを引き受けると、ユーザー名と一致するセッション名とともにアクティビティが[AWS CloudTrail ログ](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds)に表示されます。これにより、管理者がロールを異なるプリンシパルで使用する場合に、ロールセッションを区別しやすくなります。  
次のロール信頼ポリシーは、アカウント `111122223333` の IAM ユーザーがロールを引き受けるときに、セッション名として ユーザー名を指定することを要求します。この要件は、条件キーの `aws:username` [条件変数](reference_policies_variables.md)を使用して適用されます。このポリシーにより、IAM ユーザーはポリシーがアタッチされているロールを引き受けることができます。このポリシーでは、`username` 変数が IAM ユーザーのみに存在するため、一時的な認証情報を使用するどのユーザーもロールを引き受けることはできません。  
単一値の条件キーは、[変数](reference_policies_variables.md)として使用できます。複数値の条件キーは、変数としては使用できません。  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RoleTrustPolicyRequireUsernameForSessionName",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {"AWS": "arn:aws:iam::{{111122223333}}:root"},
            "Condition": {
                "StringLike": {"sts:RoleSessionName": "prefix-${aws:username}"}
            }
        }
    ]
}
```
管理者がアクションの AWS CloudTrail ログを表示すると、セッション名とアカウントのユーザー名を比較できます。次の例では、`matjac` という名前のユーザーが `MateoRole` というロールを使用してオペレーションを実行しました。管理者は、`matjac` という名前のユーザーを持っている Mateo Jackson に連絡することができます。  

```
    "assumedRoleUser": {
        "assumedRoleId": "AROACQRSTUVWRAOEXAMPLE:{{matjac}}",
        "arn": "arn:aws:sts::111122223333:assumed-role/{{MateoRole}}/{{matjac}}"
    }
```
[ロールを使用したクロスアカウントアクセス](id_roles_common-scenarios_aws-accounts.md)を許可した場合、あるアカウントのユーザーが別のアカウントのロールを引き受けることができます。CloudTrail に一覧表示されている引き受けたロールユーザーの ARN には、その*ロールが存在する*アカウントが含まれます。ロールを引き受けるユーザーのアカウントは含まれません。ユーザーはアカウント内でのみ一意です。したがって、自分が管理しているアカウントのユーザーが引き受けたロールの CloudTrail ログを確認する場合のみこの方法を使用することをお勧めします。ユーザーは、複数のアカウントで同じユーザー名を使用していることがあります。

**ST: 送信元アイデンティティ**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
このキーを使用して、ロールを引き受けるときにプリンシパルが指定するセッション名と、ポリシーで指定されている値を比較します。  
**可用性** — このキーは、AWS STS assume-role CLI コマンドまたは AWS STS `AssumeRole` API オペレーションを使用してロールを引き受けるときに、プリンシパルがソース ID を提供するときに要求に存在します。  
ロール信頼ポリシーでこのキーを使用して、ユーザーがロールを引き受けるときに特定のセッション名を設定するように要求できます。たとえば、従業員またはフェデレーション ID にソース ID の値を指定するように要求できます。ユーザー名や電子メールなど、ユーザーに関連付けられている属性の 1 つをソース ID として使用するように ID プロバイダー (IdP) を設定できます。次に、IdP は、AWS に送信するアサーションまたはクレームの属性としてソース ID を渡します。ソース ID 属性の値は、ロールを引き受けるユーザーまたはアプリケーションを識別します。  
ユーザーがロールを引き受けると、設定されたソース ID 値とともにアクティビティが[AWS CloudTrail ログ](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds)に表示されます。これにより、管理者は、AWS のロールで誰がどういったアクションを実行したかを簡単に判断できます。IDがソースIDを設定できるようにするには、`sts:SetSourceIdentity` アクションのアクセス許可を付与する必要があります。  
[`sts:RoleSessionName`](#ck_rolesessionname) とは異なり、ソースIDを設定した後は、値を変更できません。これは、ソース ID によってロールで実行されたすべてのアクションのリクエストコンテキストに存在します。この値は、セッション認証情報を使用して別のロールを引き受けるときに、後続のロールセッションに保持されます。別のロールからあるロールを引き受けると、[ロールの連鎖](id_roles.md#iam-term-role-chaining)と呼ばれます。  
[`aws:SourceIdentity`](reference_policies_condition-keys.md#condition-keys-sourceidentity)グローバル条件キーを使用して、後続の要求のソースIDの値に基づいて AWS リソースへのアクセスをさらに制御できます。  
次のロール信頼ポリシーにより、IAM ユーザー `AdminUser` はアカウント `111122223333` でロールを引き受けることができます。また、ソース ID セットが `AdminUser` である限り、`DiegoRamirez` にソースIDを設定する権限を付与します。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAdminUserAssumeRole",
            "Effect": "Allow",
            "Principal": {"AWS": " arn:aws:iam::111122223333:user/AdminUser"},
            "Action": [
                "sts:AssumeRole",
                "sts:SetSourceIdentity"
            ],
            "Condition": {
                "StringEquals": {"sts:SourceIdentity": "DiegoRamirez"}
            }
        }
    ]
}
```
ソース ID 情報の使用の詳細については、「[引き受けたロールで実行されるアクションのモニタリングと制御](id_credentials_temp_control-access_monitor.md)」を参照してください。

**sts:TaskPolicyArn**  
[ARN 演算子](reference_policies_elements_condition_operators.md#Conditions_ARN)で動作します。  
このキーを使用して、[sts:AssumeRoot](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoot.html) リクエストのポリシー ARN を、ポリシーで指定されたポリシー ARN と比較します。  
**可用性** – このキーは、[sts:AssumeRoot](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoot.html) を使用してリクエストを実行する際にリクエストに含まれます。  
管理者は、IAM ポリシーでこの条件キーを使用して、管理アカウントまたは委任された管理者アカウント内の特定のロールまたはユーザーが、ルート認証情報を引き受けるときに特定のアクションを実行できないように制限できます。詳細については、「[AWS Organizations メンバーアカウントで特権タスクを実行する](id_root-user-privileged-task.md)」を参照してください。

**sts:TransitiveTagKeys**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
このキーを使用して、リクエスト内の推移的なセッションタグキーとポリシーで指定されたセッションタグキーを比較します。  
**可用性** – このキーは、一時的なセキュリティ認証情報を使用してリクエストを作成するときにリクエストに含まれます。これらの認証情報には、assume-role オペレーションまたは `GetFederationToken` オペレーションを使用して作成されたものが含まれます。  
一時的なセキュリティ認証情報を使用してリクエストを行う場合、[リクエストコンテキスト](reference_policies_elements_condition.md#AccessPolicyLanguage_RequestContext)には `aws:PrincipalTag` コンテキストキーが含まれます。このキーには、[セッションタグ](id_session-tags.md)、[推移的セッションタグ](id_session-tags.md#id_session-tags_role-chaining)、およびロールタグのリストが含まれます。推移的セッションタグは、セッション認証情報を使用して別のロールを引き受けるときに、後続のすべてのセッションに保持されるタグです。別のロールからあるロールを引き受けると、[ロールの連鎖](id_roles.md#iam-term-role-chaining)と呼ばれます。  
この条件キーをポリシーで使用すると、ロールの引き受け時またはユーザーのフェデレーション時に、特定のセッションタグを推移的として設定するよう要求できます。