

# IAM JSON ポリシーリファレンス
<a name="reference_policies"></a>

このセクションは、IAM の JSON ポリシーの要素、変数、および評価ロジックの詳細な構文、説明、および例を示します。一般的な的な情報については、「[JSON ポリシー概要](access_policies.md#access_policies-json)」を参照してください

このリファレンスには、次のセクションがあります。
+  [IAM JSON ポリシー要素のリファレンス](reference_policies_elements.md)- ポリシーを作成する際に使用できる要素についての詳細は、こちらをご覧ください。さらにポリシーの例をご紹介するほか、条件、サポートされているデータタイプ、および様々なサービスにおけるそれらの使用方法について説明します。
+ [ポリシーの評価論理](reference_policies_evaluation-logic.md) – このセクションは、AWS リクエストの概要、リクエストがどのように認証されるか、および AWS がポリシーをどのように利用してリソースへのアクセス権限付与を決定するかについて説明します。
+ [IAM JSON ポリシー言語の文法](reference_policies_grammar.md) - このセクションでは、IAM でポリシーを作成する際に使用する言語の正式な文法を示します。
+ [AWSジョブ機能の 管理ポリシー](access_policies_job-functions.md) - このセクションでは、IT 業界の一般的なジョブ機能に直接マッピングする AWS 管理ポリシーについて説明します。これらのポリシーを使用して、特定のジョブ機能を持つユーザーによるタスクの実行に必要なアクセス許可を付与します。これらのポリシーによって、多くのサービスのアクセス権限が 1 つのポリシーに一元化されます。
+ [AWS グローバル条件コンテキストキー](reference_policies_condition-keys.md) - このセクションには、IAM ポリシーのアクセス許可を制限するのに使用できるすべての AWS グローバル条件キーのリストが含まれています。
+ [IAM および AWS STS の条件コンテキストキー](reference_policies_iam-condition-keys.md) — このセクションには、IAM ポリシーのアクセス許可を制限するのに使用できるすべての IAM 条件キーおよび AWS STS 条件キーのリストが含まれています。
+ [AWS サービスのアクション、リソース、および条件キー](reference_policies_actions-resources-contextkeys.html) — このセクションでは、IAMポリシーでアクセス許可として使用できるすべての AWS API オペレーションのリストを示します。また、そのリクエストをさらに絞り込むのに使用できるサービス固有の条件キーも含まれています。

# IAM JSON ポリシー要素のリファレンス
<a name="reference_policies_elements"></a>

JSON ポリシードキュメントは要素で構成されます。要素は、ポリシーで使用する一般的な順番で記載されています。要素の順番は重要ではありません (たとえば、`Resource` 要素を `Action` 要素の前にもってくることなどが可能です)。ポリシーで、あらゆる `Condition` 要素も特定する必要はありません。JSON ポリシードキュメントの全体構造と目的については「[JSON ポリシー概要](access_policies.md#access_policies-json)」をご覧ください。

一部の JSON ポリシーの要素は相互排他的です。つまり、両方を使用するポリシーを作成することはできません。たとえば、`Action` と `NotAction` を同じポリシーステートメントで使用することはできません。相互排他的な他のペアには `Principal`/`NotPrincipal` や `Resource`/`NotResource` があります。

ポリシーに取り入れる詳細は各サービスによって異なり、サービスで利用可能なアクションやリソースの種類などにより異なります。特定のサービスのポリシーを記述している場合、そのサービスに関するポリシーの例を参照することが役に立ちます。IAM をサポートするすべてのサービスのリスト、およびそれらのサービスの IAM とポリシーについて説明しているドキュメントへのリンクについては、「[IAM と連携する AWS のサービス](reference_aws-services-that-work-with-iam.md)」を参照してください。

 JSON ポリシーを作成または編集するときに、IAM はポリシー検証を実行し、効果的なポリシーを作成するのに役立ちます。IAM は JSON 構文エラーを識別します。一方、IAM Access Analyzer は、ポリシーをさらに絞り込むのに役立つ推奨事項を含む追加のポリシーチェックを提供します。ポリシーの検証の詳細については、「[IAM ポリシーの検証](access_policies_policy-validator.md)」を参照してください。。IAM Access Analyzer のポリシーチェックと実用的な推奨事項の詳細については、「[IAM Access Analyzer ポリシーの検証](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)」IAM Access Analyzer ポリシーの検証を参照してください。

**Topics**
+ [Version](reference_policies_elements_version.md)
+ [Id](reference_policies_elements_id.md)
+ [Statement](reference_policies_elements_statement.md)
+ [Sid](reference_policies_elements_sid.md)
+ [Effect](reference_policies_elements_effect.md)
+ [Principal](reference_policies_elements_principal.md)
+ [NotPrincipal](reference_policies_elements_notprincipal.md)
+ [Action](reference_policies_elements_action.md)
+ [NotAction](reference_policies_elements_notaction.md)
+ [Resource](reference_policies_elements_resource.md)
+ [NotResource](reference_policies_elements_notresource.md)
+ [Condition](reference_policies_elements_condition.md)
+ [変数とタグ](reference_policies_variables.md)
+ [サポートされているデータ型](reference_policies_elements_datatypes.md)

# IAM JSON ポリシー要素Version
<a name="reference_policies_elements_version"></a>

**あいまいさに関する注意**  
この `Version` JSON ポリシー要素は*ポリシーバージョン*とは異なります。`Version` ポリシー要素は、ポリシー内で使用され、ポリシー言語のバージョンを定義します。一方で、ポリシーバージョンは、IAM でカスタマー管理ポリシーを変更すると作成されます。変更されたポリシーによって既存のポリシーが上書きされることはありません。代わりに、IAM は管理ポリシーの新しいバージョンを作成します。管理ポリシーに対する複数のバージョンのサポートに関する情報を探している場合は、「[IAM ポリシーのバージョニング](access_policies_managed-versioning.md)」を参照してください。

`Version` ポリシー要素は、このポリシーを処理するために使用される言語構文ルールを指定します。使用可能なポリシーの機能をすべて使用するには、すべてのポリシーの `Statement` 要素の**外部**にある以下の `Version` 要素を含めます。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    }
  ]
}
```

------

IAM は以下の `Version` 要素値をサポートしています。
+ `2012-10-17`. これはポリシー言語の現行バージョンであり、常に `Version` 要素を含め、`2012-10-17` に設定する必要があります。このようにしない場合、このバージョンで導入された[ポリシー変数](reference_policies_variables.md)などの機能は使用できません。
+ `2008-10-17`. これはポリシー言語の旧バージョンです。既存のポリシーで古めのものでは、このバージョンが表示される場合があります。新規ポリシーを作成するときや既存ポリシーを更新するときは、この旧バージョンを使用しないでください。ポリシー変数などの新しい機能は、ポリシーでは機能しません。たとえば、`${aws:username}` などの変数は変数として認識されず、代わりにポリシー内のリテラル文字列として扱われます。

# IAM JSON ポリシー要素Id
<a name="reference_policies_elements_id"></a>

`Id` 要素は、ポリシーで使用する任意の識別子を特定します。ID の使用方法は、サービスによって異なります。ID は、リソースベースのポリシーでは使用できますが、アイデンティティベースのポリシーでは使用できません。

`ID` 要素を設定するサービスの場合、UUID (GUID) を値に使用する、または UUID を唯一性を確認するための ID の一部として統合することを推奨します。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "cd3ad3d9-2776-4ef1-a904-4c229d1642ee",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    }
  ]
}
```

------

**注記**  
AWS のサービス (たとえば、Amazon SQS や Amazon SNS など) には、この要素を要求し、唯一条件を与えるものもあります。ポリシーの記述に関するサービス固有の情報は、お取り扱いのサービス用のドキュメントを参照してください。

# IAM JSON ポリシー要素Statement
<a name="reference_policies_elements_statement"></a>

`Statement` 要素は、ポリシーの主要要素です。この要素は必須です。`Statement` 要素には、単一のステートメントまたは個々のステートメントの配列を含めることができます。個々のステートメントブロックは、中括弧 \$1 \$1 で囲む必要があります。複数のステートメントの場合、配列は角括弧 [ ] で囲む必要があります。

```
"Statement": [{...},{...},{...}]
```

以下の例は、1 つの `Statement` 要素の中に 3 つのステートメントの配列を含むポリシーを示しています。(このポリシーにより、Amazon S3 コンソール内の自分の "ホームフォルダー" にアクセスできます)。ポリシーには `aws:username` 変数が含まれ、変数はポリシーの評価時にリクエストからのユーザー名に置き換えられます。詳細については、「[序章](reference_policies_variables.md#policy-vars-intro)」を参照してください。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {"StringLike": {"s3:prefix": [
        "",
        "home/",
        "home/${aws:username}/"
      ]}}
    },
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}",
        "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}/*"
      ]
    }
  ]
}
```

------

# IAM JSON ポリシー要素Sid
<a name="reference_policies_elements_sid"></a>

ポリシーステートメントのオプションの識別子として、`Sid` (ステートメントID) を指定することができます。`Sid` 値は、ステートメント配列内の各ステートメントに割り当てることができます。`Sid` の値は、ポリシーステートメントの説明として使用できます。SQS や SNS などの `ID` 要素を特定するサービスでは、`Sid` 値はポリシードキュメント ID の副 ID に過ぎません。IAM では、`Sid` 値は JSON ポリシー内で固有のものでなければいけません。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExampleStatementID",
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    }
  ]
}
```

------

-`Sid`要素は、ASCII 大文字 (A〜Z)、小文字 (A〜Z)、および数字 (0〜9) をサポートします。

IAM は、IAM API で`Sid`を公開しません。この ID に基づいて、特定のステートメントを復元することはできません。

**注記**  
AWS のサービス (例えば、Amazon SQS や Amazon SNS など) には、この要素を要求し、唯一条件を与えるものもあります。ポリシーの記述に関するサービス固有の情報は、お取り扱いのサービス用のドキュメントを参照してください。

# IAM JSON ポリシー要素Effect
<a name="reference_policies_elements_effect"></a>

`Effect` 要素は必須であり、ステートメントの結果を許可または明示的な拒否のどちらにするかを指定します。`Effect` の有効値は、`Allow` と `Deny` です。`Effect` 値では、大文字と小文字が区別されます。

```
"Effect":"Allow"
```

デフォルト設定では、リソースへのアクセスは拒否されます。リソースへのアクセスを許可するには、`Effect` 要素を `Allow` に設定する必要があります。許可を無効にするには (たとえば、本来有効となる許可を無効にするなど)、`Effect` 要素を `Deny` に設定します。詳細については、「[ポリシーの評価論理](reference_policies_evaluation-logic.md)」を参照してください。

# AWS JSON ポリシーの要素: Principal
<a name="reference_policies_elements_principal"></a>

リソースベースの JSON ポリシーの `Principal` 要素を使用して、リソースへのアクセスを許可または拒否するプリンシパルを指定します。

[リソースベースポリシー](access_policies_identity-vs-resource.md) の `Principal` 要素を使用する必要があります。IAM など、いくつかのサービスが、リソースベースのポリシーをサポートしています。IAM リソースベースのポリシーのタイプは、ロールの信頼ポリシーです。IAM ロールでは、ロールの信頼ポリシー内の `Principal` 要素を使用して、だれがこのロールを引き受けることができるかを指定します。クロスアカウントアクセスとして、信頼されたアカウントの 12 桁の ID を指定する必要があります｡ 信頼ゾーン (信頼できる組織またはアカウント) 外にあるアカウントのプリンシパルにロールを引き受けるアクセス権があるかどうかについては、「[IAM Access Analyzer とは](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html)」を参照してください。

**注記**  
ロールを作成した後、アカウントを「\$1」に変更すると、誰もがそのロールを引き受けることができます。これを行う場合は、アクセスを特定の IP アドレスのみに制限する `Condition` 要素など、他の方法でロールへのアクセスを制限することを強くお勧めします。誰でもロールにアクセスできる状態のままにしないでください。

サポートベースのポリシーをサポートする他のサービスの例としては、Amazon S3 バケットや AWS KMS key が挙げられます。

`Principal` エレメントを ID ベースのポリシーで使用することはできません。ID ベースのポリシーは、IAM の ID (ユーザー、グループ、ロール) にアタッチするアクセス許可ポリシーです。これらの場合、プリンシパルは、ポリシーがアタッチされた ID によって暗示されます。

**Topics**
+ [

## プリンシパルを指定する方法
](#Principal_specifying)
+ [

## AWS アカウント プリンシパル
](#principal-accounts)
+ [

## IAM ロールプリンシパル
](#principal-roles)
+ [

## ロールセッションプリンシパル
](#principal-role-session)
+ [

## OIDC フェデレーテッドプリンシパル
](#principal-federated-web-identity)
+ [

## SAML フェデレーテッドプリンシパル
](#principal-saml)
+ [

## IAM ユーザープリンシパル
](#principal-users)
+ [

## IAM Identity Center のプリンシパル
](#principal-identity-users)
+ [

## AWS STS フェデレーションユーザープリンシパル
](#sts-session-principals)
+ [

## AWS サービスプリンシパル
](#principal-services)
+ [

## オプトインリージョンの AWS サービスプリンシパル
](#principal-services-in-opt-in-regions)
+ [

## すべてのプリンシパル
](#principal-anonymous)
+ [

## 詳細情報
](#Principal_more-info)

## プリンシパルを指定する方法
<a name="Principal_specifying"></a>

リソースベースのポリシーにある `Principal` 要素か、プリンシパルをサポートする条件キーでプリンシパルを指定します。

ポリシーでは、次のいずれかのプリンシパルを指定できます。
+ AWS アカウント およびルートユーザー
+ IAM ロール
+ ロールセッション 
+ IAM ユーザー
+ フェデレーションユーザープリンシパル
+ AWS のサービス
+ すべてのプリンシパル

ユーザーグループをポリシー (リソースベースのポリシーなど) のプリンシパルとして識別することはできません。これは、グループは 認証ではなくアクセス権限に関連しており、プリンシパルは認証済みの IAM エンティティであるためです。

配列を使用して、以降のセクションの各プリンシパル型に対して複数のプリンシパルを指定できます。配列では 1 つまたは複数の値を使用できます。要素で複数のプリンシパルを指定する場合は、各プリンシパルにアクセス許可を付与します。これは論理 `OR` であり論理 `AND` ではありません。一度に 1 つのプリンシパルを認証するためです。複数の値を含める場合は、角括弧 (`[` と `]`) を使用し、配列の各エントリをカンマで区切ります。次のポリシーの例では、123456789012 アカウントまたは 555555555555 アカウントのアクセス許可を定義します。

```
"Principal" : { 
"AWS": [ 
  "123456789012",
  "555555555555" 
  ]
}
```

**注記**  
ワイルドカードとして使用して、プリンシパルの名前または ARN の一部に一致させることはできません。

## AWS アカウント プリンシパル
<a name="principal-accounts"></a>

リソースベースのポリシーにある `Principal` 要素か、プリンシパルをサポートする条件キーで、AWS アカウント の識別子を指定できます。これにより、権限がアカウントに委譲されます。別のアカウントへのアクセスを許可する場合、そのアカウントの管理者が、そのアカウントの ID (IAM ユーザーまたはロール) へのアクセス許可を付与する必要があります。AWS アカウント を指定するときは、アカウント ARN (aarn:aws:iam::*account-ID*:root、または `"AWS":` プレフィックスの後に ID を付けた短縮形を使用できます。

例えば、割り当てられた アカウント ID (`123456789012`) から、次のいずれかのメソッドを使用して、`Principal` 要素でそのアカウントを指定できます。

```
"Principal": { "AWS": "arn:aws:iam::123456789012:root" }
```

```
"Principal": { "AWS": "123456789012" }
```

アカウント ARN と短縮アカウント ID は、同じように動作します。どちらも、アカウントにアクセス許可を委譲します。`Principal` 要素で アカウント ARN を使用しても、アカウントのルートユーザーだけはアクセス許可を制限しません。

**注記**  
短縮アカウント ID を含むリソースベースのポリシーを保存すると、それをサービスがプリンシパル ARN に変換することがあります。これはポリシーの機能は変更しません。

一部の AWS サービスでは、アカウントプリンシパルを指定するための追加オプションがサポートされています。例えば、Amazon S3 では、次の形式を使用して[正規ユーザー ID](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingCanonicalId) を指定できます。

```
"Principal": { "CanonicalUser": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be" }
```

配列を使用すると、プリンシパルとして AWS アカウント (または正規ユーザー ID) を 1 つ以上指定できます。例えば、3 つのメソッドすべてを使用して、バケットポリシーでプリンシパルを指定できます。

```
"Principal": { 
  "AWS": [
    "arn:aws:iam::123456789012:root",
    "999999999999"
  ],
  "CanonicalUser": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be"
}
```

## IAM ロールプリンシパル
<a name="principal-roles"></a>

リソースベースのポリシーにある `Principal` 要素か、プリンシパルをサポートする条件キーで、IAM ロールプリンシパル ARNを指定できます。IAM ロールは ID です。IAM では、ID はアクセス許可を割り当てることができるリソースです。ロールは、別の認証済みの ID を信頼して、そのロールを引き受けます。これには、AWS のプリンシパルか、外部 ID プロバイダー (IdP) からのユーザーが含まれます。プリンシパルまたは ID がロールを引き受けると、引き受けたロールのアクセス許可を持った、一時的なセキュリティ認証情報を受け取ります。AWS でこれらのセッション認証情報を使用して操作を実行すると、これらは*ロールセッションプリンシパル*になります。

リソースベースのポリシーでロールプリンシパルを指定すると、ロールのアクセス許可を制限するポリシータイプによって、プリンシパルの有効なアクセス許可が制限されます。これには、セッションポリシーとアクセス許可の境界が含まれます。ロールセッションの有効なアクセス許可の評価方法については、「[ポリシーの評価論理](reference_policies_evaluation-logic.md)」を参照してください。

`Principal` 要素でロール ARN を指定する場合は、次の形式を使用します。

```
"Principal": { "AWS": "arn:aws:iam::AWS-account-ID:role/role-name" }
```

**重要**  
ロール信頼ポリシーの `Principal` 要素に、特定の IAM ロールを指し示す ARN が含まれている場合、その ARN はポリシーを保存するときにロールの一意のプリンシパル ID に変換されます。これにより、ロールを削除して再作成することにより、誰かがそのユーザーの特権をエスカレートするリスクを緩和できます。通常、この ID はコンソールには表示されません。これは、信頼ポリシーが表示されるときに、IAM が ロール ARN への逆変換を行うためです。ただし、ロールを削除すると、関係が壊れます。ロールを再作成した場合でも、ポリシーは適用されません。これは、新しいロールは信頼ポリシーに保存されている ID と一致しない新しいプリンシパル ID を持っているためです。この場合、プリンシパル ID はリソースベースポリシーに表示されます。これは AWS が有効な ARN に戻って ID をマッピングできなくなるためです。その結果、信頼ポリシーの `Principal` 要素で参照されているロールを削除して再作成する場合は、ポリシーのロールを編集してプリンシパル ID を正しい ARN に置き換える必要があります。ポリシーを保存するときに、ARN は再びロールの新しいプリンシパル ID に変換されます。詳細については、[「Understanding AWS's Handling of Deleted IAM roles in Policies」](https://repost.aws/articles/ARSqFcxvd7R9u-gcFD9nmA5g/understanding-aws-s-handling-of-deleted-iam-roles-in-policies)を参照してください。

または、ロールプリンシパルをリソースベースのポリシーのプリンシパルとして指定するか、[幅広くアクセスを許可するポリシーを作成](#principal-anonymous)して `aws:PrincipalArn` 条件キーを使用します。このキーを使用すると、ロールセッションプリンシパルには、セッションの結果として得られる ARN ではなく、引き受けたロールの ARN に基づくアクセス許可が付与されます。なぜなら、AWS は条件キー ARN を ID に変換せず、ロールを削除してから同じ名前で新しくロールを作成すると、ロール ARN に付与されたアクセス許可は保持されるからです。アクセス許可の境界やセッションポリシーなどの ID ベースのポリシータイプは、アイデンティティベースのポリシーに明示的な拒否が含まれていない限り、`Principal` 要素で、ワイルドカード (\$1) を含む `aws:PrincipalArn` 条件キーを使用して付与されたアクセス許可を制限することはありません。

## ロールセッションプリンシパル
<a name="principal-role-session"></a>

リソースベースのポリシーにある `Principal` 要素か、プリンシパルをサポートする条件キーで、ロールセッションを指定できます。プリンシパルまたは ID がロールを引き受けると、引き受けたロールのアクセス許可を持った、一時的なセキュリティ認証情報を受け取ります。AWS でこれらのセッション認証情報を使用して操作を実行すると、これらは*ロールセッションプリンシパル*になります。

ロールセッションプリンシパルに使用する形式は、ロールの引き受けに使用する AWS STS のオペレーションによります。

**重要**  
AWS では、可能な限りロールセッションプリンシパルの代わりに[ IAM ロールプリンシパル](#principal-roles)をポリシーで使用することをお勧めします。`Condition` ステートメントと条件キーを使用して、必要に応じてアクセス範囲をさらに絞り込みます。

`Principal` 要素のロールセッションプリンシパル ARN を指定する場合は、次の形式を使用します。

```
"Principal": { "AWS": "arn:aws:sts::AWS-account-ID:assumed-role/role-name/role-session-name" }
```

さらに管理者は、ロールセッションの発行方法を制御するプロセスを設計できます。例えば、ユーザーがワンクリックするだけで、予測可能なセッション名を作成するソリューションを提供できます。これを管理者が行う場合、ポリシーまたは条件キーで、ロールセッションプリンシパルを使用できます。それ以外の場合は、ロール ARN を `aws:PrincipalArn` 条件キーのプリンシパルとして指定することができます。ロールをどのようにプリンシパルとして指定するかによって、セッション完了後の有効なアクセス許可が変わります。詳細については、「[IAM ロールプリンシパル](#principal-roles)」を参照してください。

## OIDC フェデレーテッドプリンシパル
<a name="principal-federated-web-identity"></a>

OIDC フェデレーテッドプリンシパルは、OpenID プロバイダー (OP) とも呼ばれる OIDC 準拠 IDP から JSON ウェブトークン (JWT) を使用して AWS STS `AssumeRoleWithWebIdentity` API を呼び出し、一時的な AWS 認証情報をリクエストするときに使用されるプリンシパルです。OIDC フェデレーテッドプリンシパルは、AWS アカウントの OIDC IDP、または 4 つの組み込み ID プロバイダー (Login with Amazon、Google、Facebook、[Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html)) を表すことができます。

OIDC IDP から JWT が発行されたユーザー、ワークロード、またはシステムは、JWT を使用して `AssumeRoleWithWebIdentity` を呼び出し、JWT を発行した OIDC IDP を信頼するように設定された IAM ロールの一時的な AWS セキュリティ認証情報をリクエストできます。JWT は、ID トークン、アクセストークン、またはその他の方法で配信される JWT トークン ([AWS STS による要件](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html#manage-oidc-provider-prerequisites)を満たしている場合) です。詳細については、「[一般的なシナリオ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_federation_common_scenarios.html)」と「[OIDC プロバイダーを通じた認証情報のリクエスト](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity)」を参照してください。

このプリンシパルタイプをロール信頼ポリシーで使用し、AWS アカウントに存在する OIDC IDP、または 4 つの組み込み IDP のいずれかを使用して `AssumeRoleWIthWebIdentity` を呼び出すアクセス許可を許可または拒否します。ロール信頼ポリシーの `Principal` 要素で OIDC フェデレーテッドプリンシパル ARN を指定するには、組み込みの OIDC IDP に対して次の 4 つの形式のいずれかを使用します。

```
"Principal": { "Federated": "cognito-identity.amazonaws.com" }
```

```
"Principal": { "Federated": "www.amazon.com" }
```

```
"Principal": { "Federated": "graph.facebook.com" }
```

```
"Principal": { "Federated": "accounts.google.com" }
```

アカウントに追加する OIDC プロバイダー (GitHub など) を使用する場合は、ロールの信頼ポリシーでプロバイダーの ARN を指定します。この設定により、カスタム ID プロバイダーを介して認証されたユーザーのアクセスを制御する IAM ポリシーを作成できます。

```
"Principal": { "Federated": "arn:aws:iam::AWS-account-ID:oidc-provider/full-OIDC-identity-provider-URL" }
```

例えば、GitHub が信頼されたウェブ ID プロバイダーである場合、ロール信頼ポリシーの `Principal` 要素の OIDC ロールセッション ARN は次の形式を使用します。

```
"Principal": { "Federated": "arn:aws:iam::AWS-account-ID:oidc-provider/tokens.actions.githubusercontent.com" }
```

詳細については、「[Configuring OpenID Connect in Amazon Web Services](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)」を参照してください。

OIDC フェデレーテッドプリンシパルは、ロール信頼ポリシー以外のポリシータイプではサポートされていません。

## SAML フェデレーテッドプリンシパル
<a name="principal-saml"></a>

*SAML フェデレーテッドプリンシパル*は、SAML アサーションを使用して AWS STS `AssumeRoleWithSAML` API を呼び出して一時的な AWS 認証情報をリクエストするときに使用されるプリンシパルです。SAML ID プロバイダー (IDP) を使用してサインインし、この操作を使用して IAM ロールを引き受けることができます。`AssumeRoleWithWebIdentity` と同様に、 `AssumeRoleWithSAML` は認証に AWS 認証情報を必要としません。代わりに、ユーザーはまず SAML ID プロバイダーで認証し、次に SAML アサーションを使用して `AssumeRoleWithSAML` API コールを行うか、AWS マネジメントコンソールにサインインする AWS サインイン/SAML ページにリダイレクトされます。このオペレーションを使用してロールを引き受けることができるプリンシパルについては、「[AWS STS 認証情報を比較する](id_credentials_sts-comparison.md)」を参照してください。

このプリンシパルタイプをロール信頼ポリシーで使用して、信頼済みの SAML ID プロバイダーに基づき、アクセス許可を許可または拒否します。ロール信頼ポリシーの `Principal` 要素で SAML ID ロールセッション ARN を指定する場合は、次の形式を使用します。

```
"Principal": { "Federated": "arn:aws:iam::AWS-account-ID:saml-provider/provider-name" }
```

## IAM ユーザープリンシパル
<a name="principal-users"></a>

リソースベースのポリシーの `Principal` 要素、またはプリンシパルをサポートする条件キーで、IAM ユーザーを指定できます。

**注記**  
`Principal` 要素にある [*Amazon リソースネーム*(ARN)](reference_identifiers.md#identifiers-arns)のユーザー名の部分では、大文字と小文字を区別します。

```
"Principal": { "AWS": "arn:aws:iam::AWS-account-ID:user/user-name" }
```

```
"Principal": {
  "AWS": [
    "arn:aws:iam::AWS-account-ID:user/user-name-1", 
    "arn:aws:iam::AWS-account-ID:user/user-name-2"
  ]
}
```

`Principal` 要素内でユーザーを指定する際に、"すべてのユーザー" の意味でワイルドカード (`*`) を使用することはできません。プリンシパルには、常に複数の特定ユーザーを指定する必要があります。

**重要**  
ロールの信頼ポリシーの `Principal` 要素に、特定の IAM ユーザーを指し示す ARN が含まれている場合、その ARN をポリシーに保存するときに、IAM がユーザーの一意のプリンシパル ID に変換されます。これにより、ユーザーを削除して再作成することにより、誰かがそのユーザーの特権をエスカレートするリスクを緩和できます。通常、この ID はコンソールには表示されません。これは、信頼ポリシーが表示されるときに、ユーザーの ARN への逆変換が行われるためです。ただし、ユーザーを削除すると、関係が壊れます。ユーザーを再作成しても、ポリシーが適用されることはありません。これは、新しいユーザーには、信頼ポリシーに保存されている ID と一致しない新しいプリンシパル ID が付与されるためです。この場合、プリンシパル ID はリソースベースポリシーに表示されます。これは AWS が有効な ARN に戻って ID をマッピングできなくなるためです。その結果、信頼ポリシーの `Principal` 要素で参照されているユーザーを削除して再作成する場合は、ロールを編集して、正しくなくなったプリンシパル ID を正しい ARN に置き換える必要があります。ポリシーを保存するときに、IAM が再び、ARN をユーザーの新しいプリンシパル ID に変換します。

## IAM Identity Center のプリンシパル
<a name="principal-identity-users"></a>

IAM Identity Center では、リソースベースのポリシーのプリンシパルが AWS アカウント プリンシパルとして定義されている必要があります。アクセスを指定するには、条件ブロック内のアクセス許可セットのロール ARN を参照してください。詳細については、*「IAM Identity Center ユーザーガイド*」の「[リソースポリシー、Amazon EKS、および AWS KMS のアクセス許可セットの参照](https://docs.aws.amazon.com/singlesignon/latest/userguide/referencingpermissionsets.html)」を参照してください。

## AWS STS フェデレーションユーザープリンシパル
<a name="sts-session-principals"></a>

リソースベースのポリシーにある `Principal` 要素か、プリンシパルをサポートする条件キーで、*フェデレーションユーザーセッション*を指定できます。

**重要**  
AWS では、AWS STS フェデレーションユーザーセッションの使用を制限することをお勧めします。代わりに、[IAM ロール](IAM/latest/UserGuide/tutorial_cross-account-with-roles.html)を使用します。

AWS STS フェデレーションユーザープリンシパルは、長期的な IAM 認証情報を使用して呼び出される `GetFederationToken` オペレーションによって作成されます。フェデレーションユーザーのアクセス許可は、`GetFederationToken` を呼び出したプリンシパルとパラメータとして `GetFederationToken` API に渡されるセッションポリシーの交差です。

AWS では、IAM ユーザーまたは AWS アカウントのルートユーザー は、長期的なアクセスキーを使用して認証を行うことができます。このオペレーションで、どのプリンシパルがフェデレーションを行えるかについては、「[AWS STS 認証情報を比較する](id_credentials_sts-comparison.md)」を参照してください。
+ **IAM フェデレーションユーザー** – `GetFederationToken` オペレーションを使用して IAM ユーザーがフェデレーションを行った結果、IAM ユーザーのフェデレーションユーザーのセッションができます。
+ **フェデレーションルートユーザー** – `GetFederationToken` オペレーションを使用してルートユーザーがフェデレーションを行った結果、IAM ユーザーのフェデレーションユーザーのセッションができます。

この操作を使用して、IAM ユーザーまたはルートユーザーが AWS STS から一時的な認証情報をリクエストした場合、一時的なフェデレーションユーザーセッションを開始します。このセッションの ARN は、フェデレーション元の ID に基づいています。

`Principal` 要素でフェデレーションユーザーセッション ARN を指定する場合は、次の形式を使用します。

```
"Principal": { "AWS": "arn:aws:sts::AWS-account-ID:federated-user/user-name" }
```

## AWS サービスプリンシパル
<a name="principal-services"></a>

リソースベースのポリシーにある `Principal` 要素か、プリンシパルをサポートする条件キーで、AWS サービスを指定できます。*サービスプリンシパル*は、サービスの識別子です。

AWS のサービスが引き受けることのできる IAM ロールは、*[サービスロール](id_roles.md#iam-term-service-role)*と呼ばれます。サービスロールには信頼ポリシーを含める必要があります。*信頼ポリシー* は、どのプリンシパルがそのロールを果たすことができるかを定義するロールにアタッチされるリソースベースのポリシーです。一部のサービスロールには事前定義済みの信頼ポリシーがあります。ただし、状況によっては、信頼ポリシーでプリンシパルサービスを指定する必要があります。IAM ポリシーのサービスプリンシパルを `"Service": "*"` にすることはできません。

**重要**  
サービスプリンシパルの識別子にはサービス名が含まれ、通常は次の形式になります。  
`service-name.amazonaws.com`

サービスプリンシパルはサービスによって定義されます。一部のサービスのサービスプリンシパルを検索するには [IAM と連携する AWS のサービス](reference_aws-services-that-work-with-iam.md) を開き、サービスの **[Service-linked role]** (サービスにリンクされたロール) 列が **[Yes]** (はい) になっているかどうかを確認し、**[Yes]** (はい) リンクを開いてそのサービスのサービスにリンクされたロールのドキュメントを表示します。**サービスプリンシパル**を表示するには、そのサービスの [Service-Linked Role Permissions] (サービスにリンクされたロールのアクセス許可) のセクションを探します。

次の例では、サービスロールにアタッチできるポリシーを示します。ポリシーは、Amazon ECS および Elastic Load Balancing の 2 つのサービスを有効にして、ロールを引き受けます。これらのサービスは、ロールに割り当てられた権限ポリシー (表示されていない) によって付与されたタスクを実行できます。複数のサービスプリンシパルを指定する場合に、2 つの `Service` 要素は指定できません。1 つのみ指定できます。代わりに、1 つの `Service` 要素の値として複数のサービスのプリンシパルのアレイを使用します。

```
"Principal": {
    "Service": [
        "ecs.amazonaws.com",
        "elasticloadbalancing.amazonaws.com"
   ]
}
```

## オプトインリージョンの AWS サービスプリンシパル
<a name="principal-services-in-opt-in-regions"></a>

リソースは複数の AWS リージョンで起動できますが、一部のリージョンはオプトインする必要があります。オプトインする必要があるリージョンの一覧については、「*AWS 全般のリファレンス* ガイド」の「[AWS リージョンの管理](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)」を参照してください。

オプトインリージョンの AWS サービスが同じリージョン内でリクエストを行うと、サービスプリンシパル名の形式は、サービスプリンシパル名がリージョン化されないバージョンとして識別されます。

`service-name.amazonaws.com`

オプトインリージョンの AWS サービスが別のリージョンにクロスリージョンリクエストを行うと、サービスプリンシパル名の形式は、サービスプリンシパル名のリージョン化バージョンとして識別されます。

`service-name.{region}.amazonaws.com`

例えば、Amazon SNS トピックが `ap-southeast-1` リージョンにあり、Amazon S3 バケットがオプトインリージョン `ap-east-1` にあるとします。メッセージを SNS トピックに公開するように、S3 バケット通知を設定する必要があります。S3 サービスが SNS トピックにメッセージを投稿できるようにするには、トピックのリソースベースのアクセスポリシーを使用して S3 サービスのプリンシパル `sns:Publish` 権限を付与する必要があります。

トピックアクセスポリシーで S3 サービスプリンシパルのリージョン化されないバージョンである `s3.amazonaws.com` を指定すると、バケットからトピックへの `sns:Publish` リクエストは失敗します。次の例では、SNS トピックアクセスポリシーの `Principal` ポリシー要素に、リージョン化されない S3 サービスプリンシパルを指定しています。

```
"Principal": { "Service": "s3.amazonaws.com" }
```

バケットはオプトインリージョンにあり、リクエストは同じリージョン外で行われるため、S3 サービスプリンシパルはリージョン化されたサービスプリンシパル名 `s3.ap-east-1.amazonaws.com` として表示されます。オプトインリージョンの AWS サービスが別のリージョンにリクエストを行う場合は、リージョン化されたサービスプリンシパル名を使用する必要があります。リージョン化されたサービスプリンシパル名を指定した後に、バケットが別のリージョンにある SNS トピックに `sns:Publish` リクエストを行うと、リクエストは成功します。次の例では、SNS トピックアクセスポリシーの `Principal` ポリシー要素に、リージョン化された S3 サービスプリンシパルを指定しています。

```
"Principal": { "Service": "s3.ap-east-1.amazonaws.com" }
```

オプトインリージョンから別のリージョンへのクロスリージョンリクエストに対するリソースポリシーまたはサービスプリンシパルベースの許可リストは、リージョン化されたサービスプリンシパル名を指定した場合にのみ成功します。

**注記**  
IAM ロールの信頼ポリシーには、リージョン化されないサービスプリンシパル名を使用することをお勧めします。IAM リソースはグローバルであるため、どのリージョンでも同じロールを使用することができます。

## すべてのプリンシパル
<a name="principal-anonymous"></a>

ワイルドカード (\$1) を使用して `Principal` リソースベースのポリシーの要素またはプリンシパルをサポートする条件キーにあるすべてのプリンシパルを指定できます。*[リソースベースのポリシー](access_policies.md#policies_resource-based)*許可のアクセス権および[条件キー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)はポリシーステートメントの条件を制限するために使用されます。

**重要**  
パブリックまたは匿名アクセスを許可する意図がない限り、`Allow` の影響を伴うリソースベースのポリシーの `Principal` 要素にワイルドカード (\$1) を使用しないことを強くお勧めします。それ以外の場合は、`Principal` 要素で目的のプリンシパル、サービス、または AWS アカウントを指定して、`Condition` 要素でさらにアクセスを制限します。これは、他のプリンシパルがアカウントのプリンシパルになることを許可することから、特にIAM ロールの信頼ポリシーに当てはまります。

リソースベースポリシーでは、`Allow` 効果でワイルドカード (\$1) を使用することで、匿名ユーザー (パブリックアクセス) を含むすべてのユーザーへのアクセスが許可されます。アカウント内の IAM ユーザーおよびロールプリンシパルの場合、他のアクセス権は必要ありません。他のアカウントのプリンシパルの場合、アカウント内にリソースへのアクセスを許可する ID ベースのアクセス許可がある必要があります。これは[クロスアカウントアクセス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html)と呼ばれます。

匿名ユーザーの場合、次の要素は同等です。

```
"Principal": "*"
```

```
"Principal" : { "AWS" : "*" }
```

ワイルドカードとして使用して、プリンシパルの名前または ARN の一部に一致させることはできません。

次の例は、`Condition` 要素で指定されたものを*除いた*すべてのプリンシパルを明確に拒否する [AWS JSON ポリシーの要素: NotPrincipal](reference_policies_elements_notprincipal.md) の代わりに使用できるリソースベースのポリシーを示しています。このポリシーは [ Amazon S3 バケットに追加](https://docs.aws.amazon.com//AmazonS3/latest/userguide/add-bucket-policy.html)する必要があります。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "UsePrincipalArnInsteadOfNotPrincipalWithDeny",
      "Effect": "Deny",
      "Action": "s3:*",
      "Principal": "*",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*",
        "arn:aws:s3:::amzn-s3-demo-bucket"
      ],
      "Condition": {
        "ArnNotEquals": {
          "aws:PrincipalArn": "arn:aws:iam::444455556666:user/user-name"
        }
      }
    }
  ]
}
```

------

## 詳細情報
<a name="Principal_more-info"></a>

詳細については次を参照してください:
+ 「*Amazon Simple Storage Service ユーザーガイド*」にある[バケットポリシーの例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)
+ [Amazon Simple Notification Service 開発者ガイド](https://docs.aws.amazon.com/sns/latest/dg/UsingIAMwithSNS.html#ExamplePolicies_SNS)の「*Amazon SNS のポリシーの例*」
+ 「*Amazon Simple Queue Service 開発者ガイド*」にある [Amazon SQS ポリシーの例](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/SQSExamples.html)
+ 「*AWS Key Management Service 開発者ガイド*」にある[主要ポリシー](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)
+ 「*AWS 全般のリファレンス*」 の「[アカウント ID](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html)」
+ [OIDC フェデレーション](id_roles_providers_oidc.md)

# AWS JSON ポリシーの要素: NotPrincipal
<a name="reference_policies_elements_notprincipal"></a>

`NotPrincipal` 要素は `"Effect":"Deny"` を使用して、`NotPrincipal` 要素で指定されたプリンシパル***を除く***すべてのプリンシパルへのアクセスを拒否します。プリンシパルには、IAM ユーザー、AWS STS フェデレーションユーザーのプリンシパル、IAM ロール、引き受けたロールセッション、AWS アカウント、AWS サービス、その他のプリンシパルタイプを選択することができます。プリンシパルの詳細については、「[AWS JSON ポリシーの要素: Principal](reference_policies_elements_principal.md)」を参照してください。

`NotPrincipal` は `"Effect":"Deny"` とともに使用する必要があります。`"Effect":"Allow"` とともに使用することはサポートされていません。

**重要**  
セキュリティおよび認可戦略の一環として、新しいリソースベースのポリシーに `NotPrincipal` を使用することはお勧めしません。`NotPrincipal` を使用すると、複数のポリシータイプの影響をトラブルシューティングすることが難しい場合があります。代わりに ARN 条件演算子で `aws:PrincipalArn` コンテキストキーを使用することをおすすめします。

## 重要ポイント
<a name="notprincipal-key-points"></a>
+ `NotPrincipal` 要素は、VPC エンドポイントを含む一部の AWS サービスのリソースベースのポリシーでサポートされています。リソースベースのポリシーは、リソースに直接埋め込むポリシーです。IAM のアイデンティティベースのポリシーでも IAM ロールの信頼ポリシーでも `NotPrincipal` 要素は使用できません。
+ アクセス許可の境界ポリシーがアタッチされている IAM ユーザーまたはロールに対する `Deny` 効果を持つ `NotPrincipal` ポリシー要素を含むリソースベースのポリシーステートメントは使用しないでください。`Deny` 効果のある `NotPrincipal` 要素は、`NotPrincipal` 要素で指定されている値に関係なく、アクセス許可の境界ポリシーがアタッチされている IAM プリンシパルを常に拒否します。これにより、本来であればリソースにアクセスできたはずの IAM ユーザーまたはロールの一部がアクセスを失うことになります。リソースベースのポリシーステートメントを変更して、`NotPrincipal` 要素ではなく [`aws:PrincipalArn`](reference_policies_condition-keys.md#condition-keys-principalarn) コンテキストキーで条件演算子 [`ArnNotEquals`](reference_policies_elements_condition_operators.md#Conditions_ARN) を使用してアクセスを制限することをおすすめします。アクセス許可の境界の詳細については、「[IAM エンティティのアクセス許可境界](access_policies_boundaries.md)」を参照してください。
+ `NotPrincipal` を使用する場合は、拒否されていないプリンシパルのアカウントの ARN も設定する必要があります。それ以外の場合、ポリシーでは、そのプリンシパルを含むアカウント全体へのアクセスが拒否されます。ポリシーに含めるサービスに応じて、AWS は最初にアカウントを確認し、次にユーザーを確認する場合があります。引き受けたロールのユーザー (ロールを使用しているユーザー) を評価する場合、AWS は最初にアカウントを確認し、次にロール、最後にロールを引き受けたユーザーを確認する場合があります。ロールを引き受けたユーザーは、ユーザーがロールを引き受けたときに指定されたロールセッション名で識別されます。したがって、ユーザーのアカウントの ARN、またはロールの ARN とそのロールを含むアカウントの ARN の両方を、明示的に含めることを強くお勧めします。
+ `NotPrincipal` 要素は、サービスコントロールポリシー (SCP) およびリソースコントロールポリシー (RCP) ではサポートされていません。

## `NotPrincipal` 要素の代替方法
<a name="notprincipal-alternatives"></a>

AWS でアクセスコントロールを管理する場合、指定した 1 つまたは複数のプリンシパルは例外とし、リソースへのすべてのプリンシパルアクセスを明示的に拒否する必要があるシナリオがあります。AWS では、より正確な制御とトラブルシューティングを容易にするために、グローバル条件コンテキストキーを持つ Deny ステートメントを使用することをお勧めします。次の例は、 `StringNotEquals` や `ArnNotEquals` などの条件演算子を使用して、Condition 要素で指定されたものを除くすべてのプリンシパルへのアクセスを拒否する代替アプローチを示しています。

## IAM ロールを使用したシナリオ例
<a name="notprincipal-alternative-role"></a>

Deny ステートメントを含むリソースベースのポリシーを使用すると、すべての IAM ロール (Condition 要素で指定されたロールを除く) がリソースにアクセスしたり操作したりすることを防ぐことができます。このアプローチは、明示的な拒否が常に許可ステートメントよりも優先されるという AWS セキュリティ原則に従い、AWS インフラストラクチャ全体で最小特権の原則を維持するのに役立ちます。

`NotPrincipal` を使用する代わりに、グローバル条件コンテキストキーと [`ArnNotEquals`](reference_policies_elements_condition_operators.md#Conditions_ARN) のような条件演算子を含む Deny ステートメントを使用して、IAMロールがリソースにアクセスできるように明示的に許可することをお勧めします。次の例では、[aws:PrincipalArn](reference_policies_condition-keys.md#condition-keys-principalarn) を使用して、ロール `Bucket_Account_Audit` が `read-only-role` フォルダ内の Amazon S3 バケットにアクセスすることを許可します。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyCrossAuditAccess",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::Bucket_Account_Audit",
        "arn:aws:s3:::Bucket_Account_Audit/*"
      ],
      "Condition": {
        "ArnNotEquals": {
          "aws:PrincipalArn": "arn:aws:iam::444455556666:role/read-only-role"
        }
      }
    }
  ]
}
```

------

## サービスプリンシパルを使用するシナリオ例
<a name="notprincipal-alternative-service-principal"></a>

Deny ステートメントを使用して、 `Condition` 要素で指定されたものを除くすべてのサービスプリンシパルがリソースにアクセスまたは操作できないようにすることができます。このアプローチは、きめ細かなアクセスコントロールを実装する必要がある場合や、AWS 環境内のさまざまなサービスとアプリケーション間のセキュリティ境界を確立する必要がある場合に特に役立ちます。

`NotPrincipal` を使用する代わりに、グローバル条件コンテキストキーと条件演算子 [`StringNotEquals`](reference_policies_elements_condition_operators.md#Conditions_String) を含む Deny ステートメントを使用して、サービスプリンシパルにリソースへのアクセスを明示的に許可することをお勧めします。次の例では、`aws:PrincipalServiceName` を使用して、AWS CodeBuild サービスプリンシパルが `BUCKETNAME` フォルダ内の Amazon S3 バケットにアクセスすることを明示的に許可します。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyNotCodeBuildAccess",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::BUCKETNAME",
        "arn:aws:s3:::BUCKETNAME/*"
      ],
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:PrincipalServiceName": "codebuild.amazonaws.com"
        }
      }
    }
  ]
}
```

------

# IAM JSON ポリシー要素Action
<a name="reference_policies_elements_action"></a>

`Action` 要素は、許可または拒否される特定のアクションについて説明します。ステートメントには、`Action` または `NotAction` 要素を含める必要があります。各 AWS 製品には、そのサービスで行うことができるタスクを記述する独自のアクションセットがあります。例えば、Amazon S3のアクションのリストは、[Amazon Simple Storage Service ユーザーガイド](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html)の*ポリシーでのアクセス許可の指定*にあり、Amazon EC2 のアクションのリストは、[Amazon EC2 APIリファレンス](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/query-apis.html)にあり、AWS Identity and Access Management のアクションのリストは、[IAM API リファレンス](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Operations.html)に記載されています。他のサービスのアクションのリストについては、そのサービスの API リファレンス[ドキュメント](https://aws.amazon.com/documentation)を参照してください。

AWS は、ポリシー管理ワークフローの自動化を合理化するために、JSON 形式のサービス参照情報も提供します。サービスリファレンス情報を使用すると、マシンが読み取り可能なファイルから AWS のサービス 全体の使用可能なアクション、リソース、条件にアクセスできます。詳細については、「[サービス認可リファレンス」の「プログラムによるアクセスの簡素化された AWS のサービス 情報](https://docs.aws.amazon.com/service-authorization/latest/reference/service-reference.html)」を参照してください。

値は、サービス名前空間をアクションプレフィックス（`iam`、`ec2` `sqs`、`sns`、`s3` など）として使用し、許可または拒否するアクションの名前を付けて特定します。この名前は、サービスでサポートされているアクションと一致しなければいけません。プレフィックスとアクション名には、大文字と小文字の区別がありません。例えば、`iam:ListAccessKeys` は `IAM:listaccesskeys` と同じです。下記の例は、様々サービスに対する`Action`要素の例を示します。

**Amazon SQS アクション**

```
"Action": "sqs:SendMessage"
```

**Amazon EC2 アクション**

```
"Action": "ec2:StartInstances"
```

**IAM アクション**

```
"Action": "iam:ChangePassword"
```

**Amazon S3 のアクション**

```
"Action": "s3:GetObject"
```

`Action`要素には複数の値を指定することができます。

```
"Action": [ "sqs:SendMessage", "sqs:ReceiveMessage", "ec2:StartInstances", "iam:ChangePassword", "s3:GetObject" ]
```

複数文字一致ワイルドカード (`*`) と 1 文字一致ワイルドカード (`?`) を使用して、特定の AWS の製品が提供するすべてのアクションへのアクセスを許可できます。たとえば、以下の `Action` 要素はすべての S3 アクションに適用します。

```
"Action": "s3:*"
```

また、アクション名の一部にワイルドカード（`*` または `?`）を使用できます。たとえば、以下の `Action` 要素は、`AccessKey`、`CreateAccessKey`、`DeleteAccessKey`、`ListAccessKeys` などの文字列 `UpdateAccessKey` を含むすべての IAM アクションに適用されます。

```
"Action": "iam:*AccessKey*"
```

サービスの中には、使用可能なアクションに制限があるものがあります。たとえば、Amazon SQS では、使用可能なすべての Amazon SQS アクションのサブセットだけを使用することができます。この場合、`*` ワイルドカードはキューの完全なコントロールを許可せず、共有しているアクションのサブセットだけが許可されます。詳細については、[Amazon Simple Queue Service デベロッパーガイド](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/acp-overview.html#PermissionTypes)の「*アクセス許可を理解する*」を参照してください。

# IAM JSON ポリシー要素NotAction
<a name="reference_policies_elements_notaction"></a>

`NotAction` は、指定されたアクションリスト*以外*のすべてを明示的に照合する高度なポリシー要素です。`NotAction` を使うと、一致するアクションの長いリストではなく、いくつかの一致しないアクションのリストが含まれるため、ポリシーが短くなります。`NotAction` で指定したアクションは、ポリシーステートメントの `Allow` または `Deny` 効果の影響を受けません。これは、`Allow` 効果を使用する場合、リストされていない該当するすべてのアクションまたはサービスが許可されることを意味します。また、`Deny` 効果を使用する場合は、リストされていないそのようなアクションやサービスは定義されません。`NotAction` を `Resource` 要素と共に使用することで、ポリシーの範囲を指定します。これにより、AWS は該当するアクションまたはサービスを決定します。詳細については、次のポリシー例を参照してください。

**Allow での NotAction の使用** 

`"Effect": "Allow"` のステートメントで `NotAction` 要素を使用して、AWS サービス内で、`NotAction` で指定したアクションを除くすべてのアクションへのアクセスを許可できます。これを `Resource` 要素と共に使用してポリシーの範囲を提供し、許可されるアクションを、指定されたリソースで実行できるアクションに制限します。

次の例では、任意の S3 リソースで実行できる、バケットの削除*以外*のすべての Amazon S3 アクションにユーザーがアクセスすることを許可します。また、このポリシーでは、他のサービスのアクションも許可されません。他のサービスのアクションは S3 リソースには適用されないためです。

```
"Effect": "Allow",
"NotAction": "s3:DeleteBucket",
"Resource": "arn:aws:s3:::*",
```

多数のアクションへのアクセスを許可することが必要になる場合があります。`NotAction` 要素を使用してそのステートメントを効果的に反転させることで、アクションのリストを短くすることができます。たとえば、AWS には多数のサービスがあるため、IAM へのアクセスを除くすべてのアクションの実行をユーザーに許可するポリシーを作成することが必要になる場合があります。

以下の例では、IAM を除くすべての AWS サービスですべてのアクションへのアクセスをユーザーに許可します。

```
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
```

`NotAction` 要素と `"Effect": "Allow"` をポリシー内の同じステートメントで使用したり、別のステートメントで使用したりすることに注意してください。`NotAction` は、指定したリソースに対して明示的に列挙または適用されないすべてのサービスおよびアクションと一致するため、意図した以上のアクセス許可をユーザーに付与する結果になる場合があります。

**Deny での NotAction の使用**

`NotAction` のステートメントで`"Effect": "Deny"` 要素を使用すると、`NotAction` 要素で指定されているアクションを除いて、リストされたすべてのリソースへのアクセスを拒否できます。この組み合わせでは、リストされた項目は許可されませんが、リストされていないアクションは明示的に拒否されます。許可したいアクションを許可する必要があります。

次の条件付きの例では、ユーザーが MFA の使用にサインインしていない場合、非 IAM アクションへのアクセスを拒否しています。ユーザーが MFA でサインインした場合は、`"Condition"` テストは失敗し、最終的な `"Deny"` ステートメントは無効になります。ただし、これにより、ユーザーがアクションにアクセスすることは許可されないため、IAM アクションを除くアクションはすべて明示的に拒否されます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "DenyAllUsersNotUsingMFA",
        "Effect": "Deny",
        "NotAction": "iam:*",
        "Resource": "*",
        "Condition": {"BoolIfExists": {"aws:MultiFactorAuthPresent": "false"}}
    }]
}
```

------

特定のサービスからのアクションを除き、特定のリージョン以外のアクションへのアクセスを拒否するポリシーの例については、「[AWS: リクエストされたリージョンに基づいて、AWS へのアクセスを拒否する](reference_policies_examples_aws_deny-requested-region.md)」を参照してください。

# IAM JSON ポリシー要素Resource
<a name="reference_policies_elements_resource"></a>

IAM ポリシーステートメントの `Resource` 要素では、そのステートメントが適用されるオブジェクトを 1 つ以上定義します。ステートメントには`Resource` または `NotResource` 要素を含める必要があります。

Amazon リソースネーム (ARN) を使用してリソースを指定します。ARN の形式は、AWS のサービスおよび参照先の特定のリソースによって異なります。ARN 形式はさまざまに異なっても、常に ARN を使用してリソースを識別します。ARN の形式についての詳細は、[IAM ARN](reference_identifiers.md#identifiers-arns)を参照してください。リソースの指定方法についての情報は、お客様が記述しているステートメントを適用するリソースのサービスに関するドキュメントを参照してください。

**注記**  
AWS のサービスによっては、個々のリソースに対してアクションを指定できるものもあります。こうしたサービスでは、`Action` 要素または `NotAction` 要素にアクションを指定すると、アクションがそのサービスのすべてのリソースに適用されます。この場合、`Resource` 要素にはワイルドカード文字 (`*`) を使用します。

以下の例は、特定の Amazon SQS キューを示しています。

```
"Resource": "arn:aws:sqs:us-east-2:account-ID-without-hyphens:queue1"
```

以下の例は、AWS アカウント内の `Bob` という IAM ユーザーを示しています。

**注記**  
`Resource` 要素では、IAM ユーザー名の大文字と小文字が区別されます。

```
"Resource": "arn:aws:iam::account-ID-without-hyphens:user/Bob"
```

## リソース ARN でのワイルドカードの使用
<a name="reference_policies_elements_resource_wildcards"></a>

ARN の個々のセグメント (コロンで区切られている部分) 内にワイルドカード文字 (`*` と `?`) を使用して、以下のものを表すことができます。
+ 文字を任意に組み合わせたもの (`*`)
+ 任意の 1 文字 (`?`)

各セグメントで複数の `*` または `?` 文字を使用できます。`*` ワイルドカードがリソース ARN セグメントの最後の文字である場合は、コロンの境界を越えて一致するように拡張できます。コロンで区切られた ARN セグメント内ではワイルドカード (`*` と `?`) を使用することをお勧めします。

**注記**  
AWS 製品を識別するためにサービスセグメントでワイルドカードを使用することはできません。ARN セグメントの詳細については、「[Amazon リソースネーム (ARN) で AWS リソースを識別する](reference-arns.md)」を参照してください。

以下の例は、`/accounting` というパスを持つすべての IAM ユーザーを示しています。

```
"Resource": "arn:aws:iam::account-ID-without-hyphens:user/accounting/*"
```

以下の例は、特定の Amazon S3 バケット内のすべての項目を示しています。

```
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
```

アスタリスク (`*`) 文字を展開して、セグメント内のすべてを置き換えることができます。サービス名前空間によっては、スラッシュ (`/`) などの文字は区切り文字として機能します。たとえば、次のような Amazon S3 ARN を考えてみます。同じワイルドカード拡張ロジックがすべてのサービスに適用されるためです。

```
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*/test/*"
```

ARN のワイルドカードは、リストされた最初のオブジェクトだけでなく、バケット内の次のすべてのオブジェクトに適用されます。

```
amzn-s3-demo-bucket/1/test/object.jpg
amzn-s3-demo-bucket/1/2/test/object.jpg
amzn-s3-demo-bucket/1/2/test/3/object.jpg 
amzn-s3-demo-bucket/1/2/3/test/4/object.jpg
amzn-s3-demo-bucket/1///test///object.jpg
amzn-s3-demo-bucket/1/test/.jpg
amzn-s3-demo-bucket//test/object.jpg
amzn-s3-demo-bucket/1/test/
```

前のリストの最後の 2 つのオブジェクトを考えてみましょう。Amazon S3 オブジェクト名は、従来の区切り文字であるスラッシュ (`/`) で開始または終了できます。`/` は区切り文字として機能しますが、リソース ARN 内で使用した場合には特に意味を持ちません。これは、他の有効な文字と同じように扱われます。ARN は次のオブジェクトと一致しません。

```
amzn-s3-demo-bucket/1-test/object.jpg
amzn-s3-demo-bucket/test/object.jpg
amzn-s3-demo-bucket/1/2/test.jpg
```

## 複数のリソースの指定
<a name="reference_policies_elements_resource_multiple-resources"></a>

ARN の配列を使用することで、`Resource` 要素に複数のリソースを指定できます。以下の例は、2 つの DynamoDB テーブルを示しています。

```
"Resource": [
    "arn:aws:dynamodb:us-east-2:account-ID-without-hyphens:table/books_table",
    "arn:aws:dynamodb:us-east-2:account-ID-without-hyphens:table/magazines_table"
]
```

## リソース ARN でのポリシー変数の使用
<a name="reference_policies_elements_resource_policy-variables"></a>

`Resource` 要素では、特定のリソースを示す ARN の一部 (つまり、ARN の末尾部分) で JSON [ポリシー変数](reference_policies_variables.md)を使用できます。たとえば、リソース ARN の一部としてキー `{aws:username}` を使用することで、現在のユーザー名をリソースの名前の一部として含める必要があることを示すことができます。以下の例は、`{aws:username}` 要素内での `Resource` キーの使用方法を示します。ポリシーは、現在のユーザー名に一致する Amazon DynamoDB テーブルへのアクセスを許可します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "dynamodb:*",
        "Resource": "arn:aws:dynamodb:us-east-2:111122223333:table/${aws:username}"
    }
}
```

------

JSON ポリシー変数の詳細については、「[IAM ポリシーの要素: 変数とタグ](reference_policies_variables.md)」を参照してください。

# IAM JSON ポリシー要素NotResource
<a name="reference_policies_elements_notresource"></a>

`NotResource` は、指定されたリソースを除くすべてのリソースを明示的に照合する高度なポリシー要素です。`NotResource` を使うと、一致する予定のリソースのリストを含めるのではなく、一致する必要がないアクションがいくつかリストアップされ、リソースが短くなります。これは、単一の AWS のサービス内で適用されるポリシーで特に便利です。

たとえば、`HRPayroll`という名前のグループがあるとしましょう。`HRPayroll` のメンバーは、`Payroll` バケット内の `HRBucket` フォルダ以外のすべての Amazon S3 リソースにアクセスできません。次のポリシーは、リストされたリソース以外のすべての Amazon S3 リソースへのアクセスを明示的に拒否します。ただし、このポリシーは、すべてのリソースにユーザーのアクセス権を与えるものではないことに注意してください。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": "s3:*",
    "NotResource": [
      "arn:aws:s3:::HRBucket/Payroll",
      "arn:aws:s3:::HRBucket/Payroll/*"
    ]
  }
}
```

------

通常、リソースへのアクセスを明示的に拒否するには、`"Effect":"Deny"` を使用し、各フォルダを個別にリストする`Resource` 要素を含むポリシーを作成します。ただし、その場合には、`HRBucket` にフォルダを追加するたび、またはアクセスすべきでない Amazon S3 にリソースを追加するたびに、`Resource` 要素内のリストにその名前を追加する必要があります。代わりに `NotResource` 要素を使用すると、ユーザーはフォルダ名を `NotResource` 要素に追加しない限り、新しいフォルダへのアクセスは自動的に拒否されます。

`NotResource` を使用する場合は、この要素に指定されているリソースは制限されていないリソース*のみ*であることに注意してください。これにより、アクションに適用されるすべてのリソースが制限されます。上記の例では、ポリシーは Amazon S3 アクションにのみ影響し、そのため、Amazon S3 リソースにのみ影響します。`Action` 要素に Amazon EC2 アクションも含まれている場合、`NotResource` 要素で指定されていない EC2 リソースへのアクセスはポリシーによって拒否されます。サービス内のどのアクションでリソースの ARN を指定できるかについては、「[AWS のサービスのアクション、リソース、および条件キー](reference_policies_actions-resources-contextkeys.html)」を参照してください。

## NotResource とその他の要素
<a name="notresource-element-combinations"></a>

`"Effect": "Allow"`、`"Action": "*"`、および `"NotResource": "arn:aws:s3:::HRBucket"` **要素を一緒に使用しないでください**。このステートメントは、`HRBucket` S3 バケットを除くすべてのリソースで AWS のすべてのアクションを許可するため、非常に危険です。これにより、ユーザーは自身に `HRBucket` へのアクセスを許可するポリシーを追加することもできます。この操作はしないでください。

`NotResource` 要素と `"Effect": "Allow"` をポリシー内の同じステートメントで使用したり、別のステートメントで使用したりすることに注意してください。`NotResource` は、明示的に列挙されないすべてのサービスおよびリソースを許可するため、意図した以上のアクセス許可をユーザーに付与する結果になる場合があります。同じステートメントで `NotResource` 要素と `"Effect": "Deny"` を使用すると、明示的にリストされていないサービスとリソースが拒否されます。

# IAM JSON ポリシー要素Condition
<a name="reference_policies_elements_condition"></a>

`Condition` 要素 (または`Condition` *block*) は、ポリシーを実行するタイミングの条件を指定することができます。`Condition` 要素はオプションです。`Condition` 要素に、[条件演算子](reference_policies_elements_condition_operators.md) (等しい、より小さい、など) を使用して、ポリシーのコンテキストキーバリューをリクエストコンテキストのキーバリューに一致させる式を構築します。リクエストコンテキストの詳細については、「[リクエストのコンポーネント](intro-structure.md#intro-structure-request)」を参照してください。

```
"Condition" : { "{condition-operator}" : { "{condition-key}" : "{condition-value}" }}
```

ポリシー条件で指定できるコンテキストキーは、[グローバル条件コンテキストキー](reference_policies_condition-keys.md)またはサービス固有のコンテキストキーです。グローバル条件コンテキストキーには、`aws:` というプレフィックスが付いています。サービス固有のコンテキストキーには、サービスのプレフィックスがあります。例えば Amazon EC2 では、`ec2:InstanceType` コンテキストキーを使用して、そのサービスに固有の条件を記述できます。`iam:` プレフィックスが付いたサービス固有の IAM コンテキストキーを表示するには、「[IAM および AWS STS の条件コンテキストキー](reference_policies_iam-condition-keys.md)」を参照してください。

コンテキストキーでは、名前の大文字と小文字が区別されません。例えば、`aws:SourceIP` コンテキストキーを含めることは、`AWS:SourceIp` をテストすることと同じです。コンテキストキーの値の大文字と小文字の区別は、使用する[条件演算子](reference_policies_elements_condition_operators.md)によって異なります。例えば、次の条件には、`john` によって行われたリクエストのみが一致するようにする `StringEquals` 演算子が含まれています。`John` という名前のユーザーはアクセスを拒否されます。

```
"Condition" : { "StringEquals" : { "aws:username" : "john" }}
```

次の条件では、[`StringEqualsIgnoreCase`](reference_policies_elements_condition_operators.md#Conditions_String) 演算子を使用して、`john` または `John` という名前のユーザーに一致させます。

```
"Condition" : { "StringEqualsIgnoreCase" : { "aws:username" : "john" }}
```

一部のコンテキストキーでは、キー名の一部を指定することができるキーバリューのペアをサポートしています。この例には、[`aws:RequestTag/tag-key`](reference_policies_condition-keys.md#condition-keys-requesttag) コンテキストキー、AWS KMS [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context)、および複数のサービスでサポートされている [`ResourceTag/tag-key`](reference_policies_condition-keys.md#condition-keys-resourcetag) コンテキストキーが含まれます。
+ [Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policy-structure.html#amazon-ec2-keys) などのサービスに `ResourceTag/tag-key` コンテキストキーを使用する場合は、`tag-key` のキー名を指定する必要があります。
+ **キー名では大文字と小文字が区別されません。**つまり、ポリシーの条件要素で `"aws:ResourceTag/TagKey1": "Value1"` で指定した場合、その条件は `TagKey1` または `tagkey1` という名前のリソースタグキーに一致しますが、その両方には一致しません。
+ これらの属性をサポートする AWS サービスでは、大文字と小文字だけが異なる複数のキー名を作成することができる場合があります。例えば、`ec2=test1` および `EC2=test2` を使用して Amazon EC2 インスタンスにタグ付けします。`"aws:ResourceTag/EC2": "test1"` などの条件を使用して、そのリソースへのアクセスを許可すると、キー名は両方のタグと一致しますが、1 つの値のみが一致します。これにより、予期しない障害が発生することがあります。

**重要**  
ベストプラクティスとして、キーバリューのペア属性に名前を付けるときは、アカウントのメンバーが一貫した命名規則に従うようにします。例としては、AWS KMS タグや暗号化コンテキストなどがあります。これを強制するには、タグ付けに [`aws:TagKeys`](reference_policies_condition-keys.md#condition-keys-tagkeys) コンテキストキーを使用するか、AWS KMS 暗号化コンテキストに [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context-keys](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context-keys) を使用します。
+ 条件演算子の一覧と演算子の動作の説明については、「[条件演算子](reference_policies_elements_condition_operators.md)」を参照してください。
+ 他に特定のない限り、すべてのコンテキストキーには複数の値を含むことができます。複数の値を持つコンテキストキーを処理する方法の説明については、「[複数値のコンテキストキーの演算子を設定する](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)」を参照してください。
+ グローバルに利用できるコンテキストキーのすべてのリストについては、[AWS グローバル条件コンテキストキー](reference_policies_condition-keys.md) を参照してください。
+ 各サービスで定義されるコンテキストキーについては、「[AWS のサービスのアクション、リソース、および条件キー](reference_policies_actions-resources-contextkeys.html)」を参照してください。

## リクエストのコンテキスト
<a name="AccessPolicyLanguage_RequestContext"></a>

[プリンシパル](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html?icmpid=docs_homepage_addtlrcs#principal)が AWS に[リクエスト](intro-structure.md#intro-structure-request)を行うと、AWS はリクエスト情報をリクエストコンテキストに収集します。リクエストコンテキストには、プリンシパル、リソース、アクション、およびその他の環境プロパティに関する情報が含まれます。ポリシー評価は、ポリシーのプロパティを、AWS で実行できるアクションを評価および承認するためにリクエストで送信されたプロパティと照合します。

JSON ポリシーの `Condition` 要素を使用して、リクエストコンテキストに対して特定のコンテキストキーをテストできます。例えば、[aws:CurrentTime](reference_policies_condition-keys.md#condition-keys-currenttime) コンテキストキーを使用するポリシーを作成して、[特定の日付範囲内でのみアクションの実行をユーザーに許可できます](reference_policies_examples_aws-dates.md)。

以下の例は、Martha Rivera が MFA デバイスを非アクティブ化するリクエストを送信したときのリクエストコンテキストを示しています。

```
Principal: AROA123456789EXAMPLE
Action: iam:DeactivateMFADevice
Resource: arn:aws:iam::user/martha
Context:
  – aws:UserId=AROA123456789EXAMPLE:martha
  – aws:PrincipalAccount=1123456789012
  – aws:PrincipalOrgId=o-example
  – aws:PrincipalARN=arn:aws:iam::1123456789012:assumed-role/TestAR
  – aws:MultiFactorAuthPresent=true
  – aws:MultiFactorAuthAge=2800
  – aws:CurrentTime=...
  – aws:EpochTime=...
  – aws:SourceIp=...
```

リクエストコンテキストは、過去 1 時間 (3,600 秒) に MFA を使用してサインインした場合にのみ、ユーザーが自分の多要素認証 (MFA) デバイスを削除することを許可するポリシーに対して照合されます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "AllowRemoveMfaOnlyIfRecentMfa",
        "Effect": "Allow",
        "Action": [
            "iam:DeactivateMFADevice"
        ],
        "Resource": "arn:aws:iam::*:user/${aws:username}",
        "Condition": {
            "NumericLessThanEquals": {"aws:MultiFactorAuthAge": "3600"}
        }
    }
}
```

------

この例では、ポリシーはリクエストコンテキストに一致します。アクションは同じで、リソースは「\$1」ワイルドカードに一致し、`aws:MultiFactorAuthAge` の値は 3600 未満の 2800 であるため、ポリシーはこの認可リクエストを許可します。

AWS はポリシー内の各コンテキストキーを評価し、*true* または *false* の値を返します。リクエストに存在しないコンテキストキーは、不一致と見なされます。

リクエストコンテキストは次の値を返すことができます。
+ **True** – リクエスタが過去 1 時間以内に MFA を使用してサインインした場合、条件は *true* を返します。
+ **False** – リクエスタが MFA を使用して 1 時間以上前にサインインした場合、条件は *false* を返します。
  + **Not present** – AWS CLI リクエスタがまたは AWS API の IAM ユーザーアクセスキーを使用してリクエストを行った場合、キーは存在しません。この場合、キーは存在せず、一致しません。

**注記**  
場合によっては、条件キー値が存在しないときでも true が返されることがあります。例えば、`ForAllValues` 修飾子を追加すると、コンテキストキーがリクエストに存在しない場合、リクエストは true を返します。欠落しているコンテキストキーや空の値を持つコンテキストキーが True と評価されないようにするには、コンテキストキーが存在し、その値が null でないかどうかをチェックするために `false` 値を使用する [Null 条件演算子](reference_policies_elements_condition_operators.md#Conditions_Null) をポリシーに含めることができます。

## 条件ブロック
<a name="AccessPolicyLanguage_ConditionBlock"></a>

以下の例は、`Condition`要素の基本フォーマットを示します。

```
"Condition": {"StringLike": {"s3:prefix": ["jane/*"]}}
```

リクエストからの値は、コンテキストキーによって表現されます。この場合は `s3:prefix` です。コンテキストキーバリューは、`jane/*` などのリテラル値として指定した値と比較されます。比較の種類は、[条件演算子](reference_policies_elements_condition_operators.md)によって指定されます (ここでは `StringLike`)。等号、大なり記号、小なり記号といった一般的なブール演算子を使用して、文字列、日付、数値などを比較する条件を作成できます。[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)または [ARN 演算子](reference_policies_elements_condition_operators.md#Conditions_ARN)を使用する場合は、コンテキストキーの値に[ポリシー変数](reference_policies_variables.md)を使用することもできます。次の例では、`aws:username` 変数が含まれています。

```
"Condition": {"StringLike": {"s3:prefix": ["${aws:username}/*"]}}
```

一部の環境では、コンテキストキーに複数の値が含まれる可能性があります。たとえば、Amazon DynamoDB へのリクエストによって、テーブルの複数の属性を返すまたは更新することが要求される場合があります。DynamoDB テーブルへのアクセスのポリシーには、リクエスト内のすべての属性を含む `dynamodb:Attributes` コンテキストキーを追加できます。`Condition` 要素で設定演算子を使用することで、リクエスト内のすべての属性を、ポリシー内の許可された属性のリストと照合できます。詳細については、「[複数値のコンテキストキーの演算子を設定する](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)」を参照してください。

リクエスト中にポリシーが評価される際、AWS はキーをリクエストからの対応する値に置き換えます。（この例では、AWS はリクエストの日時を使用します。) 条件が評価された上で「true（真）」または「false（偽）」が返され、それを考慮に入れてポリシー全体がリクエストを許可または拒否します。

### 条件内の複数の値
<a name="Condition-multiple-conditions"></a>

`Condition` 要素は複数の条件演算子を含むことができ、各条件演算子は複数のキーと値のペアを含むことができます。以下の図が解説したものです。

![\[2 つの条件演算子のブロック図。最初のブロックには 2 つのコンテキストキープレースホルダーが含まれていて、それぞれに複数の値があります。2 番目の条件ブロックには、複数の値を持つ 1 つのコンテキストキーが含まれます。\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/AccessPolicyLanguage_Condition_Block.diagram.png)


詳細については、「[複数値のコンテキストキーの演算子を設定する](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)」を参照してください。

# IAM JSON ポリシー要素: 条件演算子
<a name="reference_policies_elements_condition_operators"></a>

<a name="topiclist"></a>

`Condition` 要素で条件演算子を使用して、ポリシーの条件キーバリューをリクエストコンテキストの値と一致させます。`Condition` 要素の詳細については、「[IAM JSON ポリシー要素Condition](reference_policies_elements_condition.md)」を参照してください。

ポリシーで使用できる条件演算子は、選択する条件キーによって異なります。グローバル条件キーまたはサービス固有の条件キーを選択できます。グローバル条件キーに使用できる条件演算子については、「[AWS グローバル条件コンテキストキー](reference_policies_condition-keys.md)」を参照してください。サービスのサービス固有の条件キーを表示するには、「[AWS サービスのアクション、リソース、および条件キー](reference_policies_actions-resources-contextkeys.html)」を参照し、キーを表示するサービスを選択します。

**重要**  
ポリシー条件で指定したキーがリクエストコンテキストに存在しない場合、値は一致せず条件は false になります。`StringNotLike` または `ArnNotLike` などのように、キーの一致を必要としないポリシー条件であり、かつ正しいキーが存在していない場合、条件は *true* となります。このロジックは、[...IfExists](#Conditions_IfExists) および [Null check](#Conditions_Null) を除くすべての条件演算子に適用されます。これらの演算子は、キーがリクエストコンテキストにある（存在する）かどうかをテストします。

条件演算子は次のカテゴリに分類できます。
+ [文字列](#Conditions_String)
+ [数値](#Conditions_Numeric)
+ [日付および時間](#Conditions_Date)
+ [ブール値](#Conditions_Boolean)
+ [バイナリ](#Conditions_BinaryEquals)
+ [IP アドレス](#Conditions_IPAddress)
+ [Amazon リソースネーム (ARN)](#Conditions_ARN) (一部のサービスでのみ使用可能)
+ [...IfExists](#Conditions_IfExists) (別のチェックの一部としてキーバリューが存在するかを確認)
+ [Null check](#Conditions_Null) (スタンドアロンチェックとしてキーが存在するかを確認)

## 文字列条件演算子
<a name="Conditions_String"></a>

文字列条件演算子では、キーと文字列値の比較に基づいてアクセスを制限する `Condition` 要素を構築できます。
+  **ポリシー変数** - [サポート](reference_policies_variables.md)
+ **ワイルドカード** – [サポート](#Conditions_String-wildcard)


****  

| 条件演算子 | 説明 | 
| --- | --- | 
|   `StringEquals`   |  完全一致、大文字と小文字の区別あり。  | 
|   `StringNotEquals`   |  符号反転の一致  | 
|   `StringEqualsIgnoreCase`   |  完全一致、大文字と小文字の区別なし。  | 
|   `StringNotEqualsIgnoreCase`   |  符号反転の一致、大文字と小文字の区別なし。  | 
|   `StringLike`   | 大文字と小文字の区別がある一致。値には、複数文字一致のワイルドカード (\$1) および 1 文字一致のワイルドカード (?) を文字列のどこにでも含めることができます。文字列の部分一致検索を行うには、ワイルドカードを指定する必要があります。  キーに複数の値が含まれる場合、設定演算子 (`StringLike` および `ForAllValues:StringLike`) を使用して `ForAnyValue:StringLike` を修飾できます。詳細については、「[複数値のコンテキストキーの演算子を設定する](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)」を参照してください。  | 
|   `StringNotLike`   |  符号反転の一致には、大文字と小文字の区別があります。値には、複数文字一致のワイルドカード (\$1) または 1 文字一致のワイルドカード (?) を文字列のどこにでも含めることができます。  | 

**Example 文字列条件演算子**  
たとえば、次のステートメントに含まれている `Condition` 要素では、[https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag) キーの使用により、リクエストを行うプリンシパルに `iamuser-admin` ジョブカテゴリのタグ付けが必要であることを指定しています。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "iam:*AccessKey*",
        "Resource": "arn:aws:iam::111122223333:user/*",
        "Condition": {
            "StringEquals": {
                "aws:PrincipalTag/job-category": "iamuser-admin"
            }
        }
    }
}
```
ポリシー条件で指定したキーがリクエストコンテキストに存在しない場合、値は一致しません。この例では、タグがアタッチされた IAM ユーザーをプリンシパルが使用している場合、`aws:PrincipalTag/job-category` キーがリクエストコンテキストに存在します。これは、タグまたはセッションタグがアタッチされた IAM ロールを使用するプリンシパルのために含まれます。タグがないユーザーがアクセスキーを表示または編集しようとすると、条件により `false` が返され、リクエストはこのステートメントによって暗黙的に拒否されます。  
次の表は、AWS がリクエストの条件キー値に基づいてこのポリシーを評価する方法を示しています。  


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/job-category": "iamuser-admin"<br />}</pre>  | <pre>aws:PrincipalTag/job-category:<br />  – iamuser-admin</pre>  |  一致 | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/job-category": "iamuser-admin"<br />}</pre>  | <pre>aws:PrincipalTag/job-category:<br />  – dev-ops</pre>  | 一致なし | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/job-category": "iamuser-admin"<br />}</pre>  |  リクエストコンテキストに `aws:PrincipalTag/job-category` はありません。  | 一致なし | 

**Example 文字列条件演算子を含むポリシー変数の使用**  
以下の例では、`StringLike` 条件演算子を使用して[ポリシー変数](reference_policies_variables.md)による文字列一致を実行して、IAM ユーザーが Amazon S3 コンソールを使用して Amazon S3 バケット内の自らの「ホームディレクトリ」を管理できるようにするポリシーを作成します。このポリシーは、`s3:prefix` が指定されたパターンのいずれかに一致する限り、指定されたアクションを S3 バケットに対して実行することを許可します。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {
        "StringLike": {
          "s3:prefix": [
            "",
            "home/",
            "home/${aws:username}/"
          ]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}",
        "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}/*"
      ]
    }
  ]
}
```
次の表は、AWS がリクエストコンテキストの [aws:username](reference_policies_condition-keys.md#condition-keys-username) 値に基づいて、さまざまなユーザーに対してこのポリシーを評価する方法を示しています。  


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/${aws:username}/"<br />  ]<br />}</pre>  | <pre>aws:username:<br />  – martha_rivera</pre>  | <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/martha_rivera/"<br />  ]<br />}</pre>  | 
|  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/${aws:username}/"<br />  ]<br />}</pre>  |  <pre>aws:username:<br />  – nikki_wolf</pre>  |  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/nikki_wolf/"<br />  ]<br />}</pre>  | 
|  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/${aws:username}/"<br />  ]<br />}</pre>  |  リクエストコンテキストに `aws:username` はありません。  | 一致なし | 
OIDC フェデレーションによるアプリケーション ID とユーザー ID に基づいてリソースへのアクセスを制限する `Condition` 要素の使用方法を示すポリシーの例については、「[Amazon S3: Amazon Cognito ユーザーにバケット内のオブジェクトへのアクセスを許可する](reference_policies_examples_s3_cognito-bucket.md)」を参照してください。

### 複数値の文字列条件演算子
<a name="conditions_string_multivalued"></a>

リクエストのキーに複数の値が含まれる場合、文字列演算子は集合演算子 (`ForAllValues` および `ForAnyValue`) で修飾できます。複数のコンテキストキーまたは値の評価ロジックの詳細については、「[複数値のコンテキストキーの演算子を設定する](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)」を参照してください。


| 条件演算子 | 説明 | 
| --- | --- | 
|  `ForAllValues:StringEquals` `ForAllValues:StringEqualsIgnoreCase`  |  リクエストの条件キーのすべての値は、ポリシーの値の少なくとも 1 つと一致する必要があります。  | 
|  `ForAnyValue:StringEquals` `ForAnyValue:StringEqualsIgnoreCase`  |  リクエストの少なくとも 1 つの条件キー値が、ポリシーの値のいずれかと一致する必要があります。  | 
|  `ForAllValues:StringNotEquals` `ForAllValues:StringNotEqualsIgnoreCase`  |  符号反転の一致。 リクエストのコンテキストキーの値が、ポリシーのコンテキストキー値のいずれにも一致しません。  | 
|  `ForAnyValue:StringNotEquals` `ForAnyValue:StringNotEqualsIgnoreCase`  |  符号反転の一致。 リクエストの少なくとも 1 つのコンテキストキーの値が、ポリシーのコンテキストキーの値のいずれにも一致しない必要があります。  | 
|  `ForAllValues:StringLike`  |  リクエストの条件キーのすべての値は、ポリシーの値の少なくとも 1 つと一致する必要があります。  | 
|  `ForAnyValue:StringLike`  |  リクエストの少なくとも 1 つの条件キー値が、ポリシーの値のいずれかと一致する必要があります。  | 
|  `ForAllValues:StringNotLike`  |  符号反転の一致。 リクエストのコンテキストキーの値が、ポリシーのコンテキストキー値のいずれにも一致しません。  | 
|  `ForAnyValue:StringNotLike`  |  符号反転の一致。 リクエストの少なくとも 1 つのコンテキストキーの値が、ポリシーのコンテキストキーの値のいずれにも一致しない必要があります。  | 

**Example 文字列条件演算子を含む `ForAnyValue` の使用**  
この例では、Amazon EC2 `CreateTags` アクションを使用してタグをインスタンスにアタッチできるようにする、ID ベースのポリシーを作成する方法を示しています。`StringEqualsIgnoreCase` を使用するとき、タグをアタッチできるのは、タグに `environment` キーとともに、`preprod` または `storage` の値が含まれている場合だけです。演算子に `IgnoreCase` を追加すると、`preprod`、`Preprod`、`PreProd` など True に解決されるよう既存のタグ値の大文字化を許可します。  
[aws:TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys) 条件キーで `ForAnyValue` 修飾子を追加するとき、リクエストの少なくとも 1 つのタグキー値が値 `environment` と一致する必要があります。`ForAnyValue` の比較では大文字と小文字が区別されるため、`environment` の代わりに `Environment` を使用するなど、ユーザーはタグキーに大文字と小文字が同じでない文字を使用できなくなります。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "ec2:CreateTags",
    "Resource": "arn:aws:ec2:*:*:instance/*",
    "Condition": {
      "StringEqualsIgnoreCase": {
        "aws:RequestTag/environment": [
          "preprod",
          "storage"
        ]
      },
      "ForAnyValue:StringEquals": {
        "aws:TagKeys": "environment"
      }
    }
  }
}
```
 次の表は、AWS がリクエストの条件キー値に基づいてこのポリシーを評価する方法を示しています。  


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />aws:RequestTag/environment:<br />  – preprod</pre>  | 一致  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – costcenter<br />aws:RequestTag/environment:<br />  – PreProd</pre>  | 一致  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – Environment<br />aws:RequestTag/Environment:<br />  – preprod</pre>  | 一致なし  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – costcenter<br />aws:RequestTag/environment:<br />  – preprod</pre>  | 一致なし  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  |  リクエストコンテキストに `aws:TagKeys` はありません。 <pre>aws:RequestTag/environment:<br />  – storage</pre>  | 一致なし  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment</pre> リクエストコンテキストに `aws:RequestTag/environment` はありません。  | 一致なし  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  |  リクエストコンテキストに `aws:TagKeys` はありません。 リクエストコンテキストに `aws:RequestTag/environment` はありません。  | 一致なし  | 

### ワイルドカードによる一致
<a name="Conditions_String-wildcard"></a>

文字列条件演算子は、事前に定義された形式を適用しないパターンレスマッチングを実行します。ARN 条件演算子と日付条件演算子は、条件キー値に構造体を適用する文字列演算子のサブセットです。

キーを比較する値に対応する条件演算子の使用をお勧めします。例えば、キーと文字列値を比較するときは [文字列条件演算子](#Conditions_String) を使用してください。同様に、キーと ARN 値を比較するときは [Amazon リソースネーム (ARN) の条件演算子](#Conditions_ARN) を使用してください。

**Example**  
この例では、組織内のリソースの境界を作成する方法を示します。このポリシーの条件は、アクセスされるリソースが AWS Organizations の組織単位 (OUs) の特定のセットにある場合を除き、Amazon S3 アクションへのアクセスを拒否します。AWS Organizations パスは、組織エンティティの構造をテキストで表記したものです。  
条件では、`aws:ResourceOrgPaths` にリストされた OU パスのいずれかが含まれている必要があります。`aws:ResourceOrgPaths` は複数値条件であるため、ポリシーは `ForAllValues:StringNotLike` 演算子を使用して `aws:ResourceOrgPaths` の値をポリシーに含まれる OU のリストと比較します。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyS3AccessOutsideMyBoundary",
      "Effect": "Deny",
      "Action": [
        "s3:*"
      ],
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringNotLike": {
          "aws:ResourceOrgPaths": [
            "o-acorg/r-acroot/ou-acroot-mediaou/",
            "o-acorg/r-acroot/ou-acroot-sportsou/*"
          ] 
        }
      }
    }
  ]
}
```
次の表は、AWS がリクエストの条件キー値に基づいてこのポリシーを評価する方法を示しています。  


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:ResourceOrgPaths": [<br />    "o-acorg/r-acroot/ou-acroot-mediaou/",<br />    "o-acorg/r-acroot/ou-acroot-sportsou/*"<br />  ] <br />}</pre>  | <pre>aws:ResourceOrgPaths:<br />  – o-acorg/r-acroot/ou-acroot-sportsou/costcenter/</pre>  | 一致 | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:ResourceOrgPaths": [<br />    "o-acorg/r-acroot/ou-acroot-mediaou/",<br />    "o-acorg/r-acroot/ou-acroot-sportsou/*"<br />  ] <br />}</pre>  | <pre>aws:ResourceOrgPaths:<br />  – o-acorg/r-acroot/ou-acroot-mediaou/costcenter/</pre>  | 一致なし | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:ResourceOrgPaths": [<br />    "o-acorg/r-acroot/ou-acroot-mediaou/",<br />    "o-acorg/r-acroot/ou-acroot-sportsou/*"<br />  ] <br />}</pre>  |  リクエストに `aws:ResourceOrgPaths:` はありません。  | 一致なし | 

## 数値条件演算子
<a name="Conditions_Numeric"></a>

数値条件演算子では、キーと整数または 10 進値の比較に基づいてアクセスを制限する `Condition` 要素を構築できます。
+  **ポリシー変数** – サポート外
+ **ワイルドカード** - サポート外


****  

| 条件演算子 | 説明 | 
| --- | --- | 
|   `NumericEquals`   |  一致  | 
|   `NumericNotEquals`   |  符号反転の一致  | 
|   `NumericLessThan`   |  「未満」の部分一致  | 
|   `NumericLessThanEquals`   |  「未満と等しい」の部分一致  | 
|   `NumericGreaterThan`   |  「上回る」の部分一致  | 
|   `NumericGreaterThanEquals`   |  「上回るまたは等しい」の部分一致  | 

たとえば、以下のステートメントに含まれる `Condition` 要素は、`NumericLessThanEquals` 条件演算子を `s3:max-keys` キーと合わせて使用して、リクエスタが * の中で一度に*最大`amzn-s3-demo-bucket` 10 個のオブジェクトを列挙できることを指定しています。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
    "Condition": {"NumericLessThanEquals": {"s3:max-keys": "10"}}
  }
}
```

------

ポリシー条件で指定したキーがリクエストコンテキストに存在しない場合、値は一致しません。この例では、`ListBucket` オペレーションを実行すると、`s3:max-keys` キーは常にリクエストに存在します。このポリシーですべての Amazon S3 オペレーションが許可されている場合、10 以下の値を持つ `max-keys` コンテキストキーを含むオペレーションのみが許可されます。

## 日付条件演算子
<a name="Conditions_Date"></a>

日付条件演算子では、キーと日付/時刻値の比較に基づいてアクセスを制限する `Condition` 要素を構築できます。これらの条件演算子は、[https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-currenttime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-currenttime) キーまたは [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-epochtime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-epochtime) キーと合わせて使用します。日付/時間値と共に、[W3C implementations of the ISO 8601 date formats](http://www.w3.org/TR/NOTE-datetime) またはエポック (UNIX) 時間のどれか 1 つを特定しなければいけません。
+  **ポリシー変数** – サポート外
+ **ワイルドカード** - サポート外


****  

| 条件演算子 | 説明 | 
| --- | --- | 
|   `DateEquals`   |  特定の日付との一致  | 
|   `DateNotEquals`   |  符号反転の一致  | 
|   `DateLessThan`   |  特定の日時よりも前の日時との一致  | 
|   `DateLessThanEquals`   |  特定の日時またはそれよりも前の日時との一致  | 
|   `DateGreaterThan`   |  特定の日時よりも後の日時との一致  | 
|   `DateGreaterThanEquals`   |  特定の日時またはそれよりも後の日時との一致  | 

例えば、次のステートメントには、`DateGreaterThan` 条件演算子を [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tokenissuetime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tokenissuetime) キーとともに使用する `Condition` 要素が含まれています。この条件は、リクエストの作成に使用された一時的なセキュリティ認証情報が 2020 年に発行されたことを示します。このポリシーは、毎日プログラムによって更新され、アカウントメンバーが最新の資格情報を使用するようにできます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "iam:*AccessKey*",
        "Resource": "arn:aws:iam::111122223333:user/*",
        "Condition": {
            "DateGreaterThan": {
                "aws:TokenIssueTime": "2020-01-01T00:00:01Z"
            }
        }
    }
}
```

------

ポリシー条件で指定したキーがリクエストコンテキストに存在しない場合、値は一致しません。プリンシパルがリクエストを行うために一時的な認証情報を使用する場合に限り、リクエストコンテキストで `aws:TokenIssueTime` キーが表示されます。このキーは、アクセスキーを使用して行われたAWS CLI、AWS API、または AWS SDK リクエストには存在しません。この例では、IAM ユーザーがアクセスキーを表示または編集しようとすると、リクエストは拒否されます。

## ブール条件演算子
<a name="Conditions_Boolean"></a>

ブール条件演算子では、キーと `true` または `false` の比較に基づいてアクセスを制限する `Condition` 要素を構築できます。

キーに複数の値が含まれる場合、ブール型演算子は集合演算子 `ForAllValues` および `ForAnyValue` で修飾できます。複数のコンテキストキーまたは値の評価ロジックの詳細については、「[複数値のコンテキストキーの演算子を設定する](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)」を参照してください。
+  **ポリシー変数** - [サポート](reference_policies_variables.md)
+ **ワイルドカード** - サポート外


****  

| 条件演算子 | 説明 | 
| --- | --- | 
|   `Bool`   |  ブールの一致  | 
|   `ForAllValues:Bool`   |  Bool データ型の配列で使用します。コンテキストキー値のすべてのブール値は、ポリシーのブール値と一致する必要があります。 `ForAllValues` 演算子が欠落しているコンテキストキーまたは空の値のコンテキストキーを Allowed と評価しないように、ポリシーに [Null 条件演算子](#Conditions_Null)を含めることができます。  | 
|   `ForAnyValue:Bool`   |  Bool データ型の配列とともに使用します。コンテキストキー値の少なくとも 1 つのブール値は、ポリシーのブール値と一致する必要があります。  | 

**Example ブール条件演算子**  
次の ID ベースのポリシーでは [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport) キーを持つ `Bool` 条件演算子が使用されるため、リクエストが SSL 経由でない場合に、オブジェクトとオブジェクトタグを送信先バケットとそのコンテンツに複製することを拒否できます。  
このポリシーでは、アクションを許可しません。特定のアクションを許可する他のポリシーと組み合わせてこのポリシーを使用します。  
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "BooleanExample",
      "Action": "s3:ReplicateObject",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket",
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {
        "Bool": {
          "aws:SecureTransport": "false"
        }
      }
    }
  ]
}
```
次の表は、AWS がリクエストの条件キー値に基づいてこのポリシーを評価する方法を示しています。  


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"Bool": {<br />  "aws:SecureTransport": "false"<br />}</pre>  | <pre>aws:SecureTransport:<br />  – false</pre>  | 一致 | 
|  <pre>"Bool": {<br />  "aws:SecureTransport": "false"<br />}</pre>  | <pre>aws:SecureTransport:<br />  – true</pre>  | 一致なし | 
|  <pre>"Bool": {<br />  "aws:SecureTransport": "false"<br />}</pre>  |  リクエストコンテキストに `aws:SecureTransport` はありません。  | 一致なし | 

## バイナリ条件演算子
<a name="Conditions_BinaryEquals"></a>

`BinaryEquals` 条件演算子では、バイナリ形式のキーバリューをテストする `Condition` 要素を構築できます。これは、指定されたキーの値を、ポリシー内の値を [base-64](https://en.wikipedia.org/wiki/Base64) エンコードした表現に対してバイト単位で比較します。ポリシー条件で指定したキーがリクエストコンテキストに存在しない場合、値は一致しません。
+  **ポリシー変数** – サポート外
+ **ワイルドカード** - サポート外

```
"Condition" : {
  "BinaryEquals": {
    "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="
  }
}
```


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"BinaryEquals": {<br />  "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="<br />}</pre>  | <pre>key:<br />  – QmluYXJ5VmFsdWVJbkJhc2U2NA==</pre>  | 一致 | 
|  <pre>"BinaryEquals": {<br />  "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="<br />}</pre>  | <pre>key:<br />  – ASIAIOSFODNN7EXAMPLE</pre>  | 一致なし | 
|  <pre>"BinaryEquals": {<br />  "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="<br />}</pre>  |  リクエストコンテキストに `key` はありません。  | 一致なし | 

## IP アドレス条件演算子
<a name="Conditions_IPAddress"></a>

IP アドレス条件演算子では、キーと IPv4 または IPv6 アドレスまたは IP アドレス範囲の比較に基づいてアクセスを制限する `Condition` 要素を構築できます。これらを [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip) キーと合わせて使用します。値は、標準的な CIDR 形式でなければいけません (例 : 203.0.113.0/24 または 2001:DB8:1234:5678::/64)。IP アドレスの指定時に関連付けられたルーティングプレフィックスを使用しないと、IAM ではデフォルトのプレフィックス値 `/32` を使用します。

IPv6 をサポートしている AWS のサービスでは、0 の範囲を :: で表します。サービスで IPv6 がサポートされているかどうかは、そのサービスのドキュメントを参照してください。
+  **ポリシー変数** – サポート外
+ **ワイルドカード** - サポート外


****  

| 条件演算子 | 説明 | 
| --- | --- | 
|   `IpAddress`   |  所定の IP アドレスまたは範囲  | 
|   `NotIpAddress`   |  所定の IP アドレスまたは範囲以外のすべての IP アドレス  | 

**Example IP アドレス条件演算子**  
次のステートメントでは、`IpAddress` 条件を `aws:SourceIp` キーと合わせて使用して、リクエストが 203.0.113.0 から 203.0.113.255 までの IP 範囲から送られてこなければいけないことを指定しています。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "iam:*AccessKey*",
        "Resource": "arn:aws:iam::111122223333:user/*",
        "Condition": {
            "IpAddress": {
                "aws:SourceIp": "203.0.113.0/24"
            }
        }
    }
}
```
`aws:SourceIp` 条件キーは、リクエストの送信元である IP アドレスに解決します。リクエストが Amazon EC2 インスタンスから発信された場合、`aws:SourceIp` はインスタンスのパブリックIPアドレスに評価されます。  
ポリシー条件で指定したキーがリクエストコンテキストに存在しない場合、値は一致しません。`aws:SourceIp` キーは、リクエスタが VPC エンドポイントを使用してリクエストを行う場合を除き、リクエストコンテキストに常に表示されます。この場合、条件は `false` を返し、リクエストはこのステートメントによって暗黙的に拒否されます。  
次の表は、AWS がリクエストの条件キー値に基づいてこのポリシーを評価する方法を示しています。  


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"IpAddress": {<br />  "aws:SourceIp": "203.0.113.0/24"<br />}</pre>  | <pre>aws:SourceIp:<br />  – 203.0.113.1</pre>  | 一致 | 
|  <pre>"IpAddress": {<br />  "aws:SourceIp": "203.0.113.0/24"<br />}</pre>  | <pre>aws:SourceIp:<br />  – 198.51.100.1</pre>  | 一致なし | 
次の例では、組織内の有効な IP アドレスすべてを含めるために、IPv4 と IPv6 アドレスを混在させる方法を示しています。IPv6 への移行に合わせてポリシーが引き続き機能することを確認するため、すでにある IPv4 の範囲に追加する IPv6 アドレスの範囲の組織のポリシーを更新することをお勧めします。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "someservice:*",
    "Resource": "*",
    "Condition": {
      "IpAddress": {
        "aws:SourceIp": [
          "203.0.113.0/24",
          "2001:DB8:1234:5678::/64"
        ]
      }
    }
  }
}
```
`aws:SourceIp` 条件キーは、テストされた API をユーザーとして直接呼び出す場合に JSON ポリシーでのみ機能します。代わりにサービスを使用してターゲットサービスを呼び出した場合、ターゲットサービスは元のユーザーの IP アドレスではなく呼び出し元サービスの IP アドレスを認識します。これは、AWS CloudFormation を使用して Amazon EC2 を呼び出すことでインスタンスを自動的に作成した場合などに生じることがあります。現在のところ、JSON ポリシーで評価を行うために、発信元サービスを通じて元の IP アドレスをターゲットサービスに渡す方法はありません。これらのタイプのサービス API 呼び出しでは、`aws:SourceIp` 条件キーを使用しないでください。

## Amazon リソースネーム (ARN) の条件演算子
<a name="Conditions_ARN"></a>

Amazon Resource Name (ARN) 条件演算子では、キーと ARN の比較に基づいてアクセスを制限する `Condition` 要素を構築できます。ARN は文字列として見なされます。
+  **ポリシー変数** - [サポート](reference_policies_variables.md)
+ **ワイルドカード** – [サポート](reference_policies_elements_resource.md#reference_policies_elements_resource_wildcards)


****  

| 条件演算子 | 説明 | 
| --- | --- | 
|   `ArnEquals`, `ArnLike`  |  ARN の大文字と小文字を区別した一致。ARN のコロンで分割された 6 個の各構成要素は個別に確認され、それぞれ複数文字一致のワイルドカード (\$1) または 1 文字一致のワイルドカード (?) を含むことができます。`ArnEquals` および `ArnLike` 条件演算子は、同じように動作します。  | 
|   `ArnNotEquals`, `ArnNotLike`  |  ARN の符号反転の一致。`ArnNotEquals` および `ArnNotLike` 条件演算子は、同じように動作します。  | 

**Example ARN 条件演算子**  
次のリソースベースのポリシーの例は、SNS メッセージの送信先となる Amazon SQS キューにアタッチされたポリシーを示しています。この例では、サービスが 1 つまたは複数の特定の Amazon SNS トピックのためにメッセージを送る場合に限り、1 つまたは複数のキューにメッセージを送る Amazon SNS 許可を付与しています。`Resource` フィールドのキューを指定し、`SourceArn` キーの値として Amazon SNS トピックを指定します。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Principal": {
            "Service": "sns.amazonaws.com"
        },
        "Action": "SQS:SendMessage",
        "Resource": "arn:aws:sqs:us-east-1:123456789012:QUEUE-ID",
        "Condition": {
            "ArnEquals": {
                "aws:SourceArn": "arn:aws:sns:us-east-1:123456789012:TOPIC-ID"
            }
        }
    }
}
```
[https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) キーは、リソース所有者に代わって別のサービスを呼び出すようにリソースがトリガーした場合にのみ、リクエストコンテキストに表示されます。IAM ユーザーがこのオペレーションを直接実行しようとすると、条件によ `false` が返され、リクエストはこのステートメントによって暗黙的に拒否されます。  
次の表は、AWS がリクエストの条件キー値に基づいてこのポリシーを評価する方法を示しています。  


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"ArnEquals": {<br />  "aws:SourceArn": "arn:aws:sns:us-west-2:123456789012:TOPIC-ID"<br />}</pre>  | <pre>aws:SourceArn:<br />  – arn:aws:sns:us-west-2:123456789012:TOPIC-ID</pre>  | 一致 | 
|  <pre>"ArnEquals": {<br />  "aws:SourceArn": "arn:aws:sns:us-west-2:123456789012:TOPIC-ID"<br />}</pre>  | <pre>aws:SourceArn:<br />  – arn:aws:sns:us-west-2:777788889999:TOPIC-ID</pre>  | 一致なし | 
|  <pre>"ArnEquals": {<br />  "aws:SourceArn": "arn:aws:sns:us-west-2:123456789012:TOPIC-ID"<br />}</pre>  |  リクエストコンテキストに `aws:SourceArn` はありません。  | 一致なし | 

### 複数値 ARN 条件演算子
<a name="conditions_arn_multivalued"></a>

リクエストのキーに複数の値が含まれる場合、ARB 演算子は集合演算子 (`ForAllValues` および `ForAnyValue`) で修飾できます。複数のコンテキストキーまたは値の評価ロジックの詳細については、「[複数値のコンテキストキーの演算子を設定する](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)」を参照してください。


| 条件演算子 | 説明 | 
| --- | --- | 
|  `ForAllValues:ArnEquals` `ForAllValues:ArnLike`  |  リクエストコンテキストのすべての ARN は、ポリシーの ARN パターンの少なくとも 1 つと一致する必要があります。  | 
|  `ForAnyValue:ArnEquals` `ForAnyValue:ArnLike`  |  リクエストコンテキストの少なくとも 1 つの ARN は、ポリシーの ARN パターンのいずれかと一致する必要があります。  | 
|  `ForAllValues:ArnNotEquals` `ForAllValues:ArnNotLike`  |  符号反転の一致。 リクエストコンテキストの ARN のいずれも、ポリシー内の文字列 ARN パターンと一致してはいけません。  | 
|  `ForAnyValue:ArnNotEquals` `ForAnyValue:ArnNotLike`  |  符号反転の一致。 リクエストコンテキストの少なくとも 1 つの ARN は、ポリシーのどの ARN パターンとも一致してはいけません。  | 

**Example ARN 条件演算子で `ForAllValues` を使用する**  
以下の例では、`ForAllValues:ArnLike` を使用して Amazon CloudWatch Logs ログの論理配信ソースを作成または更新します。条件ブロックには、リクエストで渡されたログ生成リソース ARN をフィルタリングする条件キー [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchlogs.html#amazoncloudwatchlogs-policy-keys](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchlogs.html#amazoncloudwatchlogs-policy-keys) が含まれています。この条件演算子を使用する場合、リクエストのすべての ARN がポリシーの少なくとも 1 つの ARN と一致する必要があります。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "logs:PutDeliverySource",
            "Resource": "arn:aws:logs:us-east-1:123456789012:delivery-source:*",
            "Condition": {
                "ForAllValues:ArnLike": {
                    "logs:LogGeneratingResourceArns": [
                        "arn:aws:cloudfront::123456789012:distribution/*",
                        "arn:aws:cloudfront::123456789012:distribution/support*"
                    ]
                }
            }
        }
    ]
}
```
次の表は、AWS がリクエストの条件キー値に基づいてこのポリシーを評価する方法を示しています。  


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:123456789012:distribution/costcenter</pre>  | 一致 | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:123456789012:distribution/costcenter<br />  – arn:aws::cloudfront:123456789012:distribution/support2025</pre>  | 一致 | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:123456789012:distribution/costcenter<br />  – arn:aws::cloudfront:123456789012:distribution/admin</pre>  | 一致なし | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:777788889999:distribution/costcenter</pre>  | 一致なし | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  |  リクエストコンテキストに `logs:LogGeneratingResourceArns` はありません。  | 一致  | 
`ForAllValues` 修飾子は、リクエストにコンテキストキーがない場合、またはコンテキストキーの値が null データセット (空の文字列など) に解決される場合、True を返します。欠落しているコンテキストキーや空の値を持つコンテキストキーが True と評価されないようにするには、コンテキストキーが存在し、その値が null でないかどうかをチェックするために `false` 値を使用する [Null 条件演算子](#Conditions_Null) をポリシーに含めることができます。

## IfExists 条件演算子
<a name="Conditions_IfExists"></a>

`Null` 条件 (`StringLikeIfExists` など) を除く任意の条件演算子名の末尾に `IfExists` を追加できます。「条件キーがリクエストのコンテキストで存在する場合、ポリシーで指定されたとおりにキーを処理します。キーが存在しない場合、条件要素は true と評価されます。」 `...IfExists` でチェックすると、ステートメント内の別の Condition 要素は一致なしの結果となることもありますが、キーが見つからないことはありません。`StringNotEqualsIfExists` のような否定条件演算子を持つ `"Effect": "Deny"` 要素を使用している場合は、条件キーがなくてもリクエストが拒否されます。

**`IfExists` の使用例**

多くの条件キーは特定のタイプのリソースに関する情報を示し、そのタイプのリソースにアクセスしている場合にのみ存在します。これらの条件キーはその他のタイプのリソースにはありません。ポリシーステートメントが 1 種類のリソースのみに適用される場合には、これで問題はありません。ところが、ポリシーステートメントが複数のサービスからアクションを参照する場合や、サービス内の特定のアクションが同じサービス内の異なるタイプのリソースにアクセスする場合などのように、1 つのステートメントが複数のタイプのリソースに適用される場合があります。このような場合、ポリシーステートメント内の 1 つのリソースのみに適用される条件キーを含めると、ポリシーステートメントの `Condition` 要素が失敗し、ステートメントの `"Effect"` は適用されません。

たとえば、次のポリシーの例を考えてみます。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "THISPOLICYDOESNOTWORK",
    "Effect": "Allow",
    "Action": "ec2:RunInstances",
    "Resource": "*",
    "Condition": {"StringLike": {"ec2:InstanceType": [
      "t1.*",
      "t2.*",
      "m3.*"
    ]}}
  }
}
```

------

前述のポリシーの*目的*は、ユーザーが `t1`、`t2`および `m3` タイプのインスタンスを起動できるようにすることです。ところが、インスタンスを起動する場合には、インスタンス自体に加えて、イメージ、キーペア、セキュリティグループおよびそれ以上のさまざまなリソースにアクセスする必要があります。ステートメント全体が、インスタンスを起動するために必要なすべてのリソースに対して評価されます。これらの追加のリソースには `ec2:InstanceType` 条件キーがないため、`StringLike` のチェックは失敗し、ユーザーは*いずれの*タイプのインスタンスも起動できません。

これに対応するには、`StringLikeIfExists` 条件演算子を代わりに使用します。そうすれば、条件キーが存在する場合のみにテストが行われます。以下のコードは次のように解釈できます。「チェックされるリソースには 「`ec2:InstanceType`」条件キーがあり、キーバリューが `t1.`、`t2.`、または `m3.` で始まる場合にのみ、アクションを許可します。チェックされるリソースにこの条件キーがなくても問題ありません。」 条件キー値のアスタリスク (\$1) を `StringLikeIfExists` 条件演算子と併用すると、ワイルドカードとして解釈され、文字列の一部が一致します。この `DescribeActions` 文には、コンソールでインスタンスを表示するために必要なアクションが含まれます。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "RunInstance",
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "*",
      "Condition": {
        "StringLikeIfExists": {
          "ec2:InstanceType": [
            "t1.*",
            "t2.*",
            "m3.*"
          ]
        }
      }
    },
    {
      "Sid": "DescribeActions",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeImages",
        "ec2:DescribeInstances",
        "ec2:DescribeVpcs",
        "ec2:DescribeKeyPairs",
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups"
      ],
      "Resource": "*"
    }
  ]
}
```

------

次の表は、AWS がリクエストの条件キー値に基づいてこのポリシーを評価する方法を示しています。


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"StringLikeIfExists": {<br />  "ec2:InstanceType": [<br />    "t1.*",<br />    "t2.*",<br />    "m3.*"<br />  ]<br />}</pre>  | <pre>ec2:InstanceType:<br />  – t1.micro</pre>  | 一致 | 
|  <pre>"StringLikeIfExists": {<br />  "ec2:InstanceType": [<br />    "t1.*",<br />    "t2.*",<br />    "m3.*"<br />  ]<br />}</pre>  | <pre>ec2:InstanceType:<br />  – m2.micro</pre>  | 一致なし | 
|  <pre>"StringLikeIfExists": {<br />  "ec2:InstanceType": [<br />    "t1.*",<br />    "t2.*",<br />    "m3.*"<br />  ]<br />}</pre>  |  リクエストコンテキストに `ec2:InstanceType` はありません。  | 一致 | 

## 条件キーの有無をチェックする条件演算子
<a name="Conditions_Null"></a>

`Null` 条件演算子を使用して、認可時に条件キーが存在していないかどうかを確認します。ポリシーステートメントで、`true`（キーは存在しません-nullです）または `false`（キーが存在し、その値はnullではありません）を使用します。

`Null` 条件演算子で[ポリシー変数](reference_policies_variables.md)を使用することはできません。

例えば、ユーザーが一時的な認証情報または独自の認証情報を使用してリクエストを行っているか判断するため、この条件演算子を使用することができます。ユーザーが一時的な認証情報を使用している場合、キー `aws:TokenIssueTime` が存在し、このキーには値があります。以下の例では、ユーザーが Amazon EC2 API を使用するために一時的な認証情報 (キーは欠落してはならない) を使用する必要があることを表記する条件が示されています。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":{
      "Action":"ec2:*",
      "Effect":"Allow",
      "Resource":"*",
      "Condition":{"Null":{"aws:TokenIssueTime":"false"}}
  }
}
```

------

# 複数のコンテキストキーまたは値による条件
<a name="reference_policies_condition-logic-multiple-context-keys-or-values"></a>

ポリシーの `Condition` 要素を使用して、リクエスト内の 1 つのコンテキストキーに対して複数のコンテキストキーまたは値をテストできます。プログラムまたは AWS を通じて AWS マネジメントコンソール にリクエストを行うと、リクエストにはプリンシパル、オペレーション、タグなどに関する情報が含まれます。コンテキストキーを使用すると、ポリシー条件で指定したコンテキストキーで、リクエスト内の一致するコンテキストキーの値をテストできます。リクエストに含まれる情報とデータについては、「[リクエストのコンテキスト](reference_policies_elements_condition.md#AccessPolicyLanguage_RequestContext)」を参照してください。

**Topics**
+ [

## 複数のキーまたは値の評価ロジック
](#reference_policies_multiple-conditions-eval)
+ [

## 否定された一致条件演算子の評価ロジック
](#reference_policies_multiple-conditions-negated-matching-eval)

## 複数のキーまたは値の評価ロジック
<a name="reference_policies_multiple-conditions-eval"></a>

`Condition` 要素は複数の条件演算子を含むことができ、各条件演算子は複数のキーと値のペアを含むことができます。特に指定のない限り、ほとんどのコンテキストキーで複数の値を使用できます。
+ ポリシーステートメントに複数の[条件演算子](reference_policies_elements_condition_operators.md)がある場合、条件演算子は論理 `AND` を使用して評価されます。
+ 1 つの条件演算子にアタッチされている複数のコンテキストキーがポリシーステートメントにある場合、コンテキストキーは論理 `AND` を使用して評価されます。
+ 1 つの条件演算子に 1 つのコンテキストキーの値が複数含まれる場合、それらの値は論理 `OR` を使用して評価されます。
+ 1 つの否定された一致条件演算子に 1 つのコンテキストキーの値が複数含まれる場合、それらの値は論理 `NOR` を使用して評価されます。

Condition 要素のブロックのすべてのコンテキストキーを true に変換して、目的の `Allow` または `Deny` 効果を呼び出す必要があります。次の図は、複数の条件演算子およびコンテキストのキーと値のペアを含む条件の評価ロジックを示しています。

![\[AND および OR がどのように複数のコンテキストキーおよび値に適用されるかを示した条件ブロック\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/AccessPolicyLanguage_Condition_Block_AND_2.diagram.png)


例えば、次の S3 バケットポリシーは、上記の図がポリシーでどのように表されるかを示しています。条件ブロックは、条件演算子 `StringEquals` および `ArnLike`、コンテキストキー `aws:PrincipalTag` および `aws:PrincipalArn` を含んでいます。目的の `Allow` または `Deny` 効果を呼び出すには、条件ブロックのすべてのコンテキストキーが true に変換される必要があります。リクエストを行うユーザーには、ポリシーで指定されているタグキー値のいずれかを含む、department と role の両方のプリンシパルタグキーが必要です。また、リクエストを行うユーザーのプリンシパル ARN は、true と評価されるポリシーで指定される `aws:PrincipalArn` の値のいずれかに一致する必要があります。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExamplePolicy",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::222222222222:root"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/department": [
            "finance",
            "hr",
            "legal"
          ],
          "aws:PrincipalTag/role": [
            "audit",
            "security"
          ]
        },
        "ArnLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::222222222222:user/Ana",
            "arn:aws:iam::222222222222:user/Mary"
          ]
        }
      }
    }
  ]
}
```

------

次の表は、AWS がリクエストの条件キー値に基づいてこのポリシーを評価する方法を示しています。


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: legal<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn: <br />  arn:aws:iam::222222222222:user/Mary</pre>  |  **一致** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **一致なし** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: payroll<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **一致なし** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  |  リクエストコンテキストに `aws:PrincipalTag/role` はありません。 <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **一致なし**  | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | リクエストコンテキストに `aws:PrincipalTag` はありません。 <pre>aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **一致なし**  | 

## 否定された一致条件演算子の評価ロジック
<a name="reference_policies_multiple-conditions-negated-matching-eval"></a>

`StringNotEquals` や `ArnNotLike` などの一部の[条件演算子](reference_policies_elements_condition_operators.md)は、否定された一致を使用して、ポリシー内のコンテキストのキーと値のペアをリクエスト内のそれと比較します。否定された一致条件演算子を使用するポリシーで、1 つのコンテキストキーに複数の値が指定されている場合、有効なアクセス許可は論理 `NOR` であるかのように機能します。否定された一致では、論理 `NOR` または `NOT OR` はすべての値が false と評価された場合のみ true を返します。

次の図は、複数の条件演算子およびコンテキストのキーと値のペアを含む条件の評価ロジックを示しています。この図には、コンテキストキー 3 用の否定された一致条件演算子が含まれています。

![\[否定された一致条件演算子を使用する際に、AND および OR が複数のコンテキストキーと値にどのように適用されるかを示した条件ブロック\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/AccessPolicyLanguage_Condition_Block_AND_Negated_NOR_2.diagram.png)


例えば、次の S3 バケットポリシーは、上記の図がポリシーでどのように表されるかを示しています。条件ブロックは、条件演算子 `StringEquals` および `ArnNotLike`、コンテキストキー `aws:PrincipalTag` および `aws:PrincipalArn` を含んでいます。目的の `Allow` または `Deny` 効果を呼び出すには、条件ブロックのすべてのコンテキストキーが true に変換される必要があります。リクエストを行うユーザーには、ポリシーで指定されているタグキー値のいずれかを含む、department と role の両方のプリンシパルタグキーが必要です。`ArnNotLike` 条件演算子で否定された一致を使用するため、リクエストを行うユーザーのプリンシパル ARN は true と評価されるポリシーで指定される `aws:PrincipalArn` の値のいずれとも一致してはいけません。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExamplePolicy",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::222222222222:root"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/department": [
            "finance",
            "hr",
            "legal"
          ],
          "aws:PrincipalTag/role": [
            "audit",
            "security"
          ]
        },
        "ArnNotLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::222222222222:user/Ana",
            "arn:aws:iam::222222222222:user/Mary"
          ]
        }
      }
    }
  ]
}
```

------

次の表は、AWS がリクエストの条件キー値に基づいてこのポリシーを評価する方法を示しています。


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: legal<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki<br /></pre>  |  **一致** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **一致なし** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: payroll<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **一致なし** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | >リクエストコンテキストに `aws:PrincipalTag/role` はありません。 <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **一致なし** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | リクエストコンテキストに `aws:PrincipalTag` はありません。 <pre>aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **一致なし**  | 

# 単一値と複数値のコンテキストキー
<a name="reference_policies_condition-single-vs-multi-valued-context-keys"></a>

単一値のコンテキストキーと複数値のコンテキストキーの違いは、ポリシー条件の値の数ではなく、[リクエストコンテキスト](intro-structure.md#intro-structure-request)の値の数にあります。
+ 単一値の条件コンテキストキーはリクエストコンテキストに、最大で 1 つの値を持ちます。例えば、AWS でリソースにタグを付けると、各リソースタグは key-value ペアとして保存されます。リソースタグキーは単一のタグ値しか持つことができないため、[aws:ResourceTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-resourcetag) は単一値のコンテキストキーです。単一値のコンテキストキーで条件集合演算子を使用しないでください。
+ 複数値の条件コンテキストキーは、リクエストコンテキストに複数の値を持つことができます。例えば、AWS でリソースにタグを付ける場合、1 つのリクエストに複数のタグの key-value ペアを含めることができます。したがって、[aws:TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys) は複数の値を持つコンテキストキーです。複数値のコンテキストキーには条件集合演算子が必要です。

例えば、リクエストは最大でも 1 つの VPC エンドポイントから発信されるため、[aws:SourceVpce](reference_policies_condition-keys.md#condition-keys-sourcevpce) は単一値のコンテキストキーです。サービスには、そのサービスに属するサービスプリンシパル名を複数持つことができるため、[aws:PrincipalServiceNamesList](reference_policies_condition-keys.md#condition-keys-principalservicenameslist) は複数値のコンテキストキーです。

**重要**  
単一値と複数値のコンテキストキーの違いは、ポリシー条件の値の数ではなく、リクエストコンテキストの値の数によります。

## 重要ポイント
<a name="reference_policies_condition-key-points"></a>
+ 単一値と複数値の分類については、条件コンテキストキーの値の種類として、[AWS グローバル条件コンテキストキー](reference_policies_condition-keys.md) トピックでそれぞれ説明されています。
+ 「[サービス認証リファレンス](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)」にある複数値のコンテキストキーは、`ArrayOfString` や `ArrayOfARN` などの条件演算子カテゴリタイプが付加された `ArrayOf` プレフィックスを使用します。これらは、リクエスト内に条件コンテキストキーの複数の値が含まれる可能性があることを示します。
+ 使用可能な単一値のコンテキストキーはポリシー変数として使用できますが、複数値のコンテキストキーをポリシー変数として使用することはできません。ポリシー変数の詳細については、「[IAM ポリシーの要素: 変数とタグ](reference_policies_variables.md)」を参照してください。
+ key-value ペアを含むコンテキストキーを使用する場合は、複数の tag-key 値があっても、各 `tag-key` は 1 つの値しか持てないことに留意してください。
  + [aws:PrincipalTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-principaltag)、[aws:RequestTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-requesttag)、[aws:ResourceTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-resourcetag) は単一値のコンテキストキーです。
  + [aws:TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys) はリクエストで許可されるタグキーを定義しますが、タグキー値は含まれません。1 つのリクエストにタグのキーバリューペアを複数含めることができるため、`aws:TagKeys` は複数値のコンテキストキーです。
+ 複数値のコンテキストキーには条件集合演算子が必要です。単一値のコンテキストキーで、条件集合演算子の `ForAllValues` または `ForAnyValue` を使用しないでください。単一値のコンテキストキーで条件集合演算子を使用すると、過度にポリシーが許容される可能性があります。

## 複数値のコンテキストキーの演算子を設定する
<a name="reference_policies_condition-multi-valued-context-keys"></a>

条件コンテキストキーを、複数の値を持つ[リクエストコンテキスト](intro-structure.md#intro-structure-request)キーと比較するには、`ForAllValues` または `ForAnyValue` 集合演算子を使用する必要があります。これらの集合演算子は、リクエストにあるタグのセットと、ポリシー条件にあるタグのセットなど、2 つの値のセットを比較する場合に使われます。

`ForAllValues` および `ForAnyValue` の修飾子によって条件演算子にセット演算機能が追加されるため、リクエストコンテキストキーを、ポリシー条件内の複数のコンテキストキーの値に照らしてテストできます。さらに、ワイルドカードまたは変数を使用してポリシーに複数値の文字列コンテキストキーを含める場合は、`StringLike` [条件演算子](reference_policies_elements_condition_operators.md#Conditions_String)も使用する必要があります。複数の条件キーの値は、[配列](reference_policies_grammar.md#policies-grammar-json)のように括弧で囲む必要があります (例: `"Key2":["Value2A", "Value2B"]`)。

### ForAllValues
<a name="reference_policies_condition-forallvalues"></a>

`ForAllValues` 修飾子は、リクエストコンテキストのすべてのメンバーの値が、修飾子の後に続く条件演算子と一致するかどうかをテストします。条件は、リクエスト内のすべてのコンテキストキーの値がポリシー内のコンテキストキーの値に一致する場合に `true` を返します。また、リクエストにコンテキストキーがない場合も、`true` を返します。

**重要**  
`ForAllValues` を `Allow` 効果で使用するときは、リクエストコンテキストでのコンテキストキーの欠落が予想外である場合に許容範囲が広くなりすぎる可能性があるため、注意が必要です。ポリシーには [`Null`](reference_policies_elements_condition_operators.md#Conditions_Null) 条件演算子と `false` 値を常に含めて、コンテキストキーが存在するかどうか、その値が null でないかどうかをチェックする必要があります。例については、[タグキーに基づいたアクセスの制御](access_tags.md#access_tags_control-tag-keys)を参照してください。

#### ForAllValues 集合演算子の例
<a name="reference_policies_condition-forallvalues-example"></a>

次の例では、ユーザーが EC2 インスタンスに割り当てられた特定のタグを削除できるようにするために、ForAllValues が aws:TagKeys とともに使用されています。このポリシーは、ユーザーが `environment` タグと `cost-center` タグのみを削除できるようにします。これらのタグは、個別に削除することも、一緒に削除することも可能です。リクエスト内のタグキーは、ポリシーで指定されたキーと完全に一致する必要があります。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:DeleteTags",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "aws:TagKeys": [
                        "environment",
                        "cost-center"
                    ]
                },
                "Null": {
                    "aws:TagKeys": "false"
                }
            }
        }
    ]
}
```

------

次の表は、AWS がリクエストの条件キー値に基づいてこのポリシーを評価する方法を示しています。


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment</pre>  |  **一致**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – cost-center</pre>  |  **一致**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – cost-center</pre>  |  **一致**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – dept</pre>  |  **一致なし**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  |  リクエストコンテキストに `aws:TagKeys` はありません。  |  **一致なし**  | 

最後の例では、Null 条件チェックがコンテキストキーが欠落している場合の一致を防ぐため、結果が「一致なし」になることに留意してください。これは、許容範囲が過度に広範なポリシーを回避するためのベストプラクティスです。

### ForAnyValue
<a name="reference_policies_condition-foranyvalue"></a>

`ForAnyValue` 修飾子は、リクエストにあるコンテキストキーの値セットの少なくとも 1 メンバーが、ポリシー条件にあるコンテキストキーの値セットの少なくとも 1 メンバーに一致するかどうかをテストします。リクエストにあるコンテキストキーの値のいずれかが、ポリシーにあるコンテキストキーの値のいずれかに一致すると、条件が `true` を返します。一致するコンテキストキーがない、またはキーが存在しない場合、条件は `false` を返します。

**重要**  
`ForAnyValue` を `Deny` 効果で使用していて、リクエストにコンテキストキーが存在しないという場合、ポリシーは**一致なし**として評価します。一貫した動作のため、ポリシーに明示的な [`Null`](reference_policies_elements_condition_operators.md#Conditions_Null) 条件チェックを追加して、コンテキストキーが存在するかどうかを確認します。詳細については、「[条件キーの有無をチェックする条件演算子](reference_policies_elements_condition_operators.md#Conditions_Null)」を参照してください。

#### ForAnyValue 集合演算子の例
<a name="reference_policies_condition-foranyvalue-example"></a>

次の例では、ユーザーが EC2 インスタンスに割り当てられた特定のタグを削除できるようにするために、ForAnyValue が aws:TagKeys とともに使用されています。このポリシーは、リクエストで指定されたタグキーに `environment` または `cost-center` が含まれている場合に、ユーザーがインスタンスのタグを削除できるようにします。リクエストには、ポリシーで指定されたタグキー以外の追加のタグキーを含めることができますが、条件に一致させるには、指定されたキーの少なくとも 1 つを含める必要があります。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:DeleteTags",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "aws:TagKeys": [
                        "environment",
                        "cost-center"
                    ]
                }
            }
        }
    ]
}
```

------

次の表は、AWS がリクエストの条件キー値に基づいてこのポリシーを評価する方法を示しています。


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment</pre>  |  **一致**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – cost-center</pre>  |  **一致**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – cost-center</pre>  |  **一致**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – dept</pre>  |  **一致**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – dept</pre>  |  **一致なし**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  |  リクエストコンテキストに `aws:TagKeys` はありません。  |  **一致なし**  | 

# 条件ポリシーの例
<a name="reference_policies_condition_examples"></a>

IAM ポリシーでは、単一値のコンテキストキーと複数値のコンテキストキー、その両方に複数の値を指定して、リクエストコンテキストと比較できます。次の一連のポリシーの例では、複数のコンテキストキーと値を使用しているポリシー条件を示しています。

**注記**  
このリファレンスガイドに含めるポリシーを送信する場合は、このページの下部にある [**フィードバック**] ボタンを使用します。IAM ID ベースのポリシーの例については、「[IAM アイデンティティベースのポリシーの例](access_policies_examples.md)」を参照してください。

## 条件ポリシーの例：単一値のコンテキストキー
<a name="reference_policies_condition_example_library_single-valued"></a>
+ 単一値のコンテキストキーを持つ、複数の条件ブロック。([例を表示します](reference_policies_condition_examples-single-valued-context-keys.md#reference_policies_condition_examples-single-valued-context-keys-1)。)
+ 単一値のコンテキストキーバリューを複数持つ、1 つの条件ブロック。([例を表示します](reference_policies_condition_examples-single-valued-context-keys.md#reference_policies_condition_examples-single-valued-context-keys-2)。)

## 条件ポリシーの例：複数値のコンテキストキー
<a name="reference_policies_condition_example_library_multi-valued"></a>
+ 条件集合演算子の `ForAllValues` を使用している拒否ポリシー。([例を表示します](reference_policies_condition_examples-multi-valued-context-keys.md#reference_policies_condition_examples-multi-valued-context-keys-1)。)
+ 条件集合演算子の `ForAnyValue` を使用している拒否ポリシー。([例を表示します](reference_policies_condition_examples-multi-valued-context-keys.md#reference_policies_condition_examples-multi-valued-context-keys-2)。)

# 複数値のコンテキストキーの主な例
<a name="reference_policies_condition_examples-multi-valued-context-keys"></a>

次の一連のポリシーの例では、複数値のコンテキストキーを使用してポリシー条件を作成する方法を示しています。

## 例：条件集合演算子の ForAllValues を使用している拒否ポリシー
<a name="reference_policies_condition_examples-multi-valued-context-keys-1"></a>

次の例では、特定のタグキープレフィックスがリクエストに含まれている場合に、ID ベースのポリシーが IAM タグ付けアクションの使用を拒否する仕組みを示します。[`aws:TagKeys`](reference_policies_condition-keys.md#condition-keys-tagkeys) の値には、文字列の部分一致を目的としたワイルドカード (\$1) が含まれています。リクエストコンテキストキーには複数の値を含められるため、コンテキストキー `aws:TagKeys` を使用しているセット演算子 `ForAllValues` がポリシーに含まれています。コンテキストキー `aws:TagKeys` が一致するには、リクエストコンテキストのすべての値がポリシーの 1 つ以上の値と一致する必要があります。

`ForAllValues` 集合演算子は、リクエストにコンテキストキーがない場合にも true を返します。

`Null` 条件演算子を `false` の値でポリシーに含め、リクエストにコンテキストキーが存在することとその値が null でないことをチェックすることによって、欠落したコンテキストキーや、空の値を含むコンテキストキーが true と評価されることを防止できます。詳細については、「[条件キーの有無をチェックする条件演算子](reference_policies_elements_condition_operators.md#Conditions_Null)」を参照してください。

**重要**  
このポリシーでは、アクションを許可しません。特定のアクションを許可する他のポリシーと組み合わせてこのポリシーを使用します。

**Example 複数の値を持つコンテキストキーの単一のポリシー条件値を拒否する**  
次の例では、ポリシーは、リクエスト内の `aws:TagKeys` の値にプレフィックス **key1** が含まれていないリクエストを拒否します。リクエストコンテキストには複数の値を含めることができますが、`ForAllValues` 条件集合演算子の要件を満たすために、リクエストコンテキスト内のすべてのタグキー値はプレフィックス **key1** で始まる必要があります。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyRestrictedTags",
      "Effect": "Deny",
      "Action": [
        "iam:Tag*",
        "iam:UnTag*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "ForAllValues:StringNotLike": {
          "aws:TagKeys": "key1*"
        }
      }
    }
  ]
}
```
次の表は、AWS がリクエストの条件キー値に基づいてこのポリシーを評価する方法を示しています。Deny ステートメントの場合、「一致」は拒否され、「一致なし」は拒否されないため、別のステートメントで許可される場合があります。  


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:legal</pre>  |  **一致なし** 別のステートメントで許可される場合があります。 | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key1:personnel</pre>  | **一致なし** 別のステートメントで許可される場合があります。 | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – key2:audit</pre>  | **一致** | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | リクエストコンテキストに `aws:TagKeys` はありません。  | **一致** | 

**Example 複数の値を含むコンテキストキーの複数のポリシー条件値を拒否する**  
次の例では、ポリシーは、リクエスト内の `aws:TagKeys` の値に **key 1** または **key 2** というプレフィックスが含まれていないリクエストを拒否します。リクエストコンテキストには複数の値を含めることができますが、条件集合演算子 `ForAllValues` の要件を満たすために、リクエストコンテキスト内のすべてのタグキー値は、プレフィックス **key1** または **key2** で始まる必要があります。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyRestrictedTags",
      "Effect": "Deny",
      "Action": [
        "iam:Tag*",
        "iam:UnTag*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "ForAllValues:StringNotLike": {
          "aws:TagKeys": [
            "key1*",
            "key2*"
          ]
        }
      }
    }
  ]
}
```
次の表は、AWS がリクエストの条件キー値に基づいてこのポリシーを評価する方法を示しています。Deny ステートメントの場合、「一致」は拒否され、「一致なし」は拒否されないため、別のステートメントで許可される場合があります。  


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:legal</pre>  |  **一致なし** 別のステートメントで許可される場合があります。 | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key1:personnel</pre>  | **一致なし** 別のステートメントで許可される場合があります。 | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key2:audit</pre>  | **一致なし** 別のステートメントで許可される場合があります。 | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key3:legal</pre>  | **一致**  | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | リクエストコンテキストに `aws:TagKeys` はありません。  | **一致** | 

## 例：条件集合演算子の ForAnyValue を使用している拒否ポリシー
<a name="reference_policies_condition_examples-multi-valued-context-keys-2"></a>

次の ID ベースのポリシーの例では、ポリシー、`environment` または `webserver` で指定されているタグキーのいずれかでタグ付けされたスナップショットがある場合、EC2 インスタンスボリュームのスナップショットの作成を拒否します。リクエストコンテキストキーには複数の値を含められるため、コンテキストキー `aws:TagKeys` を使用しているセット演算子 `ForAnyValue` がポリシーに含まれています。ポリシーで指定されたタグキーの値が、タグ付けリクエストに 1 つでも含まれている場合、`aws:TagKeys` コンテキストキーは true を返し、拒否ポリシーの効果をもたらします。

**重要**  
このポリシーでは、アクションを許可しません。特定のアクションを許可する他のポリシーと組み合わせてこのポリシーを使用します。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "ec2:CreateSnapshot",
        "ec2:CreateSnapshots"
      ],
      "Resource": "arn:aws:ec2:us-west-2::snapshot/*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:TagKeys": "webserver"
        }
      }
    }
  ]
}
```

------

次の表は、AWS がリクエストの条件キー値に基づいてこのポリシーを評価する方法を示しています。Deny ステートメントの場合、「一致」は拒否され、「一致なし」は拒否されないため、別のステートメントで許可される場合があります。


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – webserver</pre>  | **一致** | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – webserver<br />  – test</pre>  |  **一致** | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – test</pre>  | **一致なし** 別のステートメントで許可される場合があります。 | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | リクエストコンテキストに `aws:TagKeys` はありません。  | **一致なし** 別のステートメントで許可される場合があります。  | 

# 単一値のコンテキストキーポリシーの例
<a name="reference_policies_condition_examples-single-valued-context-keys"></a>

次の一連のポリシーの例では、単一値のコンテキストキーを使用してポリシー条件を作成する方法を示しています。

## 例：単一値のコンテキストキーを持つ、複数の条件ブロック
<a name="reference_policies_condition_examples-single-valued-context-keys-1"></a>

条件ブロックに複数の条件があり、それぞれにコンテキストキーが 1 つしかない場合、目的の `Allow` または `Deny` 効果を呼び出すには、すべてのコンテキストキーが true になる必要があります。否定一致条件演算子を使用すると、条件の値を評価するロジックが反転します。

次の例では、ユーザーが EC2 ボリュームを作成し、ボリューム作成時にボリュームにタグを適用しています。リクエストコンテキストには、コンテキストキー `aws:RequestTag/project` の値を含める必要があり、本稼働環境以外ならば、コンテキストキー `aws:ResourceTag/environment` の値はどの値でもかまいません。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "ec2:CreateTags",
      "Resource": "arn:aws:ec2:us-east-1:123456789012:volume/*",
      "Condition": {
        "StringLike": {
          "aws:RequestTag/project": "*"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:CreateTags",
      "Resource": "arn:aws:ec2:us-east-1:123456789012:*/*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceTag/environment": "production"
        }
      }
    }
  ]
}
```

------

リクエストコンテキストには、プロジェクトのタグ値が含まれている必要があり、本稼働環境のリソース用にリクエストコンテキストを作成して `Allow` 効果を呼び出すことはできません。プロジェクト名に `QA` リソースタグがついて `Feature3` となっているため、次の EC2 ボリュームは正常に作成されました。

```
aws ec2 create-volume \
    --availability-zone us-east-1a \
    --volume-type gp2 \
    --size 80 \
    --tag-specifications 'ResourceType=volume,Tags=[{Key=project,Value=Feature3},{Key=environment,Value=QA}]'
```

## 例：単一値のコンテキストキーと値が複数ある、1 つの条件ブロック
<a name="reference_policies_condition_examples-single-valued-context-keys-2"></a>

条件ブロックに複数のコンテキストキーが含まれていて、それぞれのコンテキストキーに複数の値がある場合、目的の `Allow` または `Deny` 効果を呼び出すには、少なくとも 1 つのキーバリューが true になる必要があります。否定一致条件演算子を使用すると、コンテキストキーの値を評価するロジックが反転します。

次の例では、ユーザーが Amazon Elastic Container Service クラスターで、タスクを開始して実行できるようにします。
+ リクエストコンテキストには、**AND** `aws:RequestTag/environment` コンテキストキー用に、`production` **または** `prod-backup` を含める必要があります。
+ `ecs:cluster` コンテキストキーにより、`default1` **または** `default2` の ARN ECS クラスターでタスクが実行されたことが確実になります。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:RunTask",
        "ecs:StartTask"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/environment": [
            "production",
            "prod-backup"
          ]
        },
        "ArnEquals": {
          "ecs:cluster": [
            "arn:aws:ecs:us-east-1:111122223333:cluster/default1",
            "arn:aws:ecs:us-east-1:111122223333:cluster/default2"
          ]
        }
      }
    }
  ]
}
```

------

次の表は、AWS がリクエストの条件キー値に基づいてこのポリシーを評価する方法を示しています。


| ポリシー条件 | リクエストコンテキスト | 結果 | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: environment:production<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default1</pre>  | 一致 | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: environment:prod-backup<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | 一致 | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: webserver:production<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | 一致なし | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  |  リクエストコンテキストに `aws:RequestTag` はありません。 <pre>ecs:cluster<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | 一致なし | 

# IAM ポリシーの要素: 変数とタグ
<a name="reference_policies_variables"></a>

ポリシーを記述するときにリソースや条件キーの正確な値がわからない場合、AWS Identity and Access Management (IAM) のポリシー変数をプレースホルダーとして使用します。

**注記**  
AWS が変数を解決できない場合は、これによってステートメント全体が無効になる可能性があります。たとえば、`aws:TokenIssueTime` 変数を使用する場合は、リクエスタが一時的な認証情報 (IAM ロール) を使用して認証した場合にのみ、変数は値に解決されます。変数が無効なステートメントを発生させないようにするには、[...IfExists 条件演算子を使用します。](reference_policies_elements_condition_operators.md#Conditions_IfExists)

**Topics**
+ [

## 序章
](#policy-vars-intro)
+ [

## ポリシーでの変数の使用
](#policy-vars-using-variables)
+ [

## ポリシー変数としてのタグ
](#policy-vars-tags)
+ [

## ポリシー変数を使用する場所
](#policy-vars-wheretouse)
+ [

## 値のないポリシー変数
](#policy-vars-no-value)
+ [

## ポリシー変数に使用可能なリクエスト情報
](#policy-vars-infotouse)
+ [

## デフォルト値の指定
](#policy-vars-default-values)
+ [

## 詳細情報
](#policy-vars-formoreinfo)

## 序章
<a name="policy-vars-intro"></a>

IAM ポリシーでは、アクセスを制御する特定のリソースに対して名前を指定することが多くのアクセションで許可されています。例えば、以下のポリシーでは、ユーザーは、`marketing` プロジェクトの S3 バケット `amzn-s3-demo-bucket` 内のオブジェクトの一覧表示、読み取り、および書き込みができます。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],      
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"],
      "Condition": {"StringLike": {"s3:prefix": ["marketing/*"]}}
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],      
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/marketing/*"]
    }
  ]
}
```

------

場合によっては、ポリシーを書く際に対象リソースの正確な名前が分からないときがあります。ポリシーを汎用化して多くのユーザーが共用できるようにすると、ユーザーごとにポリシーの一意なコピーを作成する必要がなくなります。ユーザーごとの個別のポリシーを作成するのではなく、そのグループに属するすべてのユーザーに対して機能する単一のグループポリシーを作成することをお勧めします。

## ポリシーでの変数の使用
<a name="policy-vars-using-variables"></a>

ポリシーにプレースホルダーを設定する*ポリシー変数*を使用して、ポリシー内で動的な値を定義できます。

変数は、**`$`** プレフィックスを使用してマークされ、その後に、リクエストに値がある変数名が、中括弧 (**`{ }`**) で囲まれて続きます。

ポリシーの評価時に、ポリシー変数はリクエスト自体の条件コンテキストから取得された値に置き換えられます。変数は、[ID ベースのポリシー、リソースポリシー、サービスコントロールポリシー、セッションポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)、[VPC エンドポイントポリシーで使用できます](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。アクセス許可の境界として使用される ID ベースのポリシーは、ポリシー変数もサポートします。

グローバル条件コンテキストキーは、AWS サービス間のリクエストの変数として使用できます。サービス固有の条件キーは、AWS リソースを操作するときの変数としても使用できますが、それらをサポートするリソースに対してリクエストが行われた場合にのみ使用できます。各 AWS サービスとリソースで使用可能なコンテキストキーのリストについては、「[https://docs.aws.amazon.com/service-authorization/latest/reference/reference.html](https://docs.aws.amazon.com/service-authorization/latest/reference/reference.html)」をご覧ください。特定の状況では、グローバル条件コンテキストキーに値を設定できません。詳細については、「[AWS グローバル条件コンテキストキー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)」を参照してください。

**重要**  
キー名では大文字と小文字は区別されません。例えば、`aws:CurrentTime` と `AWS:currenttime` は同じです。
単一値の条件キーは、変数として使用できます。複数値の条件キーは、変数としては使用できません。

次の例は、特定のリソース名をポリシー変数に置き換える IAM ロールまたはユーザー用のポリシーを示しています。このポリシーは、`aws:PrincipalTag` 条件キーを利用して再利用できます。このポリシーが評価されると、`${aws:PrincipalTag/team}` では、バケット名が `team` プリンシパルタグのチーム名で終わる場合にのみアクションが許可されます。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],      
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"],
      "Condition": {"StringLike": {"s3:prefix": ["${aws:PrincipalTag/team}/*"]}}
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],      
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/${aws:PrincipalTag/team}/*"]
    }
  ]
}
```

------

変数は、`$` プレフィックスの後に波かっこ (`{ }`) を付けることでマークできます。`${ }` 文字の内部には、ポリシーで使用する値の名前をリクエストから取得して含めることができます。使用できる値については、このページの後半で説明します。

このグローバル条件キーの詳細については、グローバル条件キーのリストの「[aws:PrincipalTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-principaltag)」を参照してください。

**注記**  
ポリシー変数を使用するには、ステートメントに `Version` 要素を含めて、ポリシー変数をサポートするバージョンに設定する必要があります。変数はバージョン `2012-10-17` から導入されました。旧バージョンでのポリシー言語では、ポリシー変数をサポートしていません。`Version` 要素を含めず、適切なバージョンの日付に設定しない場合、`${aws:username}` などの変数はポリシー内のリテラル文字列として扱われます。  
`Version` ポリシー要素は、ポリシーバージョンとは異なります。`Version` ポリシー要素は、ポリシー内で使用され、ポリシー言語のバージョンを定義します。一方で、ポリシーバージョンは、IAM でカスタマー管理ポリシーを変更すると作成されます。変更されたポリシーによって既存のポリシーが上書きされることはありません。代わりに、IAM は管理ポリシーの新しいバージョンを作成します。`Version` ポリシー要素の詳細については、「[IAM JSON ポリシー要素Version](reference_policies_elements_version.md)」を参照してください。ポリシーのバージョンの詳細については、「[IAM ポリシーのバージョニング](access_policies_managed-versioning.md)」を参照してください。

プリンシパルが S3 バケットの /David パスからオブジェクトを取得することを許可するポリシーは次のようになります。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/David/*"
      ]
    }
  ]
}
```

------

このポリシーがユーザー `David` にアタッチされている場合、そのユーザーは自身の S3 バケットからオブジェクトを取得しますが、このユーザー名を含む各ユーザーには別のポリシーを作成する必要があります。その後、各ポリシーを個々のユーザーに関連付ける必要があります。

ポリシー変数を使用することで、再利用できるポリシーを作成できます。次のポリシーでは、`aws:PrincipalTag` のタグキー値がリクエストで渡されたタグキーの `owner` 値と一致する場合、ユーザーは Amazon S3 バケットからオブジェクトを取得できます。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Sid": "AllowUnlessOwnedBySomeoneElse",
    "Effect": "Allow",
    "Action": ["s3:GetObject"],    
    "Resource": ["*"],
    "Condition": {
        "StringEquals": {
          "s3:ExistingObjectTag/owner": "${aws:PrincipalTag/owner}"
        }
      }
    }
  ]
}
```

------

このようにユーザーのところにポリシー変数を使用することで、ユーザーごとに別々のポリシーを作成する必要がなくなります。次の例では、プロダクトマネージャーが一時的なセキュリティ認証情報を使用して引き受ける IAM ロールにポリシーをアタッチしています。ユーザーが Amazon S3 オブジェクトへのアクセスをリクエストした場合、IAM では `${aws:PrincipalTag}` 変数を現在のリクエストから取得した `dept` タグ値に置き換えてポリシーを評価します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowOnlyDeptS3Prefix",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/${aws:PrincipalTag/dept}/*"
            ]
        }
    ]
}
```

------

## ポリシー変数としてのタグ
<a name="policy-vars-tags"></a>

一部の AWS サービスでは、それらのサービスによって作成されたリソースに独自のカスタム属性をアタッチできます。例えば、Amazon S3 バケットや IAM ユーザーにタグを適用できます。これらのタグはキーバリューのペアです。タグキー名と、そのキー名に関連付けられた値とを定義します。たとえば、**department** キーと **Human Resources** 値を持つタグを作成します。IAM エンティティのタグ付けの詳細については、「[AWS Identity and Access Management リソースのタグ](id_tags.md)」を参照してください。他の AWS サービスによって作成されるリソースのタグ付けについては、そのサービスのドキュメントを参照してください。タグエディタの使用については、「AWS マネジメントコンソール ユーザーガイド」の「[タグエディタの使用](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/tag-editor.html)」を参照してください。

IAM リソースにタグ付けすることで、IAM リソースの検出、整理、および追跡を簡単に行うことができます。また、IAM アイデンティティにタグ付けして、リソースまたはタグ付け自体へのアクセスを制御することもできます。タグを使用したアクセスの制御については、「[タグを使用した IAM ユーザーおよびロールへのアクセスとそのユーザーおよびロールのアクセスの制御](access_iam-tags.md)」を参照してください。

## ポリシー変数を使用する場所
<a name="policy-vars-wheretouse"></a>

 `Resource` 要素のポリシー変数、および `Condition` 要素の文字列比較を活用できます。

### リソースの要素
<a name="policy-vars-resourceelement"></a>

ポリシー変数は `Resource` 要素で使用できますが、ARN のリソース部分でのみ使用できます。ARN のこの部分は、5 番目のコロン (:) の後に表示されます。サービスやアカウントなど 5 番目のコロンよりも前の ARN の部分は、変数を使用して置き換えることはできません。ARN 形式の詳細については、[IAM ARN](reference_identifiers.md#identifiers-arns)を参照してください。

ARN の一部をタグ値で置き換えるには、プレフィックスとキー名を `${ }` で囲みます。例えば、次のリソース要素は、リクエストしているユーザーの部門タグの値と同じ名前のバケットのみを参照します。

`"Resource": ["arn:aws::s3:::amzn-s3-demo-bucket/${aws:PrincipalTag/department}"]`

多くの AWS リソースは、ユーザーが作成した名前を含む ARN を使用します。以下の IAM ポリシーでは、アクセスプロジェクト、アクセスアプリケーション、アクセス環境のタグ値が一致する対象ユーザーのみがリソースを変更できるようにしています。さらに、[\$1 ワイルドカードマッチ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html)を使用すると、カスタムリソース名のサフィックスを指定できます。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessBasedOnArnMatching",
      "Effect": "Allow",
      "Action": [
        "sns:CreateTopic",
        "sns:DeleteTopic"],      
      "Resource": ["arn:aws:sns:*:*:${aws:PrincipalTag/access-project}-${aws:PrincipalTag/access-application}-${aws:PrincipalTag/access-environment}-*"
      ]
    }
  ]
}
```

------

### 条件の要素
<a name="policy-vars-conditionelement"></a>

ポリシー変数は、文字列演算子または ARN 演算子を含む任意の条件の `Condition` の値に使用できます。文字列演算子には `StringEquals`、`StringLike`、`StringNotLike` などが含まれます。ARN 演算子には `ArnEquals` と `ArnLike` が含まれます。ポリシー変数は `Numeric`、`Date`、`Boolean`、`Binary`、`IP Address`、または `Null` など、他の演算子では使用できません。条件演算子の詳細については、「[IAM JSON ポリシー要素: 条件演算子](reference_policies_elements_condition_operators.md)」を参照してください。

`Condition` 要素式のタグを参照するときは、関連する接頭辞とキー名を条件キーとして使用します。次に、条件値でテストする値を使用します。

例えば、次のポリシー例では、ユーザーにフルアクセスが許可されていますが、タグ `costCenter` がユーザーにアタッチされている場合に限ります。タグの値は、`12345` または `67890` である必要があります。タグ値が設定されていない場合、またはそれ以外の値の場合、リクエストは失敗します。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
          "iam:*user*"
       ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "iam:ResourceTag/costCenter": [ "12345", "67890" ]
        }
      }
    }
  ]
}
```

------

## 値のないポリシー変数
<a name="policy-vars-no-value"></a>

ポリシー変数が、値のない、またはリクエストの承認コンテキストに存在しない条件コンテキストキーを参照する場合、その値は事実上 null になります。同等または同等の価値はありません。以下の場合、条件コンテキストキーが認可コンテキストに存在しない可能性があります。
+ その条件キーをサポートしていないリソースへのリクエストで、サービス固有の条件コンテキストキーを使用しています。
+ IAM プリンシパル、セッション、リソース、またはリクエストのタグは存在しません。
+ [AWS グローバル条件コンテキストキー](reference_policies_condition-keys.md) 内の各グローバル条件コンテキストキーにリストされているその他の状況。

IAM ポリシーの条件要素に値のない変数を使用すると（「[IAM JSON ポリシー要素: 条件演算子](reference_policies_elements_condition_operators.md)いいね」`StringEquals` または「`StringLike`一致しない」）、ポリシーステートメントが有効になりません。

`StringNotEquals` または `StringNotLike` などの逆条件演算子は、テスト対象の条件キーの値が実際の NULL 値と等しくないか、等しくないため、null 値とマッチします。

例えば、アクセスを許可するには `aws:principaltag/Team` が `s3:ExistingObjectTag/Team` と等しい必要があります。`aws:principaltag/Team` が設定されていない場合、アクセスは明示的に拒否されます。承認コンテキストに値のない変数をポリシーの `Resource` または `NotResource` 要素の一部として使用すると、値のないポリシー変数を含むリソースはどのリソースとも一致しません。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
   {
    "Effect": "Deny", 
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
    "Condition": {
      "StringNotEquals": {
        "s3:ExistingObjectTag/Team": "${aws:PrincipalTag/Team}"
       }
      }
    }
  ]
}
```

------

## ポリシー変数に使用可能なリクエスト情報
<a name="policy-vars-infotouse"></a>

 JSON ポリシーの `Condition` 要素を使用して、[リクエストコンテキスト](reference_policies_evaluation-logic_policy-eval-reqcontext.md)のキーを、ポリシーで指定したキーバリューと比較できます。ポリシー変数を使用する場合、AWS は、ポリシー内の変数の代わりにリクエストコンテキストキーの値を置換します。

### プリンシパルキーの値
<a name="principaltable"></a>

`aws:username`、`aws:userid`、および `aws:PrincipalType` の値は、リクエストを開始したプリンシパルの値によって異なります。例えば、IAM ユーザー、IAM ロール、または AWS アカウントのルートユーザー の認証情報を使用してリクエストを行うことができます。以下の表は、様々な種類のプリンシパルに対するキーの値を示しています。


****  

| Principal | `aws:username` | `aws:userid` | `aws:PrincipalType` | 
| --- | --- | --- | --- | 
| AWS アカウントのルートユーザー | （なし） | AWS アカウント ID | Account | 
| IAM ユーザー | IAM-user-name | [一意の ID](reference_identifiers.md#identifiers-unique-ids) | User | 
| AWS STS フェデレーションユーザーのプリンシパル | （なし） | account:caller-specified-name | FederatedUser | 
| OIDC フェデレーテッドプリンシパル ウェブ ID フェデレーションを使用するときに利用可能なポリシーキーの詳細については、「[OIDC AWS フェデレーションで使用できるキー](reference_policies_iam-condition-keys.md#condition-keys-wif)」を参照してください。 | （なし） |   *role-id*:*caller-specified-role-name*  ここで、`role-id` は[ロールの一意の ID](reference_identifiers.md#identifiers-unique-ids) であり、caller-specified-role-name は AssumeRoleWithWebIdentity リクエストに渡される [RoleSessionName パラメータ](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AssumeRole.html#API_AssumeRoleWithWebIdentity_RequestParameters)によって指定されます。  | AssumedRole | 
| SAML フェデレーテッドプリンシパル SAML フェデレーションを使用するときに利用可能なポリシーキーの詳細については、「[SAML ベースのフェデレーションでユーザーを一意に識別する](id_roles_providers_saml.md#CreatingSAML-userid)」を参照してください。 | （なし） |  *role-id*:*caller-specified-role-name* ここで、r`role-id` は[ロールの一意の ID](reference_identifiers.md#identifiers-unique-ids) です。caller-specified-role-name は Attribute 要素によって指定され、[Name 属性](id_roles_providers_create_saml_assertions.md)は https://aws.amazon.com/SAML/attributes/RoleSessionName に設定されています。  | AssumedRole | 
| 委任されたロール | （なし） |  *role-id*:*caller-specified-role-name* ここで、`role-id` は[ロールの一意の ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) であり、caller-specified-role-name は AssumeRole リクエストに渡される [RoleSessionName パラメータ](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html#API_AssumeRole_RequestParameters)です。  | AssumedRole | 
| Amazon EC2 インスタンスに割り当てられたロール | （なし） |  *role-id*:*ec2-instance-id* ここで、`role-id` は[ロールの一意の ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) であり、ec2-instance-id は [EC2 インスタンスの一意の識別子](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html)です。  | AssumedRole | 
| 匿名呼び出し元 (Amazon SQS、Amazon SNS、および Amazon S3 のみ) | （なし） | anonymous | Anonymous | 

この  テーブルの については、次の点に注意してください。
+ *なし*である場合、値が現在のリクエスト情報内に存在しないために値を一致させる試みが失敗し、ステートメントが無効になることを意味します。
+ *role-id* は、作成時に各ロールに割り当てられる一意の識別子です。次の AWS CLI コマンドでロール ID を表示できます: `aws iam get-role --role-name rolename`
+ *caller-specified-name* および *caller-specified-role-name* は、一時的認証情報を取得するための呼び出し元プロセス (アプリケーションまたはサービスなど) によって渡された名前です。
+ *ec2-instance-id* は、インスタンスにその起動時に割り当てられ、Amazon EC2 コンソールの [**Instances (インスタンス)**] ページに表示される値です。インスタンス ID を表示するには、次の AWS CLI コマンドを実行します: `aws ec2 describe-instances`

### フェデレーティッドプリンシパル用にリクエストで利用可能な情報
<a name="policy-vars-infoWIF"></a>

フェデレーティッドプリンシパルとは、IAM 以外のシステムの使用が認証されたユーザーを指します。たとえば、ある企業が AWS に発信する社内用のアプリケーションを使用しているとします。このアプリケーションを使用する社内すべてのユーザーに IAM ID を発行することは実際的ではありません。代わりに、単一の IAM ID を持つプロキシ (中間層) アプリケーションを使用するか、SAML ID プロバイダー (IdP) を使用することができます。プロキシアプリケーションまたは SAML IdP は、企業ネットワークを使用して個々のユーザーを認証します。プロキシアプリケーションは、その IAM ID を使用して、個々のユーザーの一時的セキュリティ認証情報を取得できます。SAML IdP は、実際には AWS 一時的セキュリティ認証情報の ID に置き換えることができます。次に、一時的な認証情報を使用して、AWS リソースにアクセスできます。

同様に、AWS リソースへのアクセスが必要なモバイルデバイス用アプリを作成することもできます。この場合、「OIDC フェデレーション」を使用すると、アプリケーションで、Login with Amazon、Amazon Cognito、Facebook、Google などのよく知られた ID プロバイダーを使用するユーザーを認証できます。その後、アプリはこれらのプロバイダーから取得したユーザーの認証情報を用いて、AWS リソースにアクセスするための一時認証情報を取得します。

OIDC フェデレーションを使用する場合は、Amazon Cognito と AWS Mobile SDK を利用することをお勧めします。詳細については次を参照してください:
+ [Amazon Cognito ユーザーガイド](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html) 
+ [一時的な認証情報の一般的なシナリオ](id_credentials_temp.md#sts-introduction)

### 特殊文字
<a name="policy-vars-specialchars"></a>

それ以外の場合は特別な意味を持つ文字を表すことのできる、固定値を持つ事前定義された特殊なポリシー変数がいくつかあります。これらの特殊文字が、一致を試みている文字列、またリテラルに挿入した文字列の一部である場合、これらは誤って解釈されます。たとえば、文字列に挿入されたアスタリスク (\$1) は、リテラルな \$1 としてではなく、任意の文字列を指定するワイルドカードとして解釈されます。この場合、事前定義した次のポリシー変数を使用できます。
+ **\$1\$1\$1\$1** - \$1 (アスタリスク) が必要な場合に使用します。
+ **\$1\$1?\$1** - ? (疑問符) が必要な場合に使用します。
+ **\$1\$1\$1\$1** - \$1 (ドル記号) が必要な場合に使用します。

これらの事前定義されたポリシー変数は、正規のポリシー変数を使用できるすべての文字列で使用できます。

## デフォルト値の指定
<a name="policy-vars-default-values"></a>

変数にデフォルト値を追加するには、デフォルト値を一重引用符 (`' '`) で囲み、変数テキストとデフォルト値をコンマとスペース (`, `) で区切ります。

例えば、プリンシパルが `team=yellow` でタグ付けされている場合、`amzn-s3-demo-bucket-yellow` という名前で `ExampleCorp's` のAmazon S3 バケットにアクセスできます。このリソースを使用するポリシーでは、チームメンバーがチームのバケットにアクセスすることは許可されますが、他のチームのリソースにアクセスすることはできません。チームタグのないユーザーの場合、`company-wide` のデフォルト値をバケットの名前として設定します。これらのユーザーは `amzn-s3-demo-bucket-company-wide` バケットにのみアクセスでき、チームへの参加方法などの一般的な情報を確認できます。

```
"Resource":"arn:aws:s3:::amzn-s3-demo-bucket-${aws:PrincipalTag/team, 'company-wide'}"
```

## 詳細情報
<a name="policy-vars-formoreinfo"></a>

ポリシーの詳細については、以下を参照してください。
+  [AWS Identity and Access Management でのポリシーとアクセス許可](access_policies.md) 
+  [IAM アイデンティティベースのポリシーの例](access_policies_examples.md) 
+  [IAM JSON ポリシー要素のリファレンス](reference_policies_elements.md) 
+  [ポリシーの評価論理](reference_policies_evaluation-logic.md) 
+  [OIDC フェデレーション](id_roles_providers_oidc.md)

# IAM JSON ポリシー要素: サポートされているデータ型
<a name="reference_policies_elements_datatypes"></a>

このセクションでは、JSON ポリシーで値を指定するときにサポートされているデータの種類の一覧を掲載します。ポリシー言語では、各ポリシー要素のすべての種類がサポートされているわけではありません。各要素の詳細については、前のセクションを参照してください。
+ 文字列
+ 数字（整数および浮動小数点数）
+ ブール値
+ Null
+ Lists
+ マップ
+ 構造体（入れ子形式のマップ）

以下の表は、各データの種類をシリアル化してまとめたものです。すべてのポリシーは UTF-8 形式でなければいけないことに注意してください。JSON データの種類については、[RFC 4627](https://datatracker.ietf.org/doc/html/rfc4627) を参照してください。


****  

| タイプ | JSON | 
| --- | --- | 
|  String  |  String  | 
|  整数  |  Number  | 
|  浮動小数点数  |  Number  | 
|  ブール値  |  true または false  | 
|  Null  |  null  | 
|  日付  |  [ISO 8601 の W3C プロファイル](http://www.w3.org/TR/NOTE-datetime)に準拠する文字列  | 
|  IpAddress  |  [RFC 4632](https://datatracker.ietf.org/doc/html/rfc4632) に準拠する文字列  | 
|  リスト  |  配列  | 
|  オブジェクト  |  オブジェクト  | 

# ポリシーの評価論理
<a name="reference_policies_evaluation-logic"></a>

プリンシパルが AWS マネジメントコンソール、AWS API、または AWS CLI を使用しようとすると、プリンシパルは AWS に*リクエスト*を送信します。AWS サービスが、リクエストを受け取ると、AWS は、いくつかのステップを実行してリクエストの許可または拒否を決定します。

1. **認証** – AWS は、必要に応じて、最初にリクエストを行ったプリンシパルを認証します。このステップは、匿名ユーザーからの一部のリクエストを許可するいくつかのサービス (Amazon S3 など) では不要です。

1. **[リクエストコンテキストの処理](reference_policies_evaluation-logic_policy-eval-reqcontext.md)** – AWS は、リクエスト内で収集した情報を処理し、リクエストに適用するポリシーを決定します。

1. **[AWS エンフォースメントコードロジックがリクエストを評価してアクセスを許可または拒否する方法](reference_policies_evaluation-logic_policy-eval-denyallow.md)** – AWS はすべてのポリシータイプを評価し、ポリシーの順序はそれらの評価方法に影響します。 AWS は次に、リクエストコンテキストに対してポリシーを処理して、リクエストが許可または拒否されたかどうかを判断します。

## リソースベースのポリシーを使用したアイデンティティベースのポリシーの評価
<a name="policy-eval-basics-id-rdp"></a>

アイデンティティのポリシーとリソースベースのポリシーは、それらが関連付けられているアイデンティティまたはリソースにアクセス許可を付与します。IAM エンティティ (ユーザーまたはロール) が同じアカウントのリソースへのアクセスをリクエストした場合、AWS は、アイデンティティのポリシーおよびリソースベースのポリシーによって付与されているすべてのアクセス許可を評価します。結果として得られる許可は、2 つのタイプの許可を結合したものになります。アクションがアイデンティティのポリシーかリソースベースのポリシー、または両方で許可されている場合、AWS はそのアクションを許可します。これらのポリシーのいずれかを明示的に拒否した場合、その許可は無効になります。

![\[アイデンティティベースのポリシーおよびリソースベースのポリシーの評価\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/permissions_policies_effective.png)


## アクセス許可の境界を使用したアイデンティティベースのポリシーの評価
<a name="policy-eval-basics-id-bound"></a>

AWS でユーザーのアイデンティティベースのポリシーとアクセス許可の境界を評価する場合は、2 つのカテゴリーの共通部分に基づいてアクセス許可が決定されます。つまり、既存のアイデンティティベースのポリシーを使用してアクセス許可の境界をユーザーに追加すると、ユーザーが実行できるアクションが制限される場合があります。逆に、ユーザーからアクセス許可の境界を削除すると、ユーザーが実行できるアクションが増える場合があります。これらのポリシーのいずれかを明示的に拒否した場合、その許可は無効になります。他のポリシータイプがアクセス許可の境界で評価される方法について確認するには、「[境界を設定した場合の有効なアクセス許可の評価](access_policies_boundaries.md#access_policies_boundaries-eval-logic)」を参照してください。

![\[アイデンティティベースのポリシーとアクセス許可の境界の評価\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/permissions_boundary.png)


## AWS Organizations SCPまたはRCP を使用したアイデンティティベースのポリシーの評価
<a name="policy-eval-basics-id-scp"></a>

ユーザーが組織のメンバーであるアカウントに属しており、リソースベースのポリシーが設定されていないリソースにアクセスする場合、結果として得られる許可は、ユーザーのポリシー、サービスコントロールポリシー (SCP)、およびリソースコントロールポリシー (SCP) すべての適用を受けます。これは、3 つすべてのポリシータイプによってアクションが許可されなければならないことを意味します。ID ベースのポリシー、SCP、または RCP での明示的な拒否は、許可をオーバーライドします。

![\[ID ベースのポリシーと SCP または RCP の評価\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/permissions_scp-idp.png)


[自分のアカウントが AWS Organizations の組織のメンバーであるかどうか](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_details.html#orgs_view_account)を確認できます。組織のメンバーは、SCP または RCP による影響を受ける可能性があります。AWS CLI コマンドまたは AWS API オペレーションを使用してこのデータを表示するには、AWS Organizations エンティティに対する `organizations:DescribeOrganization` アクションのアクセス許可が必要です。AWS Organizations コンソールでオペレーションを実行するには、追加のアクセス許可が必要です。SCP または RCP が特定のリクエストへのアクセスを拒否しているかどうかを確認する、または有効な許可を変更するには、AWS Organizations 管理者に連絡してください。

# リクエストコンテキストの処理
<a name="reference_policies_evaluation-logic_policy-eval-reqcontext"></a>

AWS がリクエストを評価して承認すると、リクエスト情報を*リクエストコンテキスト*にアセンブルします。リクエストコンテキストには、ポリシー評価で使用できる情報が含まれています。
+ **プリンシパル** – リクエストを送信したユーザー、ロール、フェデレーションユーザーのプリンシパル。プリンシパルに関する情報には、そのプリンシパルに関連付けられたポリシーが含まれます。
+ **アクション** – プリンシパルが実行する 1 つ、または複数のアクション。
+ **リソース** – アクションまたは操作が実行される 1 つ、または複数の AWS リソースオブジェクト。
+ **リソースデータ** – リクエストされているリソースに関連するデータ。これには、DynamoDB テーブル名、Amazon EC2 インスタンスのタグなどの情報が含まれる場合があります。
+ **環境データ** – IP アドレス、ユーザーエージェント、SSL 有効化ステータス、または時刻に関する情報。

この情報は、リクエストを許可するか拒否するかを判断するために該当するポリシーと比較されます。AWS ポリシーの評価方法をよりよく理解するため、このプロパティ情報は **[Principal]**、**[Action]**、**[Resource]**、および **[Condition]** (PARC) モデルを使用して整理することができます。

## PARC モデルを理解する
<a name="reqcontext_parc-model"></a>

PARC モデルは、ポリシー言語の 4 つの JSON 要素に基づいてリクエストコンテキストを表します。
+ [Principal](reference_policies_elements_principal.md) – リクエストを行うエンティティ。プリンシパルは、認証後に AWS アカウントでアクションを実行する権限を付与できる人間のユーザー、またはプログラム的なワークロードを表します。
+ [Action](reference_policies_elements_action.md) – 実行されている操作。多くの場合、アクションは API アクションにマッピングされます。
+ [Resource](reference_policies_elements_resource.md) – アクションが実行されている AWS リソース。
+ [Condition](reference_policies_elements_condition.md) – リクエストが許可されるために満たす必要がある追加の制約。

以下は、PARC モデルがリクエストコンテキストを表す方法の例です。

```
Principal: AIDA123456789EXAMPLE
Action: s3:CreateBucket
Resource: arn:aws:s3:::amzn-s3-demo-bucket1
Context:
- aws:UserId=AIDA123456789EXAMPLE:BobsSession
- aws:PrincipalAccount=123456789012
- aws:PrincipalOrgId=o-example
- aws:PrincipalARN=arn:aws:iam::AIDA123456789EXAMPLE:role/HR
- aws:MultiFactorAuthPresent=true
- aws:CurrentTime=...
- aws:EpochTime=...
- aws:SourceIp=...
- aws:PrincipalTag/dept=123
- aws:PrincipalTag/project=blue
- aws:RequestTag/dept=123
```

## リクエストコンテキストの重要性
<a name="reqcontext_importance"></a>

リクエストコンテキストと、リクエストコンテキストがポリシー評価と連携する方法を理解することは、以下を行う上で重要です。
+ アクセス問題のトラブルシューティング 
+ 効果的でセキュアなポリシーの設計
+ ポリシーが付与する許可の全範囲の把握
+ さまざまなシナリオでのポリシー評価結果の予測

PARC モデルを使用してリクエストコンテキストを視覚化することで、AWS が承認判断を行う方法をより簡単に理解し、ポリシーをより効果的に設計することができます。

## AWS がリクエストコンテキストを使用する方法
<a name="reqcontext_usage"></a>

AWS がポリシーを評価するときは、リクエストコンテキスト内の情報を、該当するすべてのポリシーで指定されている情報と比較します。これには、ID ベースのポリシー、リソースベースのポリシー、IAM アクセス許可の境界、Organizations SCP、Organizations RCP、セッションポリシーが含まれます。

各ポリシータイプについて、AWS はリクエストコンテキストを使用して以下を確認します。
+ プリンシパルに基づくリクエストにポリシーが適用されるかどうか。
+ リクエストされたアクションが指定されたリソースで許可されているかどうか。
+ リクエストコンテキストがポリシーで指定された条件を満たしているかどうか。

AWS によるポリシーの評価方法は、リクエストコンテキストに適用するポリシーのタイプによって異なります。これらのポリシータイプは、単一の AWS アカウント内での利用が可能です。これらのポリシータイプの詳細については、「[AWS Identity and Access Management でのポリシーとアクセス許可](access_policies.md)」をご参照ください。AWS がクロスアカウントアクセスのポリシーを評価する方法については、「[クロスアカウントポリシーの評価論理](reference_policies_evaluation-logic-cross-account.md)」を参照してください。
+ **AWS Organizations リソース制御ポリシー（RCP）** – AWS Organizations RCPは、組織または組織単位 (OU) のアカウント内のリソースについて使用できる最大の許可を指定します。RCP はメンバーアカウントのリソースに適用され、プリンシパルが組織に属しているかどうかにかかわらず、AWS アカウントのルートユーザー を含むプリンシパルの有効な許可に影響を及ぼします。RCP は、組織管理アカウントのリソースや、サービスにリンクされたロールによって実行された呼び出しには適用されません。RCP が存在する場合、ID ベースのポリシーおよびリソースベースのポリシーによってメンバーアカウント内のリソースに付与された許可は、RCP がアクションを許可する場合にのみ有効です。
+ **AWS Organizations サービスコントロールポリシー (SCP)** – AWS Organizations SCP は、組織または組織単位 (OU) のアカウント内のプリンシパルのために使用可能な最大の許可を指定します。SCP は、各 AWS アカウントのルートユーザー を含むメンバーアカウントのプリンシパルに適用されます。SCP が存在する場合、ID ベースのポリシーおよびリソースベースのポリシーによってメンバーアカウントのプリンシパルに付与された許可は、SCP がアクションを許可する場合にのみ有効です。唯一の例外は、組織管理アカウントとサービスにリンクされたロールのプリンシパルです。
+ **リソースベースのポリシー** – リソースベースのポリシーは、ポリシーで指定されたプリンシパルの許可を付与します。このアクセス許可では、ポリシーがアタッチされているリソースに対してプリンシパルが実行できる操作を定義します。
+ **アクセス許可の境界** – アクセス許可の境界は、ID ベースのポリシーが IAM エンティティ (ユーザーまたはロール) に付与できる許可の上限を設定する機能です。エンティティのアクセス許可の境界を設定した場合、エンティティは、ID ベースのポリシーとそのアクセス許可の境界の両方で許可されている許可のみ実行できます。アクセス許可の境界で暗黙的に拒否しても、リソースベースのポリシーによって付与されるアクセス許可は制限される場合もあります。詳細については、「[AWS エンフォースメントコードロジックがリクエストを評価してアクセスを許可または拒否する方法](reference_policies_evaluation-logic_policy-eval-denyallow.md)」を参照してください。
+ **ID ベースのポリシー** — アイデンティティベースのポリシーは IAM ID (ユーザー、ユーザーのグループ、またはロール) にアタッチされており、アクセス許可を IAM エンティティ (ユーザーおよびロール) にアタッチします。リクエストにアイデンティティベースのポリシーのみ、リクエストに適用された場合、AWS では、それらのすべてのポリシーに少なくとも 1 つ `Allow` がないか確認します。
+ **セッションポリシー** – セッションポリシーは、ロールまたはフェデレーションユーザーのセッションに一時的なセッションをプログラムで作成する際、パラメータとして渡すポリシーです。ロールセッションをプログラムで作成するには、`AssumeRole*` API オペレーションのいずれかを使用します。これを行い、セッションポリシーに合格すると、結果として得られるセッションのアクセス許可は、IAM エンティティの ID ベースのポリシーとセッションポリシーの共通部分です。フェデレーションユーザーのセッションを作成するには、IAM ユーザーのアクセスキーを使用して、API の `GetFederationToken` オペレーションをプログラムで呼び出します。詳細については、「[セッションポリシー](access_policies.md#policies_session)」を参照してください。

これらのポリシーのいずれかを明示的に拒否した場合、その許可は無効になる点に注意してください。

**注記**  
**AWS Organizations 宣言型ポリシー**を使用すると、組織全体で特定の AWS のサービス に必要な設定を一元的に宣言して適用できます。宣言型ポリシーはサービスレベルで直接適用されるため、ポリシー評価リクエストに直接影響を与えず、リクエストコンテキストには含まれません。詳細については、「AWS Organizations IAM ユーザーガイド」の「[ 管理されたポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)」を参照してください。

## PARC モデルを使用したポリシー評価の例
<a name="reqcontext_example"></a>

リクエストコンテキストがポリシー評価とどのように連携するかを説明するために、ポリシー例を検討しましょう。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:CreateBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/dept": "123"
        }
      }
    }
  ]
}
```

------

この例では、リクエストコンテキストに「123」の `aws:PrincipalTag/dept` 値が含まれ、リソースが `amzn-s3-demo-bucket1` バケット名と一致する場合にのみ、ポリシーが `CreateBucket` アクションを許可します。以下の表は、AWS がリクエストコンテキストを使用してこのポリシーを評価し、承認判断を行う方法を示しています。


| ポリシー | リクエストコンテキスト | 評価結果 | 
| --- | --- | --- | 
| <pre>"StringEquals": {<br />    "aws:PrincipalTag/dept": "123"<br />}</pre>  |  <pre>Principal: AIDA123456789EXAMPLE<br />Action: s3:CreateBucket<br />Resource: arn:aws:s3:::amzn-s3-demo-bucket1<br />Context:  <br />    - aws:PrincipalTag/dept=123</pre>  | **一致** | 
| <pre>"StringEquals": {<br />    "aws:PrincipalTag/dept": "123"<br />}</pre>  |  <pre>Principal: AIDA123456789EXAMPLE<br />Action: s3:DeleteBucket<br />Resource: arn:aws:s3:::amzn-s3-demo-bucket1<br />Context:  <br />    - aws:PrincipalTag/dept=123</pre>  | **一致なし** | 
| <pre>"StringEquals": {<br />    "aws:PrincipalTag/dept": "123"<br />}</pre>  |  <pre>Principal: AIDA123456789EXAMPLE<br />Action: s3:CreateBucket<br />Resource: arn:aws:s3:::amzn-s3-demo-bucket1<br />Context:  <br />    - aws:PrincipalTag/dept=321</pre>  | **一致なし** | 
| <pre>"StringEquals": {<br />    "aws:PrincipalTag/dept": "123"<br />}</pre>  |  <pre>Principal: AIDA123456789EXAMPLE<br />Action: s3:CreateBucket<br />Resource: arn:aws:s3:::amzn-s3-demo-bucket1<br />Context:</pre> リクエストに `aws:PrincipalTag` はありません。  | **一致なし** | 

# AWS エンフォースメントコードロジックがリクエストを評価してアクセスを許可または拒否する方法
<a name="reference_policies_evaluation-logic_policy-eval-denyallow"></a>

AWS エンフォースメントコードは、AWS に送信されるリクエストを許可するか拒否するかどうかを決定します。AWS は、リクエストコンテキストに適用されるすべてのポリシーを評価します。AWS ポリシー評価ロジックの概要を次に示します。
+ デフォルトでは、フルアクセスを持つ AWS アカウントのルートユーザー 以外は、すべてのリクエストが暗示的に拒否されます。
+ リクエストが許可されるには、以下の評価ロジックに従って、ポリシー、または一連のポリシーによって明示的に許可される必要があります。
+ 明示的な拒否は明示的な許可をオーバーライドします。

ポリシーの評価は、リクエストが 1 つのアカウント内にあるか、クロスアカウントリクエスト内にあるかによって異なる場合があります。単一のアカウント内の IAM ロールまたはユーザーに対してポリシー評価の決定を行う方法の詳細については、「[単一のアカウント内のリクエストのポリシー評価](reference_policies_evaluation-logic_policy-eval-basics.md)」を参照してください。クロスアカウントリクエストのポリシー評価判定方法の詳細については、「[クロスアカウントポリシーの評価論理](reference_policies_evaluation-logic-cross-account.md)」を参照してください。
+ **拒否の評価** – デフォルトでは、すべてのリクエストが拒否されます。これは[暗黙的な拒否](reference_policies_evaluation-logic_AccessPolicyLanguage_Interplay.md)と呼ばれます。AWS エンフォースメントコードでは、リクエストに適用されるアカウント内のすべてのポリシーを評価します。このポリシータイプには、AWS Organizations SCP および RCP、リソースベースのポリシー、ID ベースのポリシー、IAM アクセス許可の境界、セッションポリシーなどがあります。エンフォースメントコードでは、すべての該当するポリシーでリクエストに適用される `Deny` ステートメントを探します。このプロセスは[明示的な拒否](reference_policies_evaluation-logic_AccessPolicyLanguage_Interplay.md)と呼ばれています。エンフォースメントコードは、適用される明示的な拒否が 1 つでも見つかると、**Deny** の最終決定を返します。明示的な拒否がない場合は、エンフォースメントコードの評価は続行されます。
+ **AWS Organizations RCP** – エンフォースメントコードは、リクエストに適用される AWS Organizations リソースコントロールポリシー (RCP) を評価します。RCP は、RCP がアタッチされているアカウントのリソースに適用されます。エンフォースメントコードが RCP で該当する `Allow` ステートメントを見つけられない場合、エンフォースメントコードは **Deny** の最終決定を返します。RCP が有効化されると、`RCPFullAWSAccess` という AWS マネージドポリシーが自動的に作成され、ルート、各 OU、AWS アカウント を含む組織内のすべてのエンティティにアタッチされることに注意してください。 `RCPFullAWSAccess` はデタッチできないため、常に `Allow` ステートメントになります。RCP がない場合、または RCP により、リクエストされたアクションが許可された場合は、エンフォースメントコードの評価が続行されます。
+ **AWS Organizations SCP** - エンフォースメントコードは、リクエストに適用する AWS Organizations サービスコントロールポリシー (SCP) を評価します。SCP は、SCP がアタッチされているアカウントのプリンシパルに適用されます。エンフォースメントコードが SCP で該当する `Allow` ステートメントを見つけられない場合、エンフォースメントコードは **Deny** の最終決定を返します。SCP がない場合、または SCP により、リクエストされたアクションが許可された場合は、エンフォースメントコードが続行されます。
+ **リソースベースのポリシー** - 同じアカウント内でも、リソースにアクセスするプリンシパルのタイプと、リソースベースのポリシーで許可されるプリンシパルに応じて、リソースベースのポリシーはポリシーの評価に異なる影響を与えます。リソースベースのポリシーの `Allow` は、ID ベースのポリシー、アクセス許可の境界、またはセッションポリシーに潜在的な拒否があったとしても、プリンシパルのタイプに応じて最終的には `Allow` に決定されます。

  ほとんどのリソースの場合、アクセスを付与するために必要なのは、ID ベースのポリシーまたはリソースベースのポリシーのいずれかにおけるプリンシパルのための明示的な `Allow` のみです。[IAM ロール信頼ポリシー](access_policies-cross-account-resource-access.md#access_policies-cross-account-delegating-resource-based-policies)と [KMS キーポリシー](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)は、[プリンシパル](reference_policies_elements_principal.md)へのアクセスを明示的に許可する必要があるため、このロジックの例外です。IAM および AWS KMS 以外のサービスのリソースベースのポリシーでは、アクセスを許可するために同じアカウント内の明示的な `Allow` ステートメントが必要になる場合もあります。詳細については、ご使用している特定のサービスのドキュメントを参照してください。

  単一アカウントポリシーの評価リクエストでは、指定されたプリンシパルが IAM ユーザー、IAM ロール、またはセッションプリンシパルである場合、リソースベースのポリシーのロジックは他のポリシータイプとは異なります。セッションプリンシパルには、[IAM ロールセッション](reference_policies_elements_principal.md#principal-role-session)または[AWS STS フェデレーションユーザーのプリンシパル](reference_policies_elements_principal.md#sts-session-principals)が含まれます。リソースベースのポリシーが、リクエストを作成している IAM ユーザーまたはセッションプリンシパルに直接アクセス許可を付与する場合、ID ベースのポリシー、アクセス許可の境界、またはセッションポリシーで暗黙的な拒否が最終的な決定に影響を与えることはありません。
  + **IAM ロール**— IAM ロール ARN にアクセス許可を与えるリソースベースのポリシーは、アクセス許可の境界またはセッションポリシーの暗黙的な拒否によって制限されます。ロール ARN はプリンシパル要素または `aws:PrincipalArn` 条件キーで指定できます。どちらの場合も、リクエストを行うプリンシパルは **IAM ロールセッション**です。

    アイデンティティベースのポリシーに明示的な拒否が含まれている場合を除き、アクセス許可の境界とセッションポリシーは、プリンシパル要素で、ワイルドカード (\$1) を含む `aws:PrincipalArn` 条件キーを使用して付与されたアクセス許可を制限することはありません。詳細については、「[IAM ロールプリンシパル](reference_policies_elements_principal.md#principal-roles)」を参照してください。

    **ロール ARN の例**

    ```
    arn:aws:iam::111122223333:role/examplerole
    ```
  + **IAM ロールセッション** — 同じアカウント内で、IAM ロールセッション ARN にアクセス許可を与えるリソースベースのポリシーは、引き受けたロールセッションに、直接アクセス許可を与えます。セッションに直接付与されるアクセス許可は、ID ベースのポリシー、アクセス許可の境界、またはセッションポリシーの暗黙的な拒否によって制限されません。ロールを引き受けてリクエストを行う場合、リクエストを行うプリンシパルは IAM ロールセッション ARN であり、ロールそれ自体の ARN ではありません。詳細については、「[ロールセッションプリンシパル](reference_policies_elements_principal.md#principal-role-session)」を参照してください。

    **ロールセッション ARN の例**

    ```
    arn:aws:sts::111122223333:assumed-role/examplerole/examplerolesessionname
    ```
  + **IAM ユーザー** — 同じアカウント内では、IAM ユーザー ARN (フェデレーティッドユーザーセッションではない) へのアクセス許可を与えているリソースベースのポリシーは、ID ベースのポリシーまたはアクセス許可の境界による、暗黙的な拒否によって制限されません。

    **IAM ユーザー ARNの例**

    ```
    arn:aws:iam::111122223333:user/exampleuser
    ```
  + **AWS STS フェデレーションユーザーのプリンシパル** – フェデレーションユーザーのセッションは、[`GetFederationToken`](id_credentials_temp_request.md#api_getfederationtoken) を呼び出すことで作成されるセッションです。フェデレーティッドユーザーがリクエストを行う場合、リクエストを行うプリンシパルはフェデレーティッドユーザー ARN であり、フェデレーションした IAM ユーザーの ARN ではありません。同じアカウント内で、フェデレーティッドユーザー ARN にアクセス許可を与えるリソースベースのポリシーは、セッションに直接アクセス許可を与えます。セッションに直接付与されるアクセス許可は、ID ベースのポリシー、アクセス許可の境界、またはセッションポリシーの暗黙的な拒否によって制限されません。

    ただし、リソースベースのポリシーがフェデレーションした IAM ユーザーの ARN にアクセス許可を与える場合、セッション中にフェデレーティッドユーザーによって行われたリクエストは、アクセス許可の境界またはセッションポリシーの、暗黙的な拒否によって制限されます。

    **フェデレーションユーザーのセッション ARN の例**

    ```
    arn:aws:sts::111122223333:federated-user/exampleuser
    ```
+ **ID ベースのポリシー** – エンフォースメントコードは、プリンシパルのID ベースのポリシーをチェックします。IAM ユーザーの場合は、ユーザーポリシーや、ユーザーが属するグループのポリシーが含まれます。ID ベースのポリシーが無いか、ID ベースのポリシーにリクエストされたアクションを許可するステートメントがない場合、そのリクエストは暗黙的に拒否され、エンフォースメントコードは **Deny** の最終決定を返します。該当する ID ベースのポリシーのステートメントで、リクエストされたアクションが許可されている場合、コードの評価は続行されます。
+ **IAM アクセス許可の境界** – エンフォースメントコードは、プリンシパルによって使用されている IAM エンティティにアクセス許可の境界があるかどうかをチェックします。アクセス許可の境界の設定に使用されているポリシーで、リクエストされたアクションが許可されていない場合、リクエストは明示的に拒否されます。エンフォースメントコードにより、**拒否**の最終決定が返ります。アクセス許可の境界がない場合、またはアクセス許可の境界で、リクエストされたアクションが許可されている場合、コードの評価は続行されます。
+ **セッションポリシー** – エンフォースメントコードは、プリンシパルがセッションプリンシパルかどうかをチェックします。セッションプリンシパルには、IAM ロールセッションまたは AWS STS フェデレーションユーザーのセッションが含まれます。プリンシパルがセッションプリンシパルでない場合、エンフォースメントコードは最終決定で**許可**を返します。

  セッションプリンシパルの場合、エンフォースメントコードは、セッションポリシーがリクエストによって渡されたかどうかをチェックします。AWS CLI または AWS API を使用してロールまたは AWS STS フェデレーションユーザーのプリンシパルに一時的な認証情報を取得しながら、セッションポリシーを渡すことができます。セッションポリシーを渡さなかった場合、デフォルトのセッションポリシーが作成され、エンフォースメントコードは**許可**の最終決定を返します。
  + セッションポリシーが存在し、リクエストされたアクションが許可されていない場合、そのリクエストは暗示的に拒否されます。エンフォースメントコードにより、**拒否**の最終決定が返ります。
  + エンフォースメントコードは、プリンシパルがロールセッションであるかどうかをチェックします。プリンシパルがロールセッションだった場合、リクエストは**許可**になります。それ以外の場合は、リクエストは暗黙的に拒否され、エンフォースメントコードは最終決定で **Deny** を返します。
  + セッションポリシーが存在し、リクエストされたアクションが許可されている場合は、エンフォースメントコードは最終決定で**許可**を返します。

# 単一のアカウント内のリクエストのポリシー評価
<a name="reference_policies_evaluation-logic_policy-eval-basics"></a>

## IAM ロールのポリシー評価
<a name="policy-eval-basics-single-account-role"></a>

次のフローチャートは、単一のアカウント内の IAM ロールに対してポリシー評価の判定がどのように行われるかに関する詳細を示しています。

![\[単一アカウント内の IAM ロールの評価フローチャート\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/PolicyEvaluationSingleAccountRole.png)


## IAM ユーザーのポリシー評価
<a name="policy-eval-basics-single-account-user"></a>

次のフローチャートは、1 つのアカウント内の IAM ユーザーに対してポリシー評価の判定がどのように行われるかの詳細を示しています。

![\[単一アカウント内の IAM ユーザーの評価フローチャート\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/PolicyevaluationSingleAccountUser.png)


## アイデンティティベースのポリシーおよびリソースベースのポリシーの評価の例
<a name="reference_policies_evaluation-logic_policies_evaluation_example"></a>

最も一般的なポリシータイプは、アイデンティティベースのポリシーとリソースベースのポリシーです。リソースへのアクセスがリクエストされると、同じアカウント内の**少なくとも 1 つの許可**について、AWS はポリシーによって付与されたすべてのアクセス許可を評価します。これらのポリシーのいずれかが明示的に拒否された場合、許可は無効になります。

**重要**  
同じアカウント内の ID ベースのポリシーまたはリソースベースのポリシーの一方がリクエストを許可し、他方が許可しない場合でも、リクエストは許可されます。

Carlos のユーザー名が `carlossalazar` で、ファイルを Amazon S3 バケット `amzn-s3-demo-bucket-carlossalazar-logs` に保存するとします。

また、次のポリシーを IAM ユーザー `carlossalazar` にアタッチするとします。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowS3ListRead",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "AllowS3Self",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-carlossalazar/*",
                "arn:aws:s3:::amzn-s3-demo-bucket-carlossalazar"
            ]
        },
        {
            "Sid": "DenyS3Logs",
            "Effect": "Deny",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::*log*"
        }
    ]
}
```

------

このポリシーの `AllowS3ListRead` ステートメントでは、アカウント内のすべてのバケットを一覧表示することを Carlos に許可します。`AllowS3Self` ステートメントでは、Carlos のユーザー名と同じ名前のバケットに対するフルアクセスを Carlos に許可します。`DenyS3Logs` ステートメントでは、名前に `log` が含まれている S3 バケットへのアクセスを Carlos に拒否します。

さらに、次のリソースベースのポリシー (バケットポリシー) を `amzn-s3-demo-bucket-carlossalazar` バケットにアタッチします。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/carlossalazar"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-carlossalazar/*",
                "arn:aws:s3:::amzn-s3-demo-bucket-carlossalazar"
            ]
        }
    ]
}
```

------

このポリシーでは、`carlossalazar` ユーザーのみが `amzn-s3-demo-bucket-carlossalazar` バケットにアクセスできることを指定します。

Carlos がファイルを `amzn-s3-demo-bucket-carlossalazar-logs` バケットに保存することをリクエストすると、AWS はこのリクエストに適用されるポリシーを決定します。この例では、アイデンティティベースのポリシーとリソースベースのポリシーのみが適用されます。これらは両方ともアクセス許可ポリシーです。アクセス許可の境界は適用されないため、評価ロジックは次のロジックに限定されます。

![\[評価フローチャート\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/EffectivePermissionsShort.png)


AWS は、最初にリクエストのコンテキストに適用される `Deny` ステートメントの有無を確認します。アイデンティティベースのポリシーでは、Carlos に対してログ記録用の S3 バケットへのアクセスが明示的に拒否されるため、該当するステートメントが見つかります。Carlos はアクセスが拒否されます。

彼は間違いに気が付いて、ファイルを `amzn-s3-demo-bucket-carlossalazar` バケットに保存しようとします。AWS は `Deny` ステートメントを探しますが、1 つも見つかりません。次に、アクセス許可ポリシーを確認します。ID ベースのポリシーとリソースベースのポリシーの両方で、リクエストが許可されます。従って、AWS でリクエストが許可されます。どちらでもステートメントが明示的に拒否された場合、リクエストは拒否されます。いずれかのポリシータイプでリクエストが許可され、もう一方では許可されない場合でも、リクエストは許可されます。

# クロスアカウントポリシーの評価論理
<a name="reference_policies_evaluation-logic-cross-account"></a>

1 つのアカウントのプリンシパルが別のアカウントのリソースにアクセスすることを許可できます。これはクロスアカウントアクセスと呼ばれます。クロスアカウントアクセスを許可する場合、プリンシパルが存在するアカウントを*信頼された*アカウントと呼びます。リソースが存在するアカウントは、*信頼する*アカウントです。

クロスアカウントアクセスを許可するには、共有するリソースにリソースベースのポリシーをアタッチします。また、リクエストのプリンシパルとして機能する ID に ID ベースポリシーをアタッチする必要があります。信頼するアカウントのリソースベースのポリシーは、リソースにアクセスできる信頼されるアカウントのプリンシパルを指定する必要があります。アカウント全体またはその IAM ユーザー、AWS STS フェデレーションユーザーのプリンシパル、IAM ロール、引き受けたロールセッションを指定することができます。AWS サービスをプリンシパルとして指定することもできます。詳細については、「[プリンシパルを指定する方法](reference_policies_elements_principal.md#Principal_specifying)」を参照してください。

プリンシパルの ID ベースのポリシーは、信頼するサービスにあるリソースへのリクエストされたアクセスを許可する必要があります。これを実行するには、リソースの ARN を指定します。

IAM では、リソースベースのポリシーをロールにアタッチして、他のアカウントのプリンシパルがその IAM ロールを引き受けることを許可できます。ロールのリソースベースのポリシーは、ロールの信頼ポリシーと呼ばれます。そのロールを引き受けると、許可されたプリンシパルは結果として生じる一時的な認証情報を使用して、アカウント内の複数のリソースにアクセスできます。このアクセスは、ロールの ID ベースのアクセス許可ポリシーで定義されます。ロールを使用したクロスアカウントアクセスの許可と、他のリソースベースのポリシーを使用したクロスアカウントアクセスの許可の違いについては、「[IAM でのクロスアカウントのリソースへのアクセス](access_policies-cross-account-resource-access.md)」を参照してください。

**重要**  
ポリシー評価ロジックに影響を与えるサービスもあります。例えば、AWS Organizations は、1 つ以上のアカウントのプリンシパルとリソースに適用できる[サービスコントロールポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)と[リソースコントロールポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)をサポートします。AWS Resource Access Manager は、共有されているリソースに対してプリンシパルが実行できるアクションを制御する[ポリシーフラグメント](https://docs.aws.amazon.com/ram/latest/userguide/permissions.html)をサポートします。

## クロスアカウントリクエストが許可されているかどうかを確認
<a name="policy-eval-cross-account"></a>

クロスアカウントリクエストの場合、信頼済み `AccountA` のリクエスタには ID ベースのポリシーが必要です。このポリシーでは、信頼する `AccountB` のリソースへのリクエストを許可する必要があります。また、`AccountB` のリソースベースのポリシーを使用して、`AccountA` のリクエスタによるリソースへのアクセスを許可する必要があります。

クロスアカウントリクエストを行うと、AWS は 2 つの評価を実行します。AWS は、信頼するアカウントのリクエストと信頼されるアカウントを評価します。1 つのアカウント内でリクエストが評価される方法の詳細については、「[AWS エンフォースメントコードロジックがリクエストを評価してアクセスを許可または拒否する方法](reference_policies_evaluation-logic_policy-eval-denyallow.md)」を参照してください。リクエストは、両方の評価が `Allow` の決定を返す場合にのみ許可されます。

![\[クロスアカウント評価\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/policy_cross-account-eval-simple.png)


1. あるアカウントのプリンシパルが別のアカウントのリソースにアクセスするためのリクエストを行う場合のリクエストが、クロスアカウントリクエストです。

1. リクエスト元のプリンシパルは、信頼されたアカウント (`AccountA`) に存在します。AWS がこのアカウントを評価すると、ID ベースのポリシー、および ID ベースのポリシーを制限できるすべてのポリシーがチェックされます。詳細については、「[アクセス許可の境界を使用したアイデンティティベースのポリシーの評価](reference_policies_evaluation-logic.md#policy-eval-basics-id-bound)」を参照してください。

1. リクエストされたリソースは、信頼するアカウント (`AccountB`) に存在します。AWS は、このアカウントを評価するときに、リクエストされたリソースにアタッチされているリソースベースのポリシーと、リソースベースのポリシーを制限できるすべてのポリシーがチェックされます。詳細については、「[リソースベースのポリシーを使用したアイデンティティベースのポリシーの評価](reference_policies_evaluation-logic.md#policy-eval-basics-id-rdp)」を参照してください。

1. AWS は、両方のアカウントポリシー評価でリクエストが許可されている場合にのみリクエストを許可します。

次のフローチャートは、クロスアカウントリクエストのポリシー評価の判定がどのように行われるかをより詳細に示しています。繰り返しになりますが、AWS は両方のアカウントポリシー評価でリクエストが許可されている場合にのみリクエストを許可します。

![\[詳細なクロスアカウントポリシーの評価\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/PolicyEvaluationCrossAccount.png)


## クロスアカウントポリシー評価の例
<a name="policies_evaluation_example-cross-account"></a>

次の例は、あるアカウントのロールが、別のアカウントのリソースベースのポリシーによって許可が付与されるシナリオを示しています。

Carlos は、アカウント 111111111111 で `Demo` という名前の IAM ロールを持つデベロッパーであるとします。アカウント 222222222222 の `amzn-s3-demo-bucket-production-logs` Amazon S3 バケットにファイルを保存したいと考えています。

また、次のポリシーを IAM ロール `Demo` にアタッチするとします。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowS3ListRead",
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "*"
        },
        {
            "Sid": "AllowS3ProductionObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object*",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-production/*"
        },
        {
            "Sid": "DenyS3Logs",
            "Effect": "Deny",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::*log*",
                "arn:aws:s3:::*log*/*"
            ]
        }
    ]
}
```

------

このポリシーの `AllowS3ListRead` ステートメントでは、Amazon S3 内のすべてのバケットを一覧表示することを Carlos に許可します。この `AllowS3ProductionObjectActions` ステートメントにより、Carlos に `amzn-s3-demo-bucket-production` バケットへのフルアクセスが許可されます。

さらに、次のリソースベースのポリシー（バケットポリシー）を 222222222222 アカウントの `amzn-s3-demo-bucket-production` バケットにアタッチします。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject*",
                "s3:PutObject*",
                "s3:ReplicateObject",
                "s3:RestoreObject"
            ],
            "Principal": { "AWS": "arn:aws:iam::111111111111:role/Demo" },
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-production/*"
        }
    ]
}
```

------

このポリシーにより、`Demo` ロールは `amzn-s3-demo-bucket-production` バケット内のオブジェクトにアクセスできます。このロールは、バケット内のオブジェクトを作成および編集することはできますが、削除することはできません。ロールはバケット自体を管理できません。

Carlos がファイルを `amzn-s3-demo-bucket-production-logs` バケットに保存することをリクエストすると、AWS はこのリクエストに適用されるポリシーを決定します。この場合、アカウント `111111111111` に適用される唯一のポリシーは、`Demo` ロールにアタッチされた ID ベースのポリシーです。アカウント `222222222222` には、`amzn-s3-demo-bucket-production-logs` バケットにアタッチされたリソースベースのポリシーはありません。AWS がアカウント `111111111111` を評価するとき、`Deny` の決定を返します。これは、ID ベースのポリシーの `DenyS3Logs` ステートメントが、ログバケットへのアクセスを明示的に拒否するためです。1 つのアカウント内でリクエストが評価される方法の詳細については、「[AWS エンフォースメントコードロジックがリクエストを評価してアクセスを許可または拒否する方法](reference_policies_evaluation-logic_policy-eval-denyallow.md)」を参照してください。

リクエストはいずれかのアカウントで明示的に拒否されるため、最終的な決定はリクエストを拒否することです。

![\[amzn-s3-demo-bucket-production-logs バケットへのリクエスト\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/policy_cross-account-eval-example.png)


Carlos は、その後、間違いに気付き、`Production` バケットにファイルを保存しようとするとします。AWS は、最初にアカウント `111111111111` をチェックし、リクエストが許可されるかどうかを判断します。ID ベースのポリシーのみが適用され、リクエストが許可されます。次に、AWS はアカウント `222222222222` をチェックします。`Production` バケットにアタッチされたリソースベースのポリシーのみが適用され、リクエストが許可されます。両方のアカウントがリクエストを許可するため、最終的な決定はリクエストを許可することです。

![\[本稼働バケットへのリクエスト\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/policy_cross-account-eval-example-correct.png)


# 明示的な拒否と暗黙的な拒否の違い
<a name="reference_policies_evaluation-logic_AccessPolicyLanguage_Interplay"></a>

該当するポリシーに `Deny` ステートメントが含まれている場合、リクエストは明示的に拒否されます。リクエストに適用されるポリシーに `Allow` ステートメントと `Deny` ステートメントが含まれている場合は、`Deny` ステートメントが `Allow` ステートメントより優先されます。リクエストは明示的に拒否されます。

該当する `Deny` ステートメントがなく、該当する `Allow` ステートメントもない場合は、暗黙的な拒否が発生します。IAM プリンシパルは、デフォルトでアクセスが拒否されされるため、アクションを実行するには明示的に許可を受ける必要があります。そうでない場合は、アクセスは暗黙的に拒否されます。

承認戦略を設計する場合、プリンシパルのリクエストを成功させるには、作成するポリシーに `Allow` ステートメントを含める必要があります。ただし、明示的な拒否と暗黙的な拒否の任意の組み合わせを選択できます。

例えば、許可されたアクション、暗黙的に拒否されたアクション、および明示的に拒否されたアクションを含む、次のポリシーを作成できます。`AllowGetList` ステートメントは、`Get` または `List` プレフィックスで始まる IAM アクションに対して、読み取り専用のアクセスを**許可**します。`iam:CreatePolicy` など、IAM の他のすべてのアクションは、**暗黙的に拒否**されます。`DenyReports` ステートメントは、`iam:GetOrganizationsAccessReport` などの`Report` サフィックスを含むアクションへのアクセスを拒否することで、IAM レポートへのアクセスを**明示的に拒否**します。誰かがこのプリンシパルに別のポリシーを追加して、`iam:GenerateCredentialReport` などのIAM レポートへのアクセス許可を付与した場合は、この明示的拒否のために、レポート関連のリクエストは引き続き拒否されます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowGetList",
            "Effect": "Allow",
            "Action": [
                "iam:Get*",
                "iam:List*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "DenyReports",
            "Effect": "Deny",
            "Action": "iam:*Report",
            "Resource": "*"
        }
    ]
}
```

------

# IAM JSON ポリシー言語の文法
<a name="reference_policies_grammar"></a>

このページでは、IAM で JSON ポリシーを作成する際に使用する言語の正式な文法を示します。ポリシーを構築および検証する方法を理解できるようにするために、この文法を示しています。

ポリシーの例については、以下のトピックを参照してください。
+ [AWS Identity and Access Management でのポリシーとアクセス許可](access_policies.md)
+ [IAM アイデンティティベースのポリシーの例](access_policies_examples.md)
+ 「Amazon EC2 ユーザーガイド」の「[Amazon EC2 コンソールで機能するサンプル ポリシー](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-ec2-console.html)」と「[AWS CLI (Amazon EC2 CLI) または AWS SDK で使用するサンプルポリシー](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html)」。
+  [Amazon Simple Storage Service ユーザーガイド](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)の*バケットポリシーの例*と[ユーザーポリシーの例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-policies-s3.html)。

その他の AWS サービスで使用されるポリシーの例については、各サービスのドキュメントを参照してください。

**Topics**
+ [

## ポリシー言語と JSON
](#policies-grammar-json)
+ [

## この文法で使用される表記規則
](#policies-grammar-conventions)
+ [

## 文法
](#policies-grammar-bnf)
+ [

## ポリシーの文法に関する注意事項
](#policies-grammar-notes)

## ポリシー言語と JSON
<a name="policies-grammar-json"></a>

ポリシーは、JSON 形式で表されます。JSON ポリシーを作成または編集するときに、IAM はポリシー検証を実行し、効果的なポリシーを作成するのに役立ちます。IAM は JSON 構文エラーを識別します。一方、IAM Access Analyzer は、ポリシーをさらに絞り込むのに役立つ推奨事項を含む追加のポリシーチェックを提供します。ポリシーの検証の詳細については、「[IAM ポリシーの検証](access_policies_policy-validator.md)」を参照してください。。IAM Access Analyzer ポリシーチェックと実用的な推奨事項の詳細については、「[IAM Access Analyzer ポリシーの検証](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)」を参照してください。

このドキュメントでは、有効な JSON の構成内容については詳しく説明しません。ただし、基本的な JSON のルールをいくつか紹介します。
+ 個々のエンティティ間の空白文字は許可されています。
+ 値は引用符で囲みます。数値やブール値の場合、引用符は省略できます。
+ 多くの要素 (たとえば、`action_string_list` や `resource_string_list`) で、値として JSON 配列を使用できます。配列では 1 つまたは複数の値を使用できます。複数の値が含まれている場合、配列は次の例のように、角括弧 (`[` と `]`) で囲まれ、カンマで区切られます。

  `"Action" : ["ec2:Describe*","ec2:List*"]`
+ 基本的な JSON のデータ型 (ブール値、数値、文字列) は [RFC 7159](https://datatracker.ietf.org/doc/html/rfc7159) で定義されています。

## この文法で使用される表記規則
<a name="policies-grammar-conventions"></a>

この文法では、以下の表記規則が使用されます。
+ 以下の文字は JSON のトークンであり、ポリシーに*含まれます*。

  `{ } [ ] " , :`
+ 以下の文字は文法の特殊文字であり、ポリシーには*含まれません*。

  `= < > ( ) |`
+ 要素で複数の値を使用できる場合、繰り返し値、カンマ区切り文字、および省略符号 (`...`) で示されます。例:

  `[<action_string>, <action_string>, ...]`

  `<principal_map> = { <principal_map_entry>, <principal_map_entry>, ... }`

  複数の値が許可されている場合、値が 1 つだけ含むことも有効です。値が 1 つだけである場合、末尾のカンマは省略する必要があります。要素で配列（[ と ] で表される）を使用する場合、含まれている値が 1 つだけであるときは、角括弧を省略できます。例:

  `"Action": [<action_string>]`

  `"Action": <action_string>`
+ 要素に続く疑問符 (`?`) は、その要素が省略できることを示します。例: 

  <`version_block?>`

  ただし、省略可能な要素の詳細については、文法の一覧の後に続く注意事項を参照してください。
+ 要素間の縦棒 (`|`) は選択肢を示します。この文法では、括弧は選択肢の範囲を定義します。例:

  `("Principal" | "NotPrincipal")` 
+ リテラル文字列にする必要がある要素は二重引用符 (`"`) で囲まれます。例:

  `<version_block> = "Version" : ("2008-10-17" | "2012-10-17" )`

その他の注意事項については、文法の一覧の後にある「[ポリシーの文法に関する注意事項](#policies-grammar-notes)」を参照してください。

## 文法
<a name="policies-grammar-bnf"></a>

以下の一覧では、ポリシー言語の文法について説明します。この一覧で使用されている表記規則については、前のセクションを参照してください。詳細については、後に示されている注意事項を参照してください。

**注記**  
この文法では、`2008-10-17 ` と `2012-10-17 ` のバージョンでマークされているポリシーについて説明します。`Version` ポリシー要素は、ポリシーバージョンとは異なります。`Version` ポリシー要素は、ポリシー内で使用され、ポリシー言語のバージョンを定義します。一方で、ポリシーバージョンは、IAM でカスタマー管理ポリシーを変更すると作成されます。変更されたポリシーによって既存のポリシーが上書きされることはありません。代わりに、IAM は管理ポリシーの新しいバージョンを作成します。`Version` ポリシー要素の詳細については、「[IAM JSON ポリシー要素Version](reference_policies_elements_version.md)」を参照してください。ポリシーのバージョンの詳細については、「[IAM ポリシーのバージョニング](access_policies_managed-versioning.md)」を参照してください。

```
policy  = {
     <version_block?>,
     <id_block?>,
     <statement_block>
}

<version_block> = "Version" : ("2008-10-17"		 	 	  | "2012-10-17"		 	 	 )

<id_block> = "Id" : <policy_id_string>

<statement_block> = "Statement" : [ <statement>, <statement>, ... ]

<statement> = { 
    <sid_block?>,
    <principal_block?>,
    <effect_block>,
    <action_block>,
    <resource_block>,
    <condition_block?>
}

<sid_block> = "Sid" : <sid_string>

<effect_block> = "Effect" : ("Allow" | "Deny")  

<principal_block> = ("Principal" | "NotPrincipal") : ("*" | <principal_map>)

<principal_map> = { <principal_map_entry>, <principal_map_entry>, ... }

<principal_map_entry> = ("AWS" | "Federated" | "Service" | "CanonicalUser") :   
    [<principal_id_string>, <principal_id_string>, ...]

<action_block> = ("Action" | "NotAction") : 
    ("*" | <action_string> | [<action_string>, <action_string>, ...])

<resource_block> = ("Resource" | "NotResource") : 
    : ("*" | <resource_string> | [<resource_string>, <resource_string>, ...])

<condition_block> = "Condition" : { <condition_map> }
<condition_map> = { 
  <condition_type_string> : { <condition_key_string> : <condition_value_list> },
  <condition_type_string> : { <condition_key_string> : <condition_value_list> }, ...
}  
<condition_value_list> = [<condition_value>, <condition_value>, ...]
<condition_value> = (<condition_value_string> | <condition_value_string> | <condition_value_string>)
```

## ポリシーの文法に関する注意事項
<a name="policies-grammar-notes"></a>
+ 1 つのポリシーにステートメントの配列を含めることができます。
+ ポリシーの最大サイズは 2,048 ～ 10,240 文字で、ポリシーがアタッチされるエンティティによって異なります。詳細については、「[IAM と AWS STSクォータ](reference_iam-quotas.md)」を参照してください。ポリシーのサイズの計算には、空白文字は含まれません。
+ 個々の要素に、同じキーの複数のインスタンスを含めることはできません。たとえば、同じステートメントに `Effect` ブロックを 2 回含めることはできません。
+ ブロックは任意の順序で記述できます。たとえば、ポリシー内で `version_block` が `id_block` の後にあってもかまいません。同様に、ステートメント内で `effect_block`、`principal_block`、`action_block` は任意の順序で記述できます。
+ リソースベースのポリシーでは、`id_block` はオプションです。アイデンティティベースのポリシーに含めることは*できません*。
+ `principal_block` 要素は、リソースベースのポリシー (Amazon S3 のバケットポリシーなど) および IAM ロールの信頼ポリシーでは必須です。アイデンティティベースのポリシーに含めることは*できません*。
+ Amazon S3 バケットポリシーの `principal_map` 要素には、`CanonicalUser` ID を含めることができます。ほとんどのリソースベースのポリシーは、このマッピングをサポートしていません。バケットポリシーでの正規ユーザー ID の使用の詳細については、[Amazon Simple Storage Service ユーザーガイド](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-bucket-user-policy-specifying-principal-intro.html)の「*ポリシーでのプリンシパルの指定の*」を参照してください。
+ 各文字列値（`policy_id_string`、`sid_string`、`principal_id_string`、`action_string`、`resource_string`、`condition_type_string`、`condition_key_string`、および文字列バージョンの `condition_value`）では、それぞれの最小長と最大長の制限、特定の許容値、または必要な内部形式が決まっている場合があります。

### 文字列値に関する注意事項
<a name="policies-grammar-notes-strings"></a>

このセクションでは、ポリシー内の複数の要素で使用される文字列値に関する追加情報を示します。

**`action_string`**  
サービス名前空間、コロン、およびアクション名で構成されます。アクション名にはワイルドカードを含めることができます。例:  

```
"Action":"ec2:StartInstances"

"Action":[
  "ec2:StartInstances",
  "ec2:StopInstances"
]

"Action":"cloudformation:*"

"Action":"*"

"Action":[
  "s3:Get*",
  "s3:List*"
]
```

**`policy_id_string`**  
ポリシーに関する情報をまとめて含める方法を提供します。Amazon SQS や Amazon SNS などの一部のサービスでは、`Id` 要素は予約された方法で使用されます。個々のサービスで制限されていない限り、policy\$1id\$1string には空白文字を含めることができます。一部のサービスでは、この値が AWS アカウント内で一意である必要があります。  
`id_block` は、リソースベースのポリシーでは使用できますが、アイデンティティベースのポリシーでは使用できません。
長さに制限はありません。ただし、この文字列はポリシー全体の長さにカウントされ、全体の長さは制限されます。  

```
"Id":"Admin_Policy"

"Id":"cd3ad3d9-2776-4ef1-a904-4c229d1642ee"
```

**`sid_string`**  
個々のステートメントに関する情報含める方法を提供します。IAM ポリシーでは、基本的な英数字 (A～Z、a～z、0～9) のみを `Sid` 値に使用できます。リソースポリシーをサポートするその他の AWS サービスでは、`Sid` 値に関して他の要件がある場合があります。例えば、一部のサービスには AWS アカウント 内でこの値が一意であること、スペースなどの追加の文字を `Sid` 値で使用できることです。  

```
"Sid":"1" 

"Sid": "ThisStatementProvidesPermissionsForConsoleAccess"
```

**`principal_id_string`**  
AWS アカウント の [Amazon リソースネーム (ARN)](reference_identifiers.md#identifiers-arns)、IAM ユーザー、IAM ロール、フェデレーションユーザー、または引き受けたロールユーザーを使用してプリンシパルを指定する方法を提供します。AWS アカウント では、完全な ARN の代わりに短縮形 `AWS:accountnumber` を使用できます。AWS のサービス、割り当てられたロールなどを含むすべてのオプションについては、「[プリンシパルを指定する方法](reference_policies_elements_principal.md#Principal_specifying)」を参照してください。  
"すべてのユーザー/匿名ユーザー" を指定するには、\$1 のみを使用できることに注意してください。これを使用して名前または ARN の一部を指定することはできません。

**`resource_string`**  
多くの場合、[Amazon リソースネーム](reference_identifiers.md#identifiers-arns) (ARN) で構成されます。ARN のリソース部分でワイルドカード (\$1 と ?) を使用できます。ARN でのワイルドカードの使用の詳細については、「[パスでのワイルドカードの使用](reference-arns.md#arns-paths-wildcards)」を参照してください。  
アイデンティティベースのポリシーで不完全な ARN (標準の 6 フィールド未満の ARN) を指定すると、AWS では、欠落しているすべてのフィールドにワイルドカード文字 (\$1) が追加されて ARN が自動的に完全な形になります。例えば、`arn:aws:sqs` を指定することは `arn:aws:sqs:*:*:*` に相当します。この場合、すべてのリージョンとアカウントですべての Amazon SQS リソースへのアクセスが許可されます。

```
"Resource":"arn:aws:iam::123456789012:user/Bob"

"Resource":"arn:aws:s3:::amzn-s3-demo-bucket/*"
```

**`condition_type_string`**  
`StringEquals`、`StringLike`、`NumericLessThan`、`DateGreaterThanEquals`、`Bool`、`BinaryEquals`、`IpAddress`、`ArnEquals` など、テストされる条件のタイプを指定します。条件タイプの詳細なリストについては、「[IAM JSON ポリシー要素: 条件演算子](reference_policies_elements_condition_operators.md)」を参照してください。  

```
"Condition": {
  "NumericLessThanEquals": {
    "s3:max-keys": "10"
  }
}

"Condition": {
  "Bool": {
    "aws:SecureTransport": "true"
  }
}

"Condition": {
  "StringEquals": {
      "s3:x-amz-server-side-encryption": "AES256"
   }
}
```

**`condition_key_string`**  
条件が満たされているかどうかを判断するために値がテストされる条件キーを識別します。AWS は、AWS、`aws:PrincipalType`、`aws:SecureTransport`、`aws:userid` を含むすべてのサービスで使用できる条件キーのセットを定義します。  
AWS の条件キーのリストについては、「[AWS グローバル条件コンテキストキー](reference_policies_condition-keys.md)」を参照してください サービスに固有の条件キーについては、以下のようなそのサービスのドキュメントを参照してください。  
+ * Amazon Simple Storage Service ユーザーガイド*の[ポリシーでの条件の指定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazon-s3-policy-keys.html)
+ 「Amazon EC2 ユーザーガイド」の「[Amazon EC2 の IAM ポリシー](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html)」。

```
"Condition":{
  "Bool": {
      "aws:SecureTransport": "true"
   }
}

"Condition": {
  "StringNotEquals": {
      "s3:x-amz-server-side-encryption": "AES256"
   }
}

"Condition": {
  "StringEquals": {
    "aws:ResourceTag/purpose": "test"
  }
}
```

**`condition_value_string`**  
条件が満たされているかどうかを判断する condition\$1key\$1string の値を識別します。条件タイプの有効な値の一覧については、「[IAM JSON ポリシー要素: 条件演算子](reference_policies_elements_condition_operators.md)」を参照してください。  

```
"Condition":{
  "ForAnyValue:StringEquals": {
		"dynamodb:Attributes": [
			"ID",
			"PostDateTime"
  	      ]
  }
}
```

# AWSジョブ機能の 管理ポリシー
<a name="access_policies_job-functions"></a>

[最小権限を付与する](best-practices.md#grant-least-privilege)ポリシーを使用するか、タスクの実行に必要な権限のみを付与することをお勧めします。最小限の権限を付与する最も安全な方法は、チームに必要な権限のみを使用してカスタムポリシーを作成することです。必要に応じて、チームがより多くの権限を要求できるようにプロセスを作成する必要があります。チームに必要な権限のみを提供する [IAM カスタマーマネージドポリシーを作成する](access_policies_create-console.md)には時間と専門知識が必要です。

[AWS マネージドポリシー](access_policies_managed-vs-inline.md#aws-managed-policies) を使用して、IAM ID (ユーザー、ユーザーのグループ、およびロール) へのアクセス許可の追加を開始。AWS 管理ポリシーは一般的な使用例をカバーし、AWS アカウント で利用できます。AWS 管理ポリシーは、最小特権のアクセス許可を付与しません。プリンシパルにジョブに必要な以上のアクセス許可を付与すると、セキュリティ上のリスクを考慮する必要があります。

ジョブ機能を含む AWS 管理ポリシーを任意の IAM ID にアタッチできます。最小特権のアクセス許可に切り替えるには、AWS Identity and Access Management and Access Analyzer を実行して、AWS マネージドポリシーを使用するプリンシパルをモニタリングします。どのアクセス許可を使用しているかを学習したら、カスタムポリシーを作成するか、チームに必要なアクセス許可のみを持つポリシーを生成できます。これは安全性は低くなりますが、チームが AWS をどのように使用しているかを学習するにつれて柔軟性が高まります。

AWSジョブ機能の 管理ポリシーは、IT 業界の一般的なジョブ機能と密接に連携するように設計されています。これらのポリシーを使用すると、特定のジョブ機能を持つ人によるタスクの実行に必要な権限を簡単に付与することができます。これらのポリシーは、多くのサービスの権限を一つのポリシーに統合しているため、権限が様々なポリシーに分散している場合に比べてより作業しやすくなっています。

**ロールを使用してサービスを連動する**  
他の AWS サービスにある機能の活用を促すために IAM サービスのロールを使用するポリシーもあります。これらのポリシーは、`iam:passrole` にアクセス許可を付与します。これによりポリシーが適用されるユーザーは AWS のサービスにロールを渡すことができます。このロールは、お客様に代わってアクションを実行するための IAM アクセス許可を AWS のサービスに委任します。

必要に応じてロールを作成する必要があります。たとえば、ネットワーク管理者のポリシーでは、ポリシーを利用するユーザーは「flow-logs-vpc」というロールを Amazon CloudWatch サービスに渡すことができます。CloudWatch は、そのロールを使用して、ユーザーが作成した VPC の IP トラフィックをログに記録し、キャプチャします。

セキュリティのベスト プラクティスに従うは、渡すことができる有効なロール名を制限するフィルタを、ジョブ機能のポリシーに含めます。これは不要な権限の付与を避けるのに役立ちます。ご自分のユーザーにオプション サービス ロールが必要な場合は、ポリシーで指定されている命名規則に従うロールを作成する必要があります。その後、ロールに権限を付与します。この処理が終わると、ユーザーは、ロールを使用するサービスを設定して、そのロールが提供する権限を付与することができます。

次のセクションでは、各ポリシーの名前は AWS マネジメントコンソール のポリシー詳細ページへのリンクです。ここでは、ポリシードキュメントを表示し、そのポリシーによって付与されるアクセス許可を確認できます。

## 管理者ジョブ関数
<a name="jf_administrator"></a>

**AWS 管理ポリシー名:** [AdministratorAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AdministratorAccess)

**ユースケース:** このユーザーはフルアクセスが許可され、AWS のあらゆるサービスおよびリソースにアクセス許可を委任できます。

**ポリシーの更新** AWSは、このポリシーを維持および更新します。このポリシーの変更履歴については、IAM コンソールでポリシーを表示し、**ポリシーバージョン**タブを選択します。ジョブ関数のポリシーの更新の詳細については、「[ジョブ機能の AWS 管理ポリシー](#security-iam-awsmanpol-jobfunction-updates)」を参照してください。

**ポリシーの詳細:** このポリシーでは、アカウントの AWS のすべてのサービスおよびリソースに対するすべてのアクションを許可します。マネージドポリシーの詳細については、「AWS マネージドポリシーリファレンスガイド」の「[AdministratorAccess](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/AdministratorAccess.html)」を参照してください。

**注記**  
IAM ユーザーまたはロールが、このポリシーのアクセス許可を使用して AWS Billing and Cost Management コンソールにアクセスするには、まず IAM ユーザーおよびロールのアクセスをアクティブ化する必要があります。このためには、「[請求コンソールへのアクセス権の付与](getting-started-account-iam.md)」の指示に従って、請求コンソールへのアクセスを委任します。

## 請求ジョブ関数
<a name="jf_accounts-payable"></a>

**AWS 管理ポリシー名:** [Billing](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/Billing)

**ユースケース:** このユーザーは請求情報の確認、支払いの設定、支払いの承認を行う必要があります。ユーザーは、AWS のサービス全体の累計されたコストをモニタリングできます。

**ポリシーの更新** AWSは、このポリシーを維持および更新します。このポリシーの変更履歴については、IAM コンソールでポリシーを表示し、**ポリシーバージョン**タブを選択します。ジョブ関数のポリシーの更新の詳細については、「[ジョブ機能の AWS 管理ポリシー](#security-iam-awsmanpol-jobfunction-updates)」を参照してください。

**ポリシーの詳細:** このポリシーでは、請求、コスト、支払い方法、予算、レポートを管理するためのフルアクセス許可を付与します。その他のコスト管理ポリシーの例については、「AWS Billing and Cost Management ユーザーガイド」の「[AWS Billing ポリシーの例](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-example-policies.html)」を参照してください。マネージドポリシーの詳細については、「AWS マネージドポリシーリファレンスガイド」の「[Billing](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/Billing.html)」を参照してください。

**注記**  
IAM ユーザーまたはロールが、このポリシーのアクセス許可を使用して AWS Billing and Cost Management コンソールにアクセスするには、まず IAM ユーザーおよびロールのアクセスをアクティブ化する必要があります。このためには、「[請求コンソールへのアクセス権の付与](getting-started-account-iam.md)」の指示に従って、請求コンソールへのアクセスを委任します。

## データベース管理者のジョブ機能
<a name="jf_database-administrator"></a>

**AWS 管理ポリシー名:** [DatabaseAdministrator](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/DatabaseAdministrator)

**ユースケース:** このユーザーは AWS クラウドのデータベースのセットアップ、設定、メンテナンスを行います。

**ポリシーの更新** AWSは、このポリシーを維持および更新します。このポリシーの変更履歴については、IAM コンソールでポリシーを表示し、**ポリシーバージョン**タブを選択します。ジョブ関数のポリシーの更新の詳細については、「[ジョブ機能の AWS 管理ポリシー](#security-iam-awsmanpol-jobfunction-updates)」を参照してください。

**ポリシーの詳細:** このポリシーでは、データベースの作成、設定、メンテナンスを行うためのアクセス許可を付与します。これは、へのアクセスが含まれていますAWSAmazon DynamoDB、Amazon Relational Database Service (RDS)、Amazon Redshift などのデータベースサービスを利用できます。このポリシーがサポートしているデータベースサービスの詳細なリストに対するポリシーを表示します。マネージドポリシーの詳細については、「AWS マネージドポリシーリファレンスガイド」の「[DatabaseAdministrator](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/DatabaseAdministrator.html)」を参照してください。

このジョブ機能ポリシーは、ロールを AWS サービスへ渡す機能をサポートしています。このポリシーは、次の表で示されるロールに対してのみ `iam:PassRole` アクションを許可します。詳細については、このトピックで後述する「[ロールの作成とポリシーのアタッチ (コンソール)](access_policies_job-functions_create-policies.md)」を参照してください。


| ユースケース | ロール名 (\$1 はワイルドカードです) | 選択するサービスロールの種類 | この AWS 管理ポリシーを選択します。 | 
| --- | --- | --- | --- | 
| ユーザーに RDS データベースのモニタリングを許可します | [rds-monitoring-role](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html) | 拡張モニタリング用 Amazon RDS ロール | [AmazonRDSEnhancedMonitoringRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonRDSEnhancedMonitoringRole) | 
| AWS Lambda に、データベースのモニタリングと外部データベースへのアクセスを許可します | [rdbms-lambda-access](https://aws.amazon.com/blogs/big-data/from-sql-to-microservices-integrating-aws-lambda-with-relational-databases) | Amazon EC2 | [AWSLambda\$1FullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSLambda_FullAccess) | 
| Lambda が DynamoDB を使用して Amazon S3 および Amazon Redshift クラスターにファイルをアップロードすることを許可する | [lambda\$1exec\$1role](https://aws.amazon.com/blogs/big-data/a-zero-administration-amazon-redshift-database-loader) | AWS Lambda | [AWS ビッグデータブログ](https://aws.amazon.com/blogs/big-data/a-zero-administration-amazon-redshift-database-loader)で定義されているように新しい管理ポリシーを作成します | 
| Lambda 関数に、DynamoDB テーブルのトリガーとしての動作を許可します | [lambda-dynamodb-\$1](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html) | AWS Lambda | [AWSLambdaDynamoDBExecutionRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaDynamoDBExecutionRole) | 
| Lambda 関数が VPC 内の Amazon RDS へのアクセスを許可する | [lambda-vpc-execution-role](https://docs.aws.amazon.com/lambda/latest/dg/vpc-rds.html) | [AWS Lambda 開発者ガイド](https://docs.aws.amazon.com/lambda/latest/dg/vpc-rds.html) に定義されているように、信頼ポリシーを適用したロールを作成します | [AWSLambdaVPCAccessExecutionRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole) | 
| AWS Data Pipeline に、AWS へのアクセスを許可します | [DataPipelineDefaultRole](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) | [AWS Data Pipeline 開発者ガイド](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) に定義されているように、信頼ポリシーを適用したロールを作成します | AWS Data Pipeline のドキュメントには、このユースケースに必要なアクセス許可が記載されています。「[AWS Data Pipelineの IAM ロール](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html)」を参照してください。 | 
| Amazon EC2 インスタンスで実行されるアプリケーションに、AWS リソースへのアクセスを許可します | [DataPipelineDefaultResourceRole](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) | [AWS Data Pipeline 開発者ガイド](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) に定義されているように、信頼ポリシーを適用したロールを作成します | [AmazonEC2RoleforDataPipelineRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforDataPipelineRole) | 

## データサイエンティストジョブ関数
<a name="jf_data-scientist"></a>

**AWS 管理ポリシー名:** [DataScientist](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/DataScientist)

**ユースケース:** このユーザーは Hadoop ジョブおよびクエリを実行します。このユーザーは、データ分析やビジネスインテリジェンス用の情報にアクセスして分析も行います。

**ポリシーの更新** AWSは、このポリシーを維持および更新します。このポリシーの変更履歴については、IAM コンソールでポリシーを表示し、**ポリシーバージョン**タブを選択します。ジョブ関数のポリシーの更新の詳細については、「[ジョブ機能の AWS 管理ポリシー](#security-iam-awsmanpol-jobfunction-updates)」を参照してください。

**ポリシーの詳細:** このポリシーでは、Amazon EMR クラスターでクエリを作成、管理、実行し、Amazon QuickSight などのツールでデータを分析するアクセス許可を付与します。このポリシーには、追加のデータサイエンティストサービス (AWS Data Pipeline、Amazon EC2、Amazon Kinesis、Amazon Machine Learning、および SageMaker AI など) へのアクセスが含まれます。このポリシーがサポートしているデータサイエンティストサービスの詳細なリストに対するポリシーを表示します。マネージドポリシーの詳細については、「AWS マネージドポリシーリファレンスガイド」の「[DataScientist](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/DataScientist.html)」を参照してください。

このジョブ機能ポリシーは、ロールを AWS サービスへ渡す機能をサポートしています。一方のステートメントは、任意のロールを SageMaker AI に渡すことを許可します。別のステートメントは、次の表で示されるロールに対してのみ `iam:PassRole` アクションを許可します。詳細については、このトピックで後述する「[ロールの作成とポリシーのアタッチ (コンソール)](access_policies_job-functions_create-policies.md)」を参照してください。


| ユースケース | ロール名 (\$1 はワイルドカードです) | 選択するサービスロールの種類 | 選択する AWS 管理ポリシー | 
| --- | --- | --- | --- | 
| Amazon EC2 インスタンスの、クラスターに適したサービスおよびリソースへのアクセスを許可します。 | [EMR-EC2\$1DefaultRole](https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-iam-roles-defaultroles.html) | EC2 の Amazon EMR  | [AmazonElasticMapReduceforEC2Role](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role) | 
| Amazon EMR アクセスを許可して Amazon EC2 サービスおよびクラスターのリソースにアクセスする | [EMR\$1DefaultRole](https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-iam-roles-defaultroles.html) | Amazon EMR | [AmazonEMRServicePolicy\$1v2](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonEMRServicePolicy_v2) | 
| Kinesis Managed Service for Apache Flink を許可してストリーミングデータソースにアクセスする | [kinesis-\$1](https://aws.amazon.com/blogs/big-data/a-zero-administration-amazon-redshift-database-loader) | [AWS ビッグデータブログ](https://aws.amazon.com/blogs/big-data/a-zero-administration-amazon-redshift-database-loader)に定義されているように、信頼ポリシーを適用したロールを作成します。 | ユースケースに応じて選択できる 4 つのオプションの概要については、「[AWS ビッグデータブログ](https://aws.amazon.com/blogs/big-data/a-zero-administration-amazon-redshift-database-loader)」を参照してください。 | 
| AWS Data Pipeline に、AWS へのアクセスを許可します | [DataPipelineDefaultRole](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) | [AWS Data Pipeline 開発者ガイド](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) に定義されているように、信頼ポリシーを適用したロールを作成します | AWS Data Pipeline のドキュメントには、このユースケースに必要なアクセス許可が記載されています。「[AWS Data Pipelineの IAM ロール](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html)」を参照してください。 | 
| Amazon EC2 インスタンスで実行されるアプリケーションに、AWS リソースへのアクセスを許可します | [DataPipelineDefaultResourceRole](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) | [AWS Data Pipeline 開発者ガイド](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) に定義されているように、信頼ポリシーを適用したロールを作成します | [AmazonEC2RoleforDataPipelineRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforDataPipelineRole) | 

## 開発者パワーユーザージョブ機能
<a name="jf_developer-power-user"></a>

**AWS 管理ポリシー名:** [PowerUserAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/PowerUserAccess)

**ユースケース:** このユーザーはアプリケーション開発タスクを実行し、AWS 対応アプリケーションの開発をサポートするリソースとサービスを作成および設定できます。

**ポリシーの更新** AWS: このポリシーを維持および更新します。このポリシーの変更履歴については、IAM コンソールでポリシーを表示し、**ポリシーバージョン**タブを選択します。ジョブ関数のポリシーの更新の詳細については、「[ジョブ機能の AWS 管理ポリシー](#security-iam-awsmanpol-jobfunction-updates)」を参照してください。

**ポリシーの説明:** このポリシーの最初のステートメントでは、[`NotAction`](reference_policies_elements_notaction.md) 要素を使用して、すべての AWS のサービスのすべてのアクションと、すべてのリソース (AWS Identity and Access Management、AWS Organizations、AWS アカウント管理 を除く) のすべてのアクションを許可します。2 つめのステートメントでは、サービスにリンクされたロールを作成する IAM アクセス許可を付与します。これは、別のサービスのリソース (Amazon S3 バケットなど) にアクセスしなければならないサービスに必要です。また、管理アカウントの E メールや組織の制限など、ユーザーの組織に関する情報を表示する AWS Organizations アクセス許可を付与します。このポリシーは、IAM、AWS Organizations を制限しますが、IAM アイデンティティセンターが有効化されている場合には、ユーザーがすべてのIAM アイデンティティセンターアクションを実行できるようにします。また、アカウントに対してどの AWS リージョンが有効か無効かを表示するためのアカウント管理のアクセス許可も付与されます。

## ネットワーク管理者のジョブ機能
<a name="jf_network-administrator"></a>

**AWS 管理ポリシー名:** [NetworkAdministrator](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/NetworkAdministrator)

**ユースケース:** このユーザーは AWS; ネットワークリソースの設定とメンテナンスを担当します。

**ポリシーの更新:** AWS は、このポリシーを維持および更新します。このポリシーの変更履歴については、IAM コンソールでポリシーを表示し、**ポリシーバージョン**タブを選択します。ジョブ関数のポリシーの更新の詳細については、「[ジョブ機能の AWS 管理ポリシー](#security-iam-awsmanpol-jobfunction-updates)」を参照してください。

**ポリシーの説明:**このポリシーは、Auto Scaling、Amazon EC2 、AWS Direct Connect、 Route 53、Amazon CloudFront、Elastic Load Balancing 、AWS Elastic Beanstalk、 Amazon SNS、CloudWatch、CloudWatch Logs、Amazon S3、IAM、Amazon Virtual PrivateCloud でネットワークリソースを作成および維持するためのアクセス許可を付与します 。マネージドポリシーの詳細については、「AWS マネージドポリシーリファレンスガイド」の「[NetworkAdministrator](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/NetworkAdministrator.html)」を参照してください。

このジョブ機能には、ロールを AWS サービスへ渡す機能が必要です。このポリシーは、次の表で指定されたロールに対してのみ `iam:GetRole` と `iam:PassRole` を付与します。詳細については、このトピックで後述する「[ロールの作成とポリシーのアタッチ (コンソール)](access_policies_job-functions_create-policies.md)」を参照してください。


| ユースケース | ロール名 (\$1 はワイルドカードです) | 選択するサービスロールの種類 | 選択する AWS 管理ポリシー | 
| --- | --- | --- | --- | 
| Amazon VPC に、ユーザーに代わって CloudWatch Logs でログを作成および管理し、VPC を出入りする IP トラフィックをモニタリングするのを許可します | [flow-logs-\$1](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-logs-iam) | [ Amazon VPC ユーザーガイド](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-logs-iam)に定義されているように、信頼ポリシーを適用したロールを作成します。 | このユースケースには、既存の AWS 管理ポリシーがありませんが、ドキュメントには必要な権限が記載されています。[Amazon VPC User Guide](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-logs-iam) を参照してください。 | 

## 読み取り専用アクセス
<a name="awsmp_readonlyaccess"></a>

**AWS 管理ポリシー名:** [ReadOnlyAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/ReadOnlyAccess)

**ユースケース:** このユーザーには、AWS アカウント のすべてのリソースへの読み取り専用アクセス権が必要です。

**重要**  
このユーザーは、Amazon S3 バケットや Amazon DynamoDB テーブルなどのストレージサービスでデータを読み取ることもできます。

**ポリシーの更新** AWSは、このポリシーを維持および更新します。このポリシーの変更履歴については、IAM コンソールでポリシーを表示し、**ポリシーバージョン**タブを選択します。ジョブ関数のポリシーの更新の詳細については、「[ジョブ機能の AWS 管理ポリシー](#security-iam-awsmanpol-jobfunction-updates)」を参照してください。

**ポリシーの説明:**このポリシーは、リソースとその属性を一覧表示、取得、説明、その他の表示するためのアクセス許可を付与します。これは、作成や削除のような突然変異機能が含まれていません。このポリシーには、AWS や AWS Identity and Access Management などのセキュリティ関連の AWS Billing and Cost Management サービスへの読み取り専用アクセスが含まれています。このポリシーがサポートしているデータベースサービスの詳細なリストに対するポリシーを表示します。マネージドポリシーの詳細については、「AWS マネージドポリシーリファレンスガイド」の「[ReadOnlyAccess](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/ReadOnlyAccess.html)」を参照してください。ストレージサービス内のデータの読み取りアクセスを許可しない同様のポリシーが必要な場合は、「[閲覧専用ユーザージョブ関数](#jf_view-only-user)」を参照してください。

## MCP サービスアクションのフルアクセス
<a name="jf_mcp-service-actions"></a>

**AWS マネージドポリシー名:** [AWSMcpServiceActionsFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSMcpServiceActionsFullAccess)

**ユースケース:** このユーザーは AWS サービスに AWS MCP サーバーを使ってアクセスする必要があります。このポリシーは、MCP サービスが実行したアクションへのアクセス許可を、他の AWS サービスに付与しません。

**ポリシーの更新** AWSは、このポリシーを維持および更新します。このポリシーの変更履歴については、IAM コンソールでポリシーを表示し、**ポリシーバージョン**タブを選択します。ジョブ関数のポリシーの更新の詳細については、「[ジョブ機能の AWS 管理ポリシー](#security-iam-awsmanpol-jobfunction-updates)」を参照してください。

**ポリシーの説明:** このポリシーは、任意の AWS MCP サービスアクションを呼び出すためのアクセス許可を付与します。アクセス許可を AWS MCP サービスごとに指定する必要がないときに使用できます。MCP サービスが実行するアクションに対するアクセス許可は、他の AWS サービスに付与されません。これらのアクセス許可は、MCP サービスのアクションに加えて、必ず個別に付与する必要があります。マネージドポリシーの詳細については、「*AWS マネージドポリシーリファレンスガイド*」の「[AWSMcpServiceActionsFullAccess](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/AWSMcpServiceActionsFullAccess.html)」を参照してください。

## セキュリティ監査ジョブ機能
<a name="jf_security-auditor"></a>

**AWS 管理ポリシー名:** [SecurityAudit](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/SecurityAudit)

**ユースケース:** このユーザーはセキュリティ要件の遵守についてアカウントをモニタリングします。このユーザーは、潜在的なセキュリティ侵害や悪意のある行為を調査するためのログおよびイベントにアクセスできます。

**ポリシーの更新:** AWS は、このポリシーを維持および更新します。このポリシーの変更履歴については、IAM コンソールでポリシーを表示し、**ポリシーバージョン**タブを選択します。ジョブ関数のポリシーの更新の詳細については、「[ジョブ機能の AWS 管理ポリシー](#security-iam-awsmanpol-jobfunction-updates)」を参照してください。

**ポリシーの詳細:** このポリシーでは、AWS の多数のサービスの設定データを表示し、それらのログを確認するアクセス許可を付与します。マネージドポリシーの詳細については、「AWS マネージドポリシーリファレンスガイド」の「[SecurityAudit](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/SecurityAudit.html)」を参照してください。

## Support ユーザジョブ機能
<a name="jf_support-user"></a>

**AWS マネージドポリシー名:** [AWSSupportAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSSupportAccess)

**ユースケース:** このユーザーは AWS サポートに連絡し、サポートケースを作成して、既存のケースの状態を確認します。

**ポリシーの更新:** AWSは、このポリシーを維持および更新します。このポリシーの変更履歴については、IAM コンソールでポリシーを表示し、**ポリシーバージョン**タブを選択します。ジョブ関数のポリシーの更新の詳細については、「[ジョブ機能の AWS 管理ポリシー](#security-iam-awsmanpol-jobfunction-updates)」を参照してください。

**ポリシーの詳細:** このポリシーでは、サポート ケースを作成および更新するアクセス許可を付与します。マネージドポリシーの詳細については、「AWS マネージドポリシーリファレンスガイド」の「[AWSSupportAccess](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/AWSSupportAccess.html)」を参照してください。

## システム管理者のジョブ機能
<a name="jf_system-administrator"></a>

**AWS 管理ポリシー名:** [SystemAdministrator](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/SystemAdministrator)

**ユースケース:** このユーザーは開発運用リソースのセットアップおよびメンテナンスを行います。

**ポリシーの更新:** AWSは、このポリシーを維持および更新します。このポリシーの変更履歴については、IAM コンソールでポリシーを表示し、**ポリシーバージョン**タブを選択します。ジョブ関数のポリシーの更新の詳細については、「[ジョブ機能の AWS 管理ポリシー](#security-iam-awsmanpol-jobfunction-updates)」を参照してください。

**ポリシーの説明:**このポリシーでは、AWS CloudTrail、Amazon CloudWatch、AWS CodeCommit、AWS CodeDeploy、AWS Config、AWS Directory Service、Amazon EC2、AWS Identity and Access Management、AWS Key Management Service、AWS Lambda、Amazon RDS、Route 53、Amazon S3、Amazon SES、Amazon SQS、AWS Trusted Advisor、Amazon VPC などのさまざまな AWS サービスにわたってリソースを作成および維持するためのアクセス許可を付与します。マネージドポリシーの詳細については、「AWS マネージドポリシーリファレンスガイド」の「[SystemAdministrator](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/SystemAdministrator.html)」を参照してください。

このジョブ機能には、ロールを AWS サービスへ渡す機能が必要です。このポリシーは、次の表で指定されたロールに対してのみ `iam:GetRole` と `iam:PassRole` を付与します。詳細については、このトピックで後述する「[ロールの作成とポリシーのアタッチ (コンソール)](access_policies_job-functions_create-policies.md)」を参照してください。ジョブ関数のポリシーの更新の詳細については、「[ジョブ機能の AWS 管理ポリシー](#security-iam-awsmanpol-jobfunction-updates)」を参照してください。


| ユースケース | ロール名 (\$1 はワイルドカードです) | 選択するサービスロールの種類 | 選択する AWS 管理ポリシー | 
| --- | --- | --- | --- | 
| Amazon ECS クラスターの EC2 インスタンスで実行されるアプリケーションに Amazon ECS へのアクセスを許可します | [ecr-sysadmin-\$1](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html) | EC2 コンテナサービスの Amazon EC2 のロール  | [AmazonEC2ContainerServiceforEC2Role](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role) | 
| ユーザーがデータベースをモニタリングすることを許可します | [rds-monitoring-role](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html) | 拡張モニタリング用 Amazon RDS ロール | [AmazonRDSEnhancedMonitoringRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonRDSEnhancedMonitoringRole) | 
| EC2 インスタンスで実行されるアプリケーションの、AWS リソースへのアクセスを許可します。 | [ec2-sysadmin-\$1](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) | Amazon EC2 | 「[Amazon EC2 ユーザーガイド](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)」に示されている、S3 バケットへのアクセスを許可するロールのサンプルポリシー (必要に応じてカスタマイズします)。 | 
| Lambda が DynamoDB Streams の読み取り、CloudWatch Logs への書き込みを許可する | [lambda-sysadmin-\$1](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html) | AWS Lambda | [AWSLambdaDynamoDBExecutionRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaDynamoDBExecutionRole) | 

## 閲覧専用ユーザージョブ関数
<a name="jf_view-only-user"></a>

**AWS 管理ポリシー名:** [ViewOnlyAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/ViewOnlyAccess)

**ユースケース:** このユーザーは、サービスにわたるアカウントの AWS リソースや基本のメタデータのリストを表示できます。このユーザーは、クォータを超えるリソースコンテンツやメタデータを読み取ることや、リソース情報をリスト表示することはできません。

**ポリシーの更新:** AWSは、このポリシーを維持および更新します。このポリシーの変更履歴については、IAM コンソールでポリシーを表示し、**ポリシーバージョン**タブを選択します。ジョブ関数のポリシーの更新の詳細については、「[ジョブ機能の AWS 管理ポリシー](#security-iam-awsmanpol-jobfunction-updates)」を参照してください。

**ポリシーの詳細:** このポリシーでは、AWS サービスのリソースに対する `List*`、`Describe*`、`Get*`、`View*`、および `Lookup*` アクセス許可を付与します。このポリシーに含まれる各サービスのアクションを確認するには、「[ViewOnlyAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/ViewOnlyAccess)」を参照してください。マネージドポリシーの詳細については、「AWS マネージドポリシーリファレンスガイド」の「[ViewOnlyAccess](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/ViewOnlyAccess.html)」を参照してください。

## ジョブ機能の AWS 管理ポリシー
<a name="security-iam-awsmanpol-jobfunction-updates"></a>

これらのポリシーはすべて AWS によって維持され、AWS サービスによって追加された新しいサービスや新機能のサポートを含めるよう最新の状態に保たれます。これらのポリシーは、お客様が変更することはできません。ポリシーのコピーを作成してそのコピーを変更できますが、AWS での新しいサービスや API オペレーションの導入時に、そのコピーは自動的に更新されません。

ジョブ機能ポリシーの場合、IAM コンソールでバージョン履歴と各更新の日時を表示できます。これを行うには、このページのリンクを使用して、ポリシーの詳細を表示します。次に、[**ポリシーのバージョン**] タブをクリックして、バージョンを表示します。このページには、ポリシーの最後の 25 バージョンが表示されます。ポリシーのすべてのバージョンを表示するには、[get-policy-version](https://docs.aws.amazon.com/cli/latest/reference/iam/get-policy-version.html) AWS CLI コマンドまたは [GetPolicyVersion](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetPolicyVersion.html) API オペレーションを呼び出します。

**注記**  
カスタマー管理ポリシーには最大 5 つのバージョンを含めることができますが、AWS は AWS 管理ポリシーの完全なバージョン履歴を保持します。

# ロールの作成とポリシーのアタッチ (コンソール)
<a name="access_policies_job-functions_create-policies"></a>

上記のいくつかのポリシーでは、ロールを利用して、AWS サービスがお客様に代わってオペレーションを実行するアクセス許可をそれらのサービスに付与しています。ジョブ機能ポリシーは、使用しなければならない正確なロール名、または、使用可能な名前の前半を少なくとも含んでいるプレフィックスを指定します。これらのロールのいずれかを作成するには、次の手順のステップを実行します。

**AWS のサービス のロールを作成するには (IAM コンソール)**

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

1. IAM コンソールのナビゲーションペインで、**[ロール]**、**[ロールを作成]** を選択します。

1. **信頼できるエンティティタイプ** で、**AWS のサービス** を選択します。

1. **[サービスまたはユースケース]** でサービスを選択し、次にユースケースを選択します。ユースケースは、サービスに必要な信頼ポリシーを含める定義になります。

1. [**次へ**] を選択します。

1. **[アクセス許可ポリシー]** では、オプションは選択したユースケースによって異なります。
   + サービスがロールのアクセス許可を定義している場合、アクセス許可ポリシーを選択することはできません。
   + 制限されたアクセス許可ポリシーのセットから選択します。
   + すべてのアクセス許可ポリシーから選択します。
   + アクセス許可ポリシーを選択するのではなく、ロールの作成後にポリシーを作成し、そのポリシーをロールにアタッチします。

1. (オプション) [アクセス許可の境界](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)を設定します。このアドバンスド機能は、サービスロールで使用できますが、サービスにリンクされたロールではありません。

   1. **[アクセス許可の境界の設定]** セクションを開き、**[アクセス許可の境界を使用してロールのアクセス許可の上限を設定する]** を選択します。

      IAM には、アカウント内の AWS 管理ポリシーとカスタマー管理ポリシーのリストがあります。

   1. アクセス許可の境界として使用するポリシーを選択します。

1. [**次へ**] を選択します。

1. **[ロール名]** では、オプションはサービスによって異なります。
   + サービスでロール名が定義されている場合、ロール名を編集することはできません。
   + サービスでロール名のプレフィックスが定義されている場合、オプションのサフィックスを入力できます。
   + サービスでロール名が定義されていない場合、ロールに名前を付けることができます。
**重要**  
ロールに名前を付けるときは、次のことに注意してください。  
ロール名は AWS アカウント内で一意である必要があります。ただし、大文字と小文字は区別されません。  
例えば、**PRODROLE** と **prodrole** の両方の名前でロールを作成することはできません。ロール名がポリシーまたは ARN の一部として使用される場合、ロール名は大文字と小文字が区別されます。ただし、サインインプロセスなど、コンソールにロール名がユーザーに表示される場合、ロール名は大文字と小文字が区別されません。
他のエンティティがロールを参照する可能性があるため、ロールを作成した後にロール名を編集することはできません。

1. (オプション) **[説明]** にロールの説明を入力します。

1. (オプション) ロールのユースケースとアクセス許可を編集するには、**[ステップ 1: 信頼されたエンティティを選択]** または **[ステップ 2: アクセス権限を追加]** のセクションで **[編集]** を選択します。

1. (オプション) ロールの識別、整理、検索を簡単にするには、キーと値のペアとしてタグを追加します。IAM でのタグの使用の詳細については、「*IAM ユーザーガイド*」の「[AWS Identity and Access Management リソースのタグ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)」を参照してください。

1. ロールを確認したら、**[ロールを作成]** を選択します。

## 例 1: データベース管理者としてユーザーを設定する (コンソール)
<a name="jf_example_1"></a>

この例では、IAM ユーザーである Alice を[データベース管理者](access_policies_job-functions.md#jf_database-administrator)として設定するために必要な手順を示しています。そのセクションのテーブルの最初の列情報を使用し、ユーザーが Amazon RDS モニタリングを有効にできるようにします。Alice の IAM ユーザーに [DatabaseAdministrator](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/DatabaseAdministrator) ポリシーをアタッチして、IAM ユーザーが Amazon データベースサービスを管理できるようにします。このポリシーによって、Alice は `rds-monitoring-role` という名前のロールを Amazon RDS サービスに渡すことができ、サービスが Alice の代わりに Amazon RDS データベースをモニタリングすることができます。

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

1. **[ポリシー]** を選択し、検索ボックスに **database** と入力してから[Enter] を押します。

1. **[DatabaseAdministrator]** ポリシーのラジオボタンを選択し、**[アクション]**、**[アタッチ]** の順に選択します。

1. エンティティのリストから **[Alice]** を選択してから、**[ポリシーをアタッチ]** を選択します。これで Alice は、AWS データベースを管理できます。ただし、Alice がこれらのデータベースをモニタリングできるようにするには、サービスロールを設定する必要があります。

1. IAM コンソールのナビゲーションペインで、**[ロール]**、**[ロールを作成]** を選択します。

1. **[AWS サービス]** ロールタイプを選択してから、**[Amazon RDS]** を選択します。

1. **[拡張モニタリングの Amazon RDS ロール]** ユースケースを選択します。

1. Amazon RDS により、ロールのアクセス許可が定義されます。**[次へ: 確認]** を選択して続行します。

1. ロール名は、Alice が現在持っている DatabaseAdministrator ポリシーによって指定されたものである必要があります。たとえば **rds-monitoring-role** です。**[ロール名]** にそれを入力します。

1. (オプション) **[ロールの説明]** に、新しいロールの説明を入力します。

1. 詳細を確認したら、**[ロールの作成]** を選択します。

1. これで Alice は、Amazon RDS コンソールの **[モニタリング]** セクションで **[RRDS 拡張モニタリング]** を有効にできるようになりました。たとえば、DB インスタンスを作成する場合、リードレプリカを作成する場合、または、DB インスタンスを修正する場合に有効にします。Alice は、**[拡張モニタリングを有効にする]** を **[はい]** に設定するときに、作成したロール名 (rds-monitoring-role) を **[モニタリングロール]** ボックスに入力する必要があります。

## 例 2: ネットワーク管理者としてユーザーを設定する (コンソール)
<a name="jf_example_2"></a>

この例では、IAM ユーザーである Jorge を[ネットワーク管理者](access_policies_job-functions.md#jf_network-administrator)として設定するために必要な手順を示しています。このセクションの表の情報を使用して、Jorge が VPC との間で送受信される IP トラフィックをモニタリングできるようにします。また、Jorge がその情報を CloudWatch Logs のログに取り込むことができるようにします。[NetworkAdministrator](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/NetworkAdministrator) ポリシーを Jorge の IAM ユーザーにアタッチして、IAM ユーザーが AWS ネットワークリソースを設定できるようにします。このポリシーでは、フローログを作成する際に、Jorge が `flow-logs*` で始まる名前のロールを Amazon EC2 に渡すことも可能です。このシナリオでは、例 1 と違って事前定義されたサービスロールの種類がないため、いくつかのステップが異っています。

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

1. ナビゲーションペインで、**[ポリシー]** を選択し、検索ボックスに **network** と入力してから [Enter] を押します。

1. **NetworkAdministrator** ポリシーの横にあるチェックボックスをオンにし、**[アクション]**、**[アタッチ]** の順に選択します。

1. ユーザーのリストで、**Jorge** の横にあるチェックボックスをオンにしてから、**[ポリシーのアタッチ]** を選択します。これで Jorge は、AWS ネットワークリソースを管理できます。ただし、VPC の IP トラフィックのモニタリングを有効にするには、サービスロールを設定する必要があります。

1. 作成する必要のあるサービスロールに事前定義された管理ポリシーがないため、先にそれを作成する必要があります。ナビゲーションペインで、**[ポリシー]**、**[ポリシーの作成]** の順に選択します。

1. **[ポリシーエディタ]** セクションで、**[JSON]** オプションを選択し、以下の JSON ポリシードキュメントからテキストをコピーします。このテキストを **[JSON]** ボックスに貼り付けます。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Action": [
           "logs:CreateLogGroup",
           "logs:CreateLogStream",
           "logs:PutLogEvents",
           "logs:DescribeLogGroups",
           "logs:DescribeLogStreams"
         ],
         "Effect": "Allow",
         "Resource": "*"
       }
     ]
   }
   ```

------

1.  [ポリシーの検証](access_policies_policy-validator.md)中に生成されたセキュリティ警告、エラー、または一般警告をすべて解決してから、**[次へ]** を選択します。
**注記**  
いつでも **[Visual]** と **[JSON]** エディタオプションを切り替えることができます。ただし、**[Visual]** エディタで **[次へ]** に変更または選択した場合、IAM はポリシーを再構成して visual エディタに合わせて最適化することがあります。詳細については、「[ポリシーの再構成](troubleshoot_policies.md#troubleshoot_viseditor-restructure)」を参照してください。

1. **[確認および作成]** ページで、ポリシー名として「**vpc-flow-logs-policy-for-service-role**」と入力します。**[このポリシーで定義されているアクセス許可]** を確認し、ポリシーによって付与されたアクセス許可を確認し、**[ポリシーを作成]** を選択して作業を保存します。

   新しいポリシーが管理ポリシーの一覧に表示され､アタッチの準備ができます。

1. IAM コンソールのナビゲーションペインで、**[ロール]**、**[ロールを作成]** を選択します。

1. **[AWS サービス]** ロールタイプを選択し、続いて **[Amazon EC2]** を選択します。

1. **[Amazon EC2]** ユースケースを選択します

1. **[アクセス許可ポリシーをアタッチする]** ページで、先ほど作成したポリシー **[vpc-flow-logs-policy-for-service-role]** を選択してから、**[次へ: 確認]** を選択します。

1. ロール名は Jorge が現在持っている、NetworkAdministrator ポリシーによって許可されている必要があります。`flow-logs-` で始まる名前であれば、使用可能です。この例では、**[ロール名]** に **flow-logs-for-jorge** と入力します。

1. (オプション) **[ロールの説明]** に、新しいロールの説明を入力します。

1. 詳細を確認したら、**[ロールの作成]** を選択します。

1. これで、このシナリオで必要な信頼ポリシーを設定することができます。**[ロール]** ページで、**flow-logs-for-jorge** ロール (チェックボックスではなく名前) を選択します。新しいロールの詳細ページで、**[信頼関係]** タブを選択してから、**[信頼関係の編集]** を選択します。

1. 「Service」行の `ec2.amazonaws.com` のエントリを置き換えて以下のように変更します。

   ```
           "Service": "vpc-flow-logs.amazonaws.com"
   ```

1. Jorge はこれで、Amazon EC2 コンソールで VPC またはサブネットのフローログを作成できます。フローログを作成するときに、**flow-logs-for-jorge** ロールを指定します。このロールには、ログを作成し、そのログにデータを書き込む権限があります。

# AWS グローバル条件コンテキストキー
<a name="reference_policies_condition-keys"></a>

[プリンシパル](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html?icmpid=docs_homepage_addtlrcs#principal)が AWS に[リクエスト](intro-structure.md#intro-structure-request)を行うと、AWS はリクエスト情報を[リクエストコンテキスト](intro-structure.md#intro-structure-request)に収集します。JSON ポリシーの `Condition` 要素を使用して、リクエストコンテキストのキーを、ポリシーで指定したキー値と比較できます。リクエスト情報は、リクエストを行うプリンシパル、リクエストの対象となるリソース、リクエスト自体に関するメタデータなど、さまざまなソースから提供されます。

**グローバル条件キー**は、すべての AWS サービスで使用できます。これらの条件キーはすべてのポリシーで使用できますが、キーはすべてのリクエストコンテキストで使用できるわけではありません。例えば、`aws:SourceAccount` 条件キーは、リソースへの呼び出しが [AWS サービスプリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services) によって直接行われた場合にのみ使用できます。グローバルキーがリクエストコンテキストに含まれる状況の詳細については、各キーの**可用性**情報を参照してください。

個別のサービスの中には、他のサービスのリクエストコンテキストで使用できる独自の条件キーを作成するものもあります。**クロスサービス条件キー**は、`ec2:` や `lambda:` など、サービスの名前と一致するプレフィックスを含むグローバル条件キーの一種ですが、他のサービスで使用できます。

**サービス固有の条件キー**は、個々の AWS サービスで使用するように定義されています。例えば、Amazon S3 では、`s3:VersionId` 条件キーを使用してポリシーを作成し、Amazon S3 オブジェクトの特定のバージョンへのアクセスを制限できます。この条件キーはサービス固有です。つまり、Amazon S3 サービスへのリクエストでのみ機能します。サービス固有の条件キーについては、「[AWS サービスのアクション、リソース、および条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)」を参照し、キーを表示するサービスを選択してください。

**注記**  
いくつかの状況でのみ利用可能な条件キーを使用する場合は、条件演算子の [IfExists](reference_policies_elements_condition_operators.md#Conditions_IfExists) バージョンを使用できます。リクエストコンテキストに条件キーがない場合、ポリシーは評価に失敗する可能性があります。たとえば、`...IfExists` 演算子を使用する以下の条件ブロックでは、リクエストの送信元が特定の IP 範囲または VPC である場合、この条件に一致となります。いずれかまたは両方のキーがリクエストコンテキストに含まれていない場合でも、条件は引き続き `true` を返します。これらの値は、指定したキーがリクエストコンテキスト内に含まれる場合にのみ確認されます。他の演算子のキーが存在しない場合のポリシーの評価方法の詳細については、「[条件演算子](reference_policies_elements_condition_operators.md)」を参照してください。  

```
"Condition": {
    "IpAddressIfExists": {"aws:SourceIp" : ["xxx"] },
    "StringEqualsIfExists" : {"aws:SourceVpc" : ["yyy"]} 
}
```

**重要**  
条件を複数のキー値を持つ要求コンテキストと比較するには、`ForAllValues` または `ForAnyValue` 集合演算子を使用する必要があります。セット演算子は、複数値の条件キーでのみ使用してください。単一値の条件キーで集合演算子を使用しないでください。詳細については、「[複数値のコンテキストキーの演算子を設定する](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)」を参照してください。


| プリンシパルのプロパティ | ロールセッションのプロパティ | ネットワークのプロパティ | リソースのプロパティ | リクエストのプロパティ | 
| --- | --- | --- | --- | --- | 
|  `aws:PrincipalArn` `aws:PrincipalAccount` `aws:PrincipalOrgPaths` `aws:PrincipalOrgID` `aws:PrincipalTag/*tag-key*` `aws:PrincipalIsAWSService` `aws:PrincipalServiceName` `aws:PrincipalServiceNamesList` `aws:PrincipalType` `aws:userid` `aws:username`  |  `aws:AssumedRoot` `aws:FederatedProvider` `aws:TokenIssueTime` `aws:MultiFactorAuthAge` `aws:MultiFactorAuthPresent` `aws:ChatbotSourceArn` `aws:Ec2InstanceSourceVpc` `aws:Ec2InstanceSourcePrivateIPv4` `aws:SourceIdentity` `ec2:RoleDelivery` `ec2:SourceInstanceArn` `glue:RoleAssumedBy` `glue:CredentialIssuingService` `codebuild:BuildArn` `codebuild:ProjectArn` `lambda:SourceFunctionArn` `ssm:SourceInstanceArn` `identitystore:UserId`  |  `aws:SourceIp` `aws:SourceVpc` `aws:SourceVpcArn` `aws:SourceVpce` `aws:VpceAccount` `aws:VpceOrgID` `aws:VpceOrgPaths` `aws:VpcSourceIp`  |  `aws:ResourceAccount` `aws:ResourceOrgID` `aws:ResourceOrgPaths` `aws:ResourceTag/*tag-key*`  |  `aws:CalledVia` `aws:CalledViaFirst` `aws:CalledViaLast` `aws:CalledViaAWSMCP` `aws:ViaAWSService` `aws:ViaAWSMCPService` `aws:CurrentTime` `aws:EpochTime` `aws:referer` `aws:RequestedRegion` `aws:RequestTag/*tag-key*` `aws:TagKeys` `aws:SecureTransport` `aws:SourceAccount` `aws:SourceArn` `aws:SourceOrgID` `aws:SourceOrgPaths` `aws:UserAgent` `aws:IsMcpServiceAction`  | 

## 機密条件キー
<a name="condition-keys-sensitive"></a>

以下の条件キーは機密と見なされます。ワイルドカードを含むキー値のサブ文字列の場合であっても、これらの条件キーでのワイルドカードの使用には有効なユースケースはありません。これは、ワイルドカードによって条件キーが任意の値に一致し、セキュリティリスクが引き起こされる可能性があるためです。
+ `aws:PrincipalAccount`
+ `aws:PrincipalOrgID`
+ `aws:ResourceAccount`
+ `aws:ResourceOrgID`
+ `aws:SourceAccount`
+ `aws:SourceOrgID`
+ `aws:SourceVpc`
+ `aws:SourceVpce`
+ `aws:VpceAccount`
+ `aws:VpceOrgID`

## プリンシパルのプロパティ
<a name="condition-keys-principal-properties"></a>

次の条件キーを使用して、リクエストを行うプリンシパルの詳細を、ポリシーで指定したプリンシパルのプロパティと比較します。リクエストを実行できるプリンシパルのリストについては、「[プリンシパルを指定する方法](reference_policies_elements_principal.md#Principal_specifying)」を参照してください。

### aws:PrincipalArn
<a name="condition-keys-principalarn"></a>

このキーを使用して、リクエストを行ったプリンシパルの [Amazon リソースネーム](reference_identifiers.md#identifiers-arns) (ARN) をポリシーで指定した ARN と比較します。IAM ロールの場合、リクエストコンテキストは、ロールを引き受けたユーザーの ARN ではなく、ロールの ARN を返します。
+ **可用性** – このキーは、すべての署名付きリクエストのリクエストコンテキストに含まれます。匿名リクエストには、このキーは含まれません。この条件キーで指定できるプリンシパルのタイプは次のとおりです。
  + IAM ロール
  + IAM ユーザー
  + AWS STS フェデレーションユーザーのプリンシパル
  + AWS アカウント のルートユーザー
+ **データ型** – ARN

  AWS では、ARN を比較する場合、[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)の代わりに [ARN 演算子](reference_policies_elements_condition_operators.md#Conditions_ARN)を使用することをお勧めします。
+ **値タイプ** — 単一値
+ **値の例** 次のリストは、`aws:PrincipalArn` 条件キーで指定できるさまざまなタイプのプリンシパルに対して返されるリクエストコンテキスト値を示しています。
  + **IAM ロール** — リクエストコンテキストには、条件キー `aws:PrincipalArn` に次の値が含まれています。引き受けたロールのセッション ARN をこの条件キーの値として指定しないでください。引き受けたロールセッションのプリンシパルの詳細については、「[ロールセッションプリンシパル](reference_policies_elements_principal.md#principal-role-session)」を参照してください。

    ```
    arn:aws:iam::123456789012:role/role-name
    ```
  + **IAM ユーザー** — リクエストコンテキストには、条件キー `aws:PrincipalArn` に次の値が含まれています。

    ```
    arn:aws:iam::123456789012:user/user-name
    ```
  + **AWS STS フェデレーションユーザーのプリンシパル** – リクエストコンテキストには、条件キーの `aws:PrincipalArn` に次の値が含まれています。

    ```
    arn:aws:sts::123456789012:federated-user/user-name
    ```
  + **AWS アカウント ルートユーザー** — リクエストコンテキストには、条件キー `aws:PrincipalArn` に次の値が含まれています。ルートユーザー ARN を `aws:PrincipalArn` 条件キーの値として指定すると、アクセス許可が AWS アカウント のルートユーザーのみに制限されます。これは、リソースベースポリシーのプリンシパル要素でルートユーザー ARN を指定して、AWS アカウント.に権限を委任することとは異なります。リソースベースのポリシーのプリンシパル要素でルートユーザー ARN を指定する方法については、「[AWS アカウント プリンシパル](reference_policies_elements_principal.md#principal-accounts)」を参照してください。

    ```
    arn:aws:iam::123456789012:root
    ```

AWS Organizations サービスコントロールポリシー (SCP) の条件キー `aws:PrincipalArn` の値としてルートユーザー ARN を指定することができます。SCP は、組織のアクセス許可の管理に使用される組織ポリシーの一種で、組織内のメンバーアカウントにのみ影響します。SCP は、メンバーアカウントのルートユーザーを含む、メンバーアカウントの IAM ユーザーとロールのアクセス許可を制限します。SCP がアクセス許可に与える影響については、「*AWS Organizations ユーザーガイド*」の「[アクセス許可における SCP 効果](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html#scp-effects-on-permissions)」を参照してください。

### aws:PrincipalAccount
<a name="condition-keys-principalaccount"></a>

このキーを使用して、リクエスト元のプリンシパルが属するアカウントと、ポリシーで指定したアカウント識別子を比較します。匿名リクエストの場合、リクエストコンテキストは `anonymous` を返します。
+ **可用性** – このキーは、匿名リクエストなどのすべてのリクエストのリクエストコンテキストに含まれます。
+ **データ型** – [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

次の例では、アカウント番号が `123456789012` のプリンシパル以外に対するアクセスは拒否されます。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyAccessFromPrincipalNotInSpecificAccount",
      "Action": "service:*",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:service:us-east-1:111122223333:resource"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalAccount": [
            "123456789012"
          ]
        }
      }
    }
  ]
}
```

------

### aws:PrincipalOrgPaths
<a name="condition-keys-principalorgpaths"></a>

このキーを使用して、リクエストを行っているプリンシパルの AWS Organizations パスをポリシー内のパスと比較します。そのプリンシパルは IAM ユーザー、IAM ロール、AWS STS フェデレーションユーザーのプリンシパル、AWS アカウントのルートユーザー の場合があります。ポリシーでは、この条件キーによって、リクエスタが AWS Organizations で指定された組織ルートまたは組織単位 (OU) 内のアカウントメンバーであることが保証されます。AWS Organizations パスは、AWS Organizations エンティティの構造をテキストで表記したものです。パスの使用と理解の詳細については、「[AWS Organizations エンティティパスを理解する](access_policies_last-accessed-view-data-orgs.md#access_policies_last-accessed-viewing-orgs-entity-path)」を参照してください。
+ **可用性** – このキーは、プリンシパルが組織のメンバーである場合にのみリクエストコンテキストに含まれます。匿名リクエストには、このキーは含まれません。
+ **データ型** – [文字列](reference_policies_elements_condition_operators.md#Conditions_String) (リスト)
+ **値タイプ** — 複数値

**注記**  
組織 ID はグローバルに一意ですが、OU ID とルート ID は組織内でのみ一意です。これは、2 つの組織が同じ組織 ID を共有しないことを意味します。ただし、別の組織が自分と同じ ID を持つ OU またはルートを持っている可能性があります。OU またはルートを指定するときは、必ず組織 ID を含めることをお勧めします。

たとえば、次の条件は、`true` OU に直接アタッチされているが、子の OU にはアタッチされていないアカウントのプリンシパルに対して `ou-ab12-22222222` を返します。

```
"Condition" : { "ForAnyValue:StringEquals" : {
     "aws:PrincipalOrgPaths":["o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/"]
}}
```

次の条件は、OU またはその子の OU に直接アタッチされているアカウントのプリンシパルに対して `true` を返します。ワイルドカードを含める場合は、`StringLike` 条件演算子を使用する必要があります。

```
"Condition" : { "ForAnyValue:StringLike" : {
     "aws:PrincipalOrgPaths":["o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/*"]
}}
```

次の条件は、OU またはその子の OU に直接アタッチされているアカウントのプリンシパルに対して `true` を返します。以前の条件は、OU または任意の子を対象としています。以下の条件は、子のみ (およびそれらの子のすべての子) を対象としています 。

```
"Condition" : { "ForAnyValue:StringLike" : {
     "aws:PrincipalOrgPaths":["o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/ou-*"]
}}
```

次の条件は、親 OU に関係なく、`o-a1b2c3d4e5` 組織内のすべてのプリンシパルへのアクセスを許可します。

```
"Condition" : { "ForAnyValue:StringLike" : {
     "aws:PrincipalOrgPaths":["o-a1b2c3d4e5/*"]
}}
```

`aws:PrincipalOrgPaths` は複数の値を持つ条件キーです。複数値のキーは、リクエストコンテキストに複数の値を持つことができます。`ForAnyValue` 条件演算子で複数の値を使用する場合、プリンシパルのパスはポリシーに一覧表示されているパスの 1 つと一致する必要があります。複数値を持つ条件キーの詳細については、「[複数値のコンテキストキーの演算子を設定する](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)」を参照してください。

```
    "Condition": {
        "ForAnyValue:StringLike": {
            "aws:PrincipalOrgPaths": [
                "o-a1b2c3d4e5/r-ab12/ou-ab12-33333333/*",
                "o-a1b2c3d4e5/r-ab12/ou-ab12-22222222/*"
            ]
        }
    }
```

### aws:PrincipalOrgID
<a name="condition-keys-principalorgid"></a>

このキーを使用して、リクエスト元のプリンシパルが属する AWS Organizations の組織の識別子と、ポリシーで指定された識別子を比較します。
+ **可用性** – このキーは、プリンシパルが組織のメンバーである場合にのみリクエストコンテキストに含まれます。匿名リクエストには、このキーは含まれません。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

このグローバルキーは、組織内のすべての AWS アカウントのすべてのアカウント ID を一覧表示する代わりに使用できます。この条件キーを使用して、[リソースベースのポリシー](access_policies_identity-vs-resource.md)での `Principal` 要素の指定を簡素化します。[組織 ID](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_details.html) は、条件要素で指定できます。アカウントを追加したり削除したりすると、`aws:PrincipalOrgID` を含むポリシーには正しいアカウントが自動的に組み込まれ、手動で更新する必要はありません。

たとえば、以下の `o-xxxxxxxxxxx` バケットポリシーでは、`amzn-s3-demo-bucket` 組織の任意のアカウントのメンバーに Amazon S3 バケットへのオブジェクトの追加を許可します。

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

****  

```
 {
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "AllowPutObject",
    "Effect": "Allow",
    "Principal": "*",
    "Action": "s3:PutObject",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
    "Condition": {"StringEquals":
      {"aws:PrincipalOrgID":"o-xxxxxxxxxxx"}
    }
  }
}
```

------

**注記**  
また、このグローバル条件は、AWS 組織の管理アカウントにも適用されます。このポリシーは、指定した組織以外のすべてのプリンシパルが、Amazon S3 バケットにアクセスできないようにします。これには、AWS CloudTrail がログデータを Amazon S3 バケットに送信する場合など、お客様の内部リソースと相互にやり取りを行う AWS サービスも含まれます。AWS サービスでアクセス許可を安全に付与する方法については、「[aws:PrincipalIsAWSService](#condition-keys-principalisawsservice)」を参照してください。

AWS Organizations の詳細については、*AWS Organizationsユーザーガイド*の「[AWS Organizations とは](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)」を参照してください。

### aws:PrincipalTag/*tag-key*
<a name="condition-keys-principaltag"></a>

このキーを使用して、リクエストを行うプリンシパルにアタッチされたタグと、ポリシーで指定したタグを比較します。プリンシパルに複数のタグがアタッチされている場合、リクエストコンテキストには、アタッチされたタグキーごとに 1 つの `aws:PrincipalTag` キーが含まれます。
+ **可用性** – このキーは、プリンシパルが、タグがアタッチされた IAM ユーザーである場合にリクエストコンテキストに含まれます。これは、タグまたは[セッションタグ](id_session-tags.md)がアタッチされた IAM ロールを使用するプリンシパルのために含まれます。匿名リクエストには、このキーは含まれません。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

カスタム属性は、キーバリューのペアの形式でユーザーまたはロールに追加できます。IAM タグの使用の詳細については、「[AWS Identity and Access Management リソースのタグ](id_tags.md)」を参照してください。`aws:PrincipalTag` を使用して AWS プリンシパルの[アクセスをコントロール](access_iam-tags.md#access_iam-tags_control-principals)できます。

この例では、**department=hr** タグを持つユーザーが IAM ユーザー、グループ、またはロールを管理できるようにするID ベースポリシーを作成する方法を示しています。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、「[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)」の手順に従います。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:Get*",
        "iam:List*",
        "iam:Generate*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/department": "hr"
        }
      }
    }
  ]
}
```

------

### aws:PrincipalIsAWSService
<a name="condition-keys-principalisawsservice"></a>

このキーを使用して、リソースへの呼び出しが AWS [サービスプリンシパル](reference_policies_elements_principal.md#principal-services)によって直接行われているかどうかを確認します。たとえば、AWS CloudTrail はサービスプリンシパル `cloudtrail.amazonaws.com` を使用して、Amazon S3 バケットにログを書き込みます。サービスがサービスプリンシパルを使用してリソースに対して直接アクションを実行する場合、リクエストコンテキストキーは true に設定されます。サービスが IAM プリンシパルの認証情報を使用し、プリンシパルに代わってリクエストを行う場合、コンテキストキーは false に設定されます。また、サービスが[サービスロールまたはサービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#id_roles_terms-and-concepts)を使用してプリンシパルに代わって呼び出しを行う場合も、false に設定されます。
+ **可用性** — このキーは、AWS 認証情報を使用するすべての署名済み API リクエストのリクエストコンテキストに存在します。匿名リクエストには、このキーは含まれません。
+ **データ型** – [ブール値](reference_policies_elements_condition_operators.md#Conditions_Boolean)
+ **値タイプ** — 単一値

この条件キーを使用して、AWS サービスへのアクセスを安全に許可しながら、信頼できる ID と予想されるネットワークの場所へのアクセスを制限できます。

次の Amazon S3 バケットポリシーの例では、リクエストが `vpc-111bbb22` から発信されているか、CloudTrail などのサービスプリンシパルから発信されていない限り、バケットへのアクセスが制限されています。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExpectedNetworkServicePrincipal",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/AWSLogs/AccountNumber/*",
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:SourceVpc": "vpc-111bbb22"
        },
        "BoolIfExists": {
          "aws:PrincipalIsAWSService": "false"
        }
      }
    }
  ]
}
```

------

次のビデオでは、ポリシーで `aws:PrincipalIsAWSService` 条件キーを使用する方法について詳しく説明します。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/gv-_H8a42G4/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/gv-_H8a42G4)


### aws:PrincipalServiceName
<a name="condition-keys-principalservicename"></a>

このキーを使用して、[サービスプリンシパル](reference_policies_elements_principal.md#principal-services)の名前を、リソースにリクエストするサービスプリンシパルとともに設定します。このキーを使用して、この呼び出しが特定のサービスプリンシパルによって行われたかどうかを確認できます。サービスプリンシパルがリソースに直接リクエストする場合、`aws:PrincipalServiceName` キーには、サービスプリンシパルの名前が含まれます。たとえば、AWS CloudTrail のサービスプリンシパル名は `cloudtrail.amazonaws.com` です。
+ **可用性** — このキーは、呼び出しがAWSサービスプリンシパル。このキーは、次のような他の状況では存在しません。
  + サービスが[サービスロールまたはサービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#id_roles_terms-and-concepts)を使用してプリンシパルに代わって呼び出しを行う場合。
  + サービスが IAM プリンシパルの認証情報を使用し、プリンシパルに代わってリクエストを行う場合。
  + 呼び出しが IAM プリンシパルによって直接行われた場合。
  + 匿名の依頼者によって電話された場合。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

この条件キーを使用して、AWS サービスへのアクセスを安全に許可しながら、信頼できる ID と予想されるネットワークの場所へのアクセスを制限できます。

次の Amazon S3 バケットポリシーの例では、リクエストが `vpc-111bbb22` から発信されているか、CloudTrail などのサービスプリンシパルから発信されていない限り、バケットへのアクセスが制限されています。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExpectedNetworkServicePrincipal",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/AWSLogs/AccountNumber/*",
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:SourceVpc": "vpc-111bbb22",
          "aws:PrincipalServiceName": "cloudtrail.amazonaws.com"
        }
      }
    }
  ]
}
```

------

### aws:PrincipalServiceNamesList
<a name="condition-keys-principalservicenameslist"></a>

このキーは、サービスに属するすべての[サービスプリンシパル](reference_policies_elements_principal.md#principal-services)名のリストを提供します。これは高度な条件キーです。これを使用して、サービスが特定のリージョンからのみリソースにアクセスすることを制限できます。一部のサービスでは、特定のリージョン内のサービスの特定のインスタンスを示すために、リージョナルサービスプリンシパルを作成できます。リソースへのアクセスをサービスの特定のインスタンスに制限できます。サービスプリンシパルがリソースに直接リクエストを行うと、`aws:PrincipalServiceNamesList` には、サービスのリージョナルインスタンスに関連付けられているすべてのサービスプリンシパル名の順序付けられていないリストが含まれます。
+ **可用性** — このキーは、呼び出しがAWSサービスプリンシパル。このキーは、次のような他の状況では存在しません。
  + サービスが[サービスロールまたはサービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#id_roles_terms-and-concepts)を使用してプリンシパルに代わって呼び出しを行う場合。
  + サービスが IAM プリンシパルの認証情報を使用し、プリンシパルに代わってリクエストを行う場合。
  + 呼び出しが IAM プリンシパルによって直接行われた場合。
  + 匿名の依頼者によって電話された場合。
+ **データ型** – [文字列](reference_policies_elements_condition_operators.md#Conditions_String) (リスト)
+ **値タイプ** — 複数値

`aws:PrincipalServiceNamesList` は複数の値を持つ条件キーです。複数値のキーは、リクエストコンテキストに複数の値を持つことができます。このキーを使用する場合は、[文字列条件演算子](reference_policies_elements_condition_operators.md#Conditions_String)とともに `ForAnyValue` または `ForAllValues` の集合演算子を使用する必要があります。複数値を持つ条件キーの詳細については、「[複数値のコンテキストキーの演算子を設定する](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)」を参照してください。

### aws:PrincipalType
<a name="condition-keys-principaltype"></a>

このキーを使用して、リクエストを行うプリンシパルと、ポリシーで指定したプリンシパルのタイプを比較します。詳細については、「[プリンシパルを指定する方法](reference_policies_elements_principal.md#Principal_specifying)」を参照してください。`principal` キーの値の具体的な例については、「[プリンシパルキーの値](reference_policies_variables.md#principaltable)」を参照してください。
+ **可用性** – このキーは、匿名リクエストなどのすべてのリクエストのリクエストコンテキストに含まれます。
+ **データ型** – [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

### aws:userid
<a name="condition-keys-userid"></a>

このキーを使用して、リクエスタのプリンシパル ID とポリシーで指定した識別子を比較します。IAM ユーザーの場合、リクエストコンテキスト値はユーザー ID です。IAM ロールの場合、この値の形式はさまざまです。さまざまなプリンシパルで情報がどのように表示されるかについては、「[プリンシパルを指定する方法](reference_policies_elements_principal.md#Principal_specifying)」を参照してください。`principal` キーの値の具体的な例については、「[プリンシパルキーの値](reference_policies_variables.md#principaltable)」を参照してください。
+ **可用性** – このキーは、匿名リクエストなどのすべてのリクエストのリクエストコンテキストに含まれます。
+ **データ型** – [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

### aws:username
<a name="condition-keys-username"></a>

このキーを使用して、リクエスタのユーザー名をポリシーで指定したユーザー名と比較します。さまざまなプリンシパルで情報がどのように表示されるかについては、「[プリンシパルを指定する方法](reference_policies_elements_principal.md#Principal_specifying)」を参照してください。`principal` キーの値の具体的な例については、「[プリンシパルキーの値](reference_policies_variables.md#principaltable)」を参照してください。
+ **可用性** – このキーは常に IAM ユーザーのリクエストコンテキストに含まれます。匿名のリクエストと AWS アカウントのルートユーザー または IAM ロールを使用して行われたリクエストには、このキーは含まれません。IAM Identity Center の認証情報を使用して行われたリクエストでは、このキーはコンテキストに含まれません。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

## ロールセッションのプロパティ
<a name="condition-keys-role-session-properties"></a>

次の条件キーを使用して、セッション生成時のロールセッションのプロパティを比較します。これらの条件キーは、ロールセッションまたはフェデレーションユーザーのプリンシパル認証情報を持つプリンシパルによってリクエストされた場合にのみ利用できます。これらの条件キーの値は、ロールのセッショントークンに埋め込まれます。

[ロール](reference_policies_elements_principal.md#principal-roles)はプリンシパルの一種です。[プリンシパルのプロパティ](#condition-keys-principal-properties) セクションの条件キーを使用して、ロールのリクエスト実行中にロールのプロパティを評価することもできます。

### aws:AssumedRoot
<a name="condition-keys-assumedroot"></a>

リクエストが [AssumeRoot](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoot.html) を使用して実行されたかどうかを確認するには、このキーを使用します。`AssumeRoot` は、組織内のメンバーアカウントで特権アクションを実行するために使用できる特権ルートユーザーセッションの短期認証情報を返します。詳細については、「[メンバーアカウントのルートアクセスを一元管理](id_root-user.md#id_root-user-access-management)」を参照してください。
+ **可用性** – このキーは、プリンシパルが [AssumeRoot](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoot.html) の認証情報を使用してリクエストを行う場合にのみ、リクエストコンテキストに含まれます。
+ **データ型** – [ブール値](reference_policies_elements_condition_operators.md#Conditions_Boolean)
+ **値タイプ** — 単一値

次の例では、サービスコントロールポリシーとして使用された場合、AWS Organizations メンバーアカウントのルートユーザーの長期的な認証情報の使用を拒否します。このポリシーは、`AssumeRoot` セッションが `AssumeRoot` セッションによって許可されたアクションを実行することを拒否しません。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
       {
          "Effect":"Deny",
          "Action":"*",
          "Resource": "*",
          "Condition":{
             "ArnLike":{
                "aws:PrincipalArn":[
                   "arn:aws:iam::*:root"
                ]
             },
             "Null":{
                "aws:AssumedRoot":"true"
             }
          }
       }
    ]
 }
```

------

### aws:FederatedProvider
<a name="condition-keys-federatedprovider"></a>

このキーを使用して、プリンシパルが発行した ID プロバイダー (IdP) とポリシーで指定した識別子とを比較します。つまり IAM ロールは、[https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRoleWithWebIdentity](https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRoleWithWebIdentity) AWS STS オペレーションを使用して引き受けられるということです。結果のロールセッションの一時認証情報を使用してリクエストを作成する場合、リクエストコンテキストは、元のフェデレーティッド ID を認証した IdP を識別します。
+ **可用性** – このキーは、OpenID Connect (OIDC) プロバイダーを使用して引き受けたロールのロールセッションと、OIDC プロバイダーを使用して `AssumeRoleWithWebIdentity` を呼び出すときのロール信頼ポリシーに存在します。
+ **データ型** – [文字列](reference_policies_elements_condition_operators.md#Conditions_String)\$1
+ **値タイプ** — 単一値

\$1 データ型は IdP によって異なります。
+ [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html) などの組み込み AWS IdP を使用している場合、キー値は**[文字列]** になります。キー値は `cognito-identity.amazonaws.com` のようになります。
+ [https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) や [Amazon EKS](https://docs.aws.amazon.com//eks/latest/userguide/associate-service-account-role.html) など、AWS に組み込まれていない IdP を使用している場合、キー値は **ARN** になります。キー値は `arn:aws:iam::111122223333:oidc-provider/oidc.eks.region.amazonaws.com/id/OIDC_Provider_ID` のようになります。

外部 IdP と `AssumeRoleWithWebIDentity` に関する詳細については、「[一般的なシナリオ](id_federation_common_scenarios.md)」を参照してください。詳細については、「[ロールセッションプリンシパル](reference_policies_elements_principal.md#principal-role-session)」を参照してください。

### aws:TokenIssueTime
<a name="condition-keys-tokenissuetime"></a>

このキーを使用して、一時的なセキュリティ認証情報が発行された日時と、ポリシーで指定した日時を比較します。
+ **可用性** – このキーは、プリンシパルが一時的な認証情報を使用してリクエストを行う場合にのみ、リクエストコンテキストに含まれます。このキーは、アクセスキーを使用して行われたAWS CLI、AWS API、または AWS SDK リクエストには存在しません。
+ **データ型** – [日付](reference_policies_elements_condition_operators.md#Conditions_Date)
+ **値タイプ** — 単一値

一時的認証情報の使用がサポートされているサービスについては、「[IAM と連携する AWS のサービス](reference_aws-services-that-work-with-iam.md)」を参照してください。

### aws:MultiFactorAuthAge
<a name="condition-keys-multifactorauthage"></a>

このキーを使用して、リクエスト元のプリンシパルが MFA を使用して認可されてからの秒数と、ポリシーで指定した数値を比較します。MFA の詳細については、「[IAM の AWS 多要素認証](id_credentials_mfa.md)」を参照してください。

**重要**  
この条件キーは、フェデレーティッド ID や、AWS CLI、AWS API、または AWS SDK リクエストに署名するためにアクセスキーを使用して行われたリクエストには存在しません。一時的なセキュリティ認証情報を使用して API 操作に MFA 保護を追加する方法の詳細については、「[MFA を使用した安全な API アクセス](id_credentials_mfa_configure-api-require.md)」を参照してください。  
IAM フェデレーティッド ID の検証に MFA が使用されているかどうかを確認するには、認証方法を ID プロバイダーから AWS にセッションタグとして渡すことができます。詳細については、「[AWS STS でセッションタグを渡します](id_session-tags.md)」を参照してください。IAM アイデンティティセンター ID に MFA を適用するには、[アクセスコントロールの属性を有効にし](https://docs.aws.amazon.com/singlesignon/latest/userguide/configure-abac.html)、認証方法を使用して SAML アサーションクレームを ID プロバイダーから IAM アイデンティティセンターに渡すことができます。
+ **可用性** – このキーは、プリンシパルが[一時的なセキュリティ認証情報](id_credentials_temp.md)を使用してリクエストを行う場合にのみ、リクエストコンテキストに含まれます。MFA 条件を指定したポリシーは、次にアタッチすることができます。
  + IAM ユーザーまたはグループ
  + Amazon S3 バケット、Amazon SQS キュー、または Amazon SNS トピックなどのリソース
  + ユーザーが引き受けることのできる IAM ロールの信頼ポリシー
+ **データ型** – [数値](reference_policies_elements_condition_operators.md#Conditions_Numeric)
+ **値タイプ** — 単一値

### aws:MultiFactorAuthPresent
<a name="condition-keys-multifactorauthpresent"></a>

このキーを使用して、リクエストを行った[一時的なセキュリティ認証情報](id_credentials_temp.md)を検証するために多要素認証 (MFA) を使用したか確認します。

**重要**  
この条件キーは、フェデレーティッド ID や、AWS CLI、AWS API、または AWS SDK リクエストに署名するためにアクセスキーを使用して行われたリクエストには存在しません。一時的なセキュリティ認証情報を使用して API 操作に MFA 保護を追加する方法の詳細については、「[MFA を使用した安全な API アクセス](id_credentials_mfa_configure-api-require.md)」を参照してください。  
IAM フェデレーティッド ID の検証に MFA が使用されているかどうかを確認するには、認証方法を ID プロバイダーから AWS にセッションタグとして渡すことができます。詳細については、「[AWS STS でセッションタグを渡します](id_session-tags.md)」を参照してください。IAM アイデンティティセンター ID に MFA を適用するには、[アクセスコントロールの属性を有効にし](https://docs.aws.amazon.com/singlesignon/latest/userguide/configure-abac.html)、認証方法を使用して SAML アサーションクレームを ID プロバイダーから IAM アイデンティティセンターに渡すことができます。
+ **可用性** – このキーは、プリンシパルが一時的な認証情報を使用してリクエストを行う場合にのみ、リクエストコンテキストに含まれます。MFA 条件を指定したポリシーは、次にアタッチすることができます。
  + IAM ユーザーまたはグループ
  + Amazon S3 バケット、Amazon SQS キュー、または Amazon SNS トピックなどのリソース
  + ユーザーが引き受けることのできる IAM ロールの信頼ポリシー
+ **データ型** – [ブール値](reference_policies_elements_condition_operators.md#Conditions_Boolean)
+ **値タイプ** — 単一値

一時的な認証情報は、[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) または [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) の一時トークンを持つ IAM ロールと IAM ユーザー、および AWS マネジメントコンソールのユーザーを認証するために使用されます。

IAM ユーザーアクセスキーは、長期的な認証情報ですが、場合によっては AWS は、IAM ユーザーの代わりに一時的な認証情報を作成し、操作を実行します。このような場合、`aws:MultiFactorAuthPresent` キーはリクエストに存在し、`false` の値に設定されます。これが起こる一般的なケースは、次の 2 つです。
+ AWS マネジメントコンソール の IAM ユーザーが、知らないうちに一時的認証情報を使用します。ユーザーは、長期的な認証情報であるユーザー名とパスワードを使用してコンソールにサインインします。ただし、バックグラウンドでは、コンソールがユーザーに代わって一時的な認証情報を生成します。
+ IAM ユーザーがサービスを呼び出すと、AWS のサービスはユーザーの認証情報を再利用して、別のサービスに対して別のリクエストを行います。たとえば、Athena を呼び出して Amazon S3 バケットにアクセスする場合、または CloudFormation Amazon EC2 インスタンスを作成するには、次の手順に従います。後続のリクエストで、AWS は一時的認証情報を使用します。

一時的認証情報の使用がサポートされているサービスについては、「[IAM と連携する AWS のサービス](reference_aws-services-that-work-with-iam.md)」を参照してください。

`aws:MultiFactorAuthPresent` キーは、API または CLI コマンドがアクセスキーペアなど長期的な認証情報で呼び出された場合には表示されません。したがって、このキーを確認する場合は `...IfExists` バージョンの条件演算子の使用をお勧めします。

以下の `Condition` 要素は、MFA を使用してリクエストが認証されるかどうかを確認する信頼性の高い方法***ではない***点に注意してください。

```
#####   WARNING: NOT RECOMMENDED   #####
"Effect" : "Deny",
"Condition" : { "Bool" : { "aws:MultiFactorAuthPresent" : "false" } }
```

`Deny` 効果、`Bool` 要素、`false` 値のこの組み合わせは、MFA を使用して認証できるが認証されなかったリクエストを拒否します。このステートメントは、MFA の使用をサポートする一時的認証情報にのみ適用されます。このステートメントは、長期的認証情報を使用して行われるリクエスト、または MFA を使用して認証されるリクエストへのアクセスを拒否しません。ロジックが複雑で MFA 認証が実際に使用されたかどうかをテストしないため、この例は慎重に使用してください。

また、`Deny` 効果、`Null` 要素、`true` の組み合わせは使用しないでください。この組み合わせも同様に、ロジックはさらに複雑になるためです。

**推奨される組み合わせ**  
[`BoolIfExists`](reference_policies_elements_condition_operators.md#Conditions_IfExists) 演算子を使用して、リクエストが MFA を使用して認証されたかどうかを確認することをお勧めします。

```
"Effect" : "Deny",
"Condition" : { "BoolIfExists" : { "aws:MultiFactorAuthPresent" : "false" } }
```

`Deny`、`BoolIfExists`、`false` のこの組み合わせは、MFA を使用して認証されないリクエストを拒否します。具体的には、MFA を使用しないで一時的認証情報を使用して行われたリクエストを拒否します。また、AWS CLI などの長期的な認証情報またはアクセスキーを使用して行われる AWS API オペレーションを使用して行われるリクエストも拒否されます。`*IfExists` 演算子は、`aws:MultiFactorAuthPresent` キーが存在するかどうか、MFA が使用されているかどうかを確認します。これは、MFA を使用して認証されないリクエストを拒否する場合に使用します。これはより安全ですが、AWS CLI または AWS API にアクセスするためにアクセスキーを使用するコードやスクリプトを破損する可能性があります。

**代替の組み合わせ**  
また、[`BoolIfExists`](reference_policies_elements_condition_operators.md#Conditions_IfExists) 演算子を使用して、長期的認証情報を使用して行われる MFA 認証リクエストおよび AWS CLI または AWS API リクエストを許可することもできます。

```
"Effect" : "Allow",
"Condition" : { "BoolIfExists" : { "aws:MultiFactorAuthPresent" : "true" } }
```

キーが存在して MFA が使用されている場合**または**キーが存在しない場合、この条件に一致となります。`Allow`、`BoolIfExists`、`true` のこの組み合わせは、MFA を使用して認証されたリクエスト、または MFA を使用して認証できないリクエストを許可します。つまり、リクエスタが長期的なアクセスキーを使用する場合、AWS CLI、AWS API、および AWS SDK オペレーションが許可されます。この組み合わせでは、MFA を含むことはできるが含んでいない、一時的な認証情報からのリクエストが許可されません。

IAM コンソールのビジュアルエディタを使用してポリシーを作成し、**[MFA 必須]** を選択すると、この組み合わせが適用されます。この設定では、コンソールアクセスに MFA が必要ですが、MFA なしでプログラムによるアクセスを許可します。

または、`Bool` 演算子を使用して、MFA を使用して認証された場合にのみ、プログラムによるリクエストとコンソールによるリクエストを許可できます。

```
"Effect" : "Allow",
"Condition" : { "Bool" : { "aws:MultiFactorAuthPresent" : "true" } }
```

`Allow`、`Bool`、`true` のこの組み合わせは、MFA 認証リクエストのみを許可します。このステートメントは、MFA の使用をサポートする一時的認証情報にのみ適用されます。このステートメントは、長期的アクセスキーを使用して行われたリクエスト、または MFA を使用しないで一時的認証情報を使用して行われたリクエストへのアクセスを許可しません。

MFA キーが存在するかを確認する場合、以下のようなポリシーは使用***しない***でください。

```
#####   WARNING: USE WITH CAUTION   #####

"Effect" : "Allow",
"Condition" : { "Null" : { "aws:MultiFactorAuthPresent" : "false" } }
```

`Allow` 効果、`Null` 要素、`false` 値のこの組み合わせは、リクエストが実際に認証されたかどうかにかかわらず、MFA を使用して認証できるリクエストのみを許可します。これにより、一時的認証情報を使用して行われるすべてのリクエストが許可され、長期的認証情報を使用して行われたリクエストは拒否されます。MFA 認証が実際に使用されたかどうかをテストしないため、この例は慎重に使用してください。

### aws:ChatbotSourceArn
<a name="condition-keys-chatbotsourcearn"></a>

このキーを使用して、プリンシパルが設定したソースチャット設定 ARN を、チャネル設定に関連付けられた IAM ロールのポリシーで指定したチャット設定 ARN と比較します。チャットアプリケーションの Amazon Q Developer によって開始されたロールの引受ロールセッションに基づいてリクエストを承認できます。
+ **可用性** – このキーは、ロールセッションが引き受けられるたびにチャットアプリケーションの Amazon Q Developer サービスによってリクエストのコンテキストに含まれます。このキー値は、[チャットチャネルから AWS CLI コマンドを実行する](https://docs.aws.amazon.com/chatbot/latest/adminguide/chatbot-cli-commands.html)場合など、チャット設定 ARN です。
+ **データ型** – [ARN](reference_policies_elements_condition_operators.md#Conditions_ARN)
+ **値タイプ** — 単一値
+ **値の例** – `arn:aws::chatbot::123456789021:chat-configuration/slack-channel/private_channel`

次のポリシーは、Slack チャネルから発信されるすべてのリクエストに対して、指定されたバケットへの Amazon S3 の PUT リクエストをすべて拒否します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ExampleS3Deny",
            "Effect": "Deny",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "ArnLike": {
                      "aws:ChatbotSourceArn": "arn:aws:chatbot::*:chat-configuration/slack-channel/*"
                }
            }
        }
    ]
}
```

------

### aws:Ec2InstanceSourceVpc
<a name="condition-keys-ec2instancesourcevpc"></a>

このキーは、Amazon EC2 IAM ロール認証情報が配信された VPC を識別します。[`aws:SourceVPC`](#condition-keys-sourcevpc)グローバルキーを含むポリシーでこのキーを使用すると、認証情報が配信された VPC (`aws:SourceVPC`) と一致する VPC から呼び出しが行われたかどうかを確認できます (`aws:Ec2InstanceSourceVpc`)。
+ **可用性** — リクエスターが Amazon EC2 ロールクレデンシャルでリクエストに署名しているときはいつでも、このキーがリクエストコンテキストに含まれます。IAM ポリシー、サービスコントロールポリシー、VPC エンドポイントポリシー、リソースポリシーで使用できます。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

このキーは VPC 識別子の値と共に使用できますが、`aws:SourceVpc` コンテキストキーと組み合わせた変数として使用すると最も便利です。この `aws:SourceVpc` コンテキストキーは、リクエスタが VPC エンドポイントを使用してリクエストを行う場合にのみリクエストコンテキストに含まれます。`aws:Ec2InstanceSourceVpc` と`aws:SourceVpc` を使用すると、通常は一緒に変化する値を比較できるため、`aws:Ec2InstanceSourceVpc` をより幅広く使用できます。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "RequireSameVPC",
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
            "aws:SourceVpc": "${aws:Ec2InstanceSourceVpc}"
        },
        "Null": {
          "ec2:SourceInstanceARN": "false"
        },
        "BoolIfExists": {
          "aws:ViaAWSService": "false"
        }
      }
    }
  ]
}
```

------

上記の例では、`aws:SourceVpc` 値が `aws:Ec2InstanceSourceVpc` 値と等しくない場合、アクセスは拒否されます。ポリシーステートメントは、`ec2:SourceInstanceARN` 条件キーの有無をテストして Amazon EC2 インスタンスのロールとして使用されるロールのみに限定されます。

このポリシーでは、Amazon EC2 インスタンスロールに代わってリクエストが行われた場合に、`aws:ViaAWSService` が AWS リクエストを認可するようにしています。たとえば、Amazon EC2 インスタンスから暗号化された Amazon S3 バケットにリクエストを行うと、Amazon S3 がお客様に代わって AWS KMS を呼び出します。リクエストが AWS KMS に行われたときに、一部のキーが表示されません。

### aws:Ec2InstanceSourcePrivateIPv4
<a name="condition-keys-ec2instancesourceprivateip4"></a>

このキーは、Amazon EC2 IAM ロール認証情報が配信されたプライマリ elastic network interface プライベート IPv4 アドレスを識別します。VPC ID とソースプライベート IP をグローバルに一意に組み合わせるには、この条件キーをコンパニオンキー `aws:Ec2InstanceSourceVpc` と一緒に使用する必要があります。このキー `aws:Ec2InstanceSourceVpc` を使用して、認証情報が配信されたのと同じプライベート IP アドレスからリクエストが行われたことを確認します。
+ **可用性** — このキーは、リクエスターが Amazon EC2 ロールクレデンシャルでリクエストに署名しているときはいつでも、リクエストコンテキストに含まれます。IAM ポリシー、サービスコントロールポリシー、VPC エンドポイントポリシー、リソースポリシーで使用できます。
+ **データ型** – [IP アドレス](reference_policies_elements_condition_operators.md#Conditions_IPAddress)
+ **値タイプ** — 単一値

**重要**  
このキーは `Allow` ステートメント内で単独で使用しないでください。プライベートIPアドレスは、定義上、グローバルに一意ではありません。Amazon EC2 インスタンスの認証情報を使用できる VPC を指定するには、`aws:Ec2InstanceSourcePrivateIPv4`キーを使用するたびに `aws:Ec2InstanceSourceVpc` キーを使用する必要があります。

次の例では、リクエストがロール認証情報と同じ VPC 内の VPC エンドポイント経由で届かない限り、すべてのリソースへのアクセスを拒否するサービスコントロールポリシー (SCP) が示されます。この例では、`aws:Ec2InstanceSourcePrivateIPv4` はソース IP に基づいて認証情報ソースを特定のインスタンスに制限されます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action":  "*",
            "Resource": "*",
            "Condition": {
                "StringNotEquals": {
                    "aws:Ec2InstanceSourceVpc": "${aws:SourceVpc}"
                },                
                "Null": {
                    "ec2:SourceInstanceARN": "false"
                },
                "BoolIfExists": {
                    "aws:ViaAWSService": "false"
                }
            }
        },
        {
            "Effect": "Deny",
            "Action":  "*",
            "Resource": "*",
            "Condition": {
                "StringNotEquals": {
                    "aws:Ec2InstanceSourcePrivateIPv4": "${aws:VpcSourceIp}"
                },                               
                "Null": {
                    "ec2:SourceInstanceARN": "false"
                },
                "BoolIfExists": {
                    "aws:ViaAWSService": "false"
                }
            }
        }
    ]
}
```

------

### aws:SourceIdentity
<a name="condition-keys-sourceidentity"></a>

プリンシパルによって設定されたソース ID と、ポリシーで指定したソース ID を比較するには、このキーを使用します。
+ **可用性** — このキーは、AWS STS assume-role CLI コマンドまたは AWS STS `AssumeRole` API オペレーションを使用してロールが引き継がれるときに、ソース ID が設定された後、リクエストコンテキストに含まれます。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

ポリシーでこのキーを使用して、ロールを引き受けるときにソースIDを設定したプリンシパルによる AWS でのアクションを許可できます。ロールの指定されたソースIDのアクティビティが [AWS CloudTrail](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds) に表示されます。これにより、管理者は AWS のロールで誰または何がアクションを実行したかを簡単に判断できます。

[`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname) とは異なり、ソースIDを設定した後は、値を変更できません。これは、ロールが実行するすべてのアクションのリクエストコンテキストに存在します。この値は、セッション認証情報を使用して別のロールを引き受けるときに、後続のロールセッションに保持されます。別のロールからあるロールを引き受けると、[ロールの連鎖](id_roles.md#iam-term-role-chaining)と呼ばれます。

[`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity) キーは、プリンシパルが、AWS STS assume-role CLI コマンドまたは AWS STS `AssumeRole` API オペレーションを使用してロールを引き受けるときに、最初にソース ID を設定するときに、リクエストに存在します。`aws:SourceIdentity` キーは、ソースIDが設定されているロールセッションで実行されるすべてのアクションの要求に存在します。

アカウント `CriticalRole` の `111122223333` の次のロール信頼ポリシーには、Saanvi または Diego に設定されているソース ID を持たないプリンシパルがロールを引き受けることを防ぐ `aws:SourceIdentity` のための条件が含まれています。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AssumeRoleIfSourceIdentity",
            "Effect": "Allow",
            "Principal": {"AWS": "arn:aws:iam::123456789012:role/CriticalRole"},
            "Action": [
                "sts:AssumeRole",
                "sts:SetSourceIdentity"
            ],
            "Condition": {
                "StringLike": {
                    "aws:SourceIdentity": ["Saanvi","Diego"]
                }
            }
        }
    ]
}
```

------

ソース ID 情報の使用の詳細については、「[引き受けたロールで実行されるアクションのモニタリングと制御](id_credentials_temp_control-access_monitor.md)」を参照してください。

### ec2:RoleDelivery
<a name="condition-keys-ec2-role-delivery"></a>

このキーを使用して、署名付きリクエストのインスタンスメタデータサービスのバージョンを、Amazon EC2 の IAM ロール認証情報と比較します。インスタンスメタデータサービスは、所定のリクエストについて、IMDSv2 に固有の `PUT` または `GET` ヘッダーがそのリクエストに存在するかどうかによって、IMDSv1 と IMDSv2 リクエストを区別します。
+ **可用性** — このキーは、ロールセッションが Amazon EC2 インスタンスで作成されるときは必ずリクエストコンテキストに含まれます。
+ **データ型** – [数値](reference_policies_elements_condition_operators.md#Conditions_Numeric)
+ **値タイプ** — 単一値
+ **値の例** – 1.0、2.0

ローカルコードまたはユーザーに IMDSv2 を使用させるように、各インスタンスのインスタンスメタデータサービス (IMDS) を設定することができます。IMDSv2を使用しなければならないように指定すると、IMDSv1はもう機能しなくなります。
+ インスタンスメタデータサービスバージョン 1 (IMDSv1) – リクエスト/レスポンスメソッド 
+ インスタンスメタデータサービスバージョン 2 (IMDSv2) – セッション指向メソッド

IMDSv2 を使用するようにインスタンスを設定する方法については、「[インスタンスメタデータオプションの設定](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)」を参照してください。

次の例では、リクエストコンテキストの ec2:RoleDelivery の値が 1.0 (IMDSv1) の場合、アクセスが拒否されます。このポリシーステートメントは、リクエストが Amazon EC2 ロールの認証情報によって署名されていない場合は無効となるため、一般的に適用できます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
               {
            "Sid": "RequireAllEc2RolesToUseV2",
            "Effect": "Deny",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "NumericLessThan": {
                    "ec2:RoleDelivery": "2.0"
                }
            }
        }
    ]
}
```

------

詳細については、「[インスタンスメタデータを使用する際のサンプルポリシー](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html#iam-example-instance-metadata)」を参照してください。

### ec2:SourceInstanceArn
<a name="condition-keys-ec2-source-instance-arn"></a>

このキーを使用して、ロールのセッション生成元インスタンスの ARN を比較します。
+ **可用性** — このキーは、ロールセッションが Amazon EC2 インスタンスで作成されるときは必ずリクエストコンテキストに含まれます。
+ **データ型** – [ARN](reference_policies_elements_condition_operators.md#Conditions_ARN)
+ **値タイプ** — 単一値
+ **値の例** – arn:aws::ec2:us-west-2:111111111111:instance/instance-id

ポリシーの例については、「[特定のインスタンスが他の AWS サービスでリソースを表示できるようにする](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html#iam-example-source-instance)」を参照してください。

### glue:RoleAssumedBy
<a name="condition-keys-glue-role-assumed-by"></a>

AWS Glue サービスは、AWS Glue がお客様に変わってサービスロールを使用してリクエストを実行する AWS API リクエストごとに条件キーを設定します (ジョブまたは開発者のエンドポイントではなく、AWS Glue サービスによる直接のリクエスト)。このキーを使用して、AWS リソースへの呼び出しが AWS Glue サービスからのものであるかどうかを確認します。
+ **可用性** – このキーは、AWS Glue がお客様に代わってサービスロールを使用してリクエストを行うときに、リクエストコンテキストに含まれます。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値
+ **値の例** – このキーは常に `glue.amazonaws.com` に設定されます。

次の例では、AWS Glue サービスが Amazon S3 バケットからオブジェクトを取得できるようにする条件を追加します。

```
{
    "Effect": "Allow",
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
    "Condition": {
        "StringEquals": {
            "glue:RoleAssumedBy": "glue.amazonaws.com"
        }
    }
}
```

### glue:CredentialIssuingService
<a name="condition-keys-glue-credential-issuing"></a>

AWS Glue サービスは、ジョブまたは開発者エンドポイントから取得したサービスロールを使用して、AWS API リクエストごとにこのキーを設定します。このキーを使用して、AWS リソースへの呼び出しが AWS Glue ジョブまたは開発者エンドポイントからのものであるかどうかを確認します。
+ **可用性** – このキーは、AWS Glue がジョブまたは開発者エンドポイントからリクエストを実行するときに、リクエストコンテキストに含まれます。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値
+ **値の例** – このキーは常に `glue.amazonaws.com` に設定されます。

次の例では、AWS Glue ジョブで使用される IAM ロールにアタッチされる条件を追加します。これで、特定のアクションが、ロールセッションが AWS Glue ジョブランタイム環境で使用されているかどうかに基づいて、許可/拒否されます。

```
{
    "Effect": "Allow",
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
    "Condition": {
        "StringEquals": {
            "glue:CredentialIssuingService": "glue.amazonaws.com"
        }
    }
}
```

### codebuild:BuildArn
<a name="condition-keys-codebuild-build-arn"></a>

このキーは、IAM ロール認証情報が配信された CodeBuild ビルド ARN を識別します。このキーを使用して、AWS リソースへの呼び出しが特定の CodeBuild ビルドからのものであるかどうかを確認します。

**注記**  
`codebuild:BuildArn` の完全な値には、動的に生成されたビルド ID が含まれているため、事前にはわかりません。
+ **可用性** – このキーは、CodeBuild によって引き受けられるロールによってリクエストが行われるときにリクエストコンテキストに含まれます。
+ **データ型** – [ARN](reference_policies_elements_condition_operators.md#Conditions_ARN)
+ **値タイプ** — 単一値
+ **値の例** – arn:aws:codebuild:us-east-1:123456789012:build/MyBuildProject:12345678-1234-1234-1234-123456789012

次の例では、指定されたバケットへの `s3:GetObject` アクセスを 1 つの特定の CodeBuild ビルドに許可します。

```
{
    "Effect": "Allow",
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
    "Condition": {
        "ArnLike": {
            "codebuild:BuildArn": "arn:aws:codebuild:us-east-1:123456789012:build/MyBuildProject:*"
        }
    }
}
```

### codebuild:ProjectArn
<a name="condition-keys-codebuild-project-arn"></a>

このキーは、IAM ロール認証情報が CodeBuild ビルドに配信された CodeBuild プロジェクト ARN を識別します。このキーを使用して、AWS リソースへの呼び出しが特定の CodeBuild プロジェクトからのものであるかどうかを確認します。
+ **可用性** – このキーは、CodeBuild によって引き受けられるロールによってリクエストが行われるときにリクエストコンテキストに含まれます。
+ **データ型** – [ARN](reference_policies_elements_condition_operators.md#Conditions_ARN)
+ **値タイプ** — 単一値
+ **値の例** – arn:aws:codebuild:us-east-1:123456789012:project/MyBuildProject

次の例では、指定されたバケットへの `s3:GetObject` アクセスを特定の CodeBuild プロジェクトのすべてのビルドに許可します。

```
{
    "Effect": "Allow",
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
    "Condition": {
        "ArnEquals": {
            "codebuild:ProjectArn": "arn:aws:codebuild:us-east-1:123456789012:project/MyBuildProject"
        }
    }
}
```

### lambda:SourceFunctionArn
<a name="condition-keys-lambda-source-function-arn"></a>

このキーを使用して、IAM ロール認証情報が配信された Lambda 関数 ARN を識別します。Lambda サービスは、関数の実行環境から送信される AWS API リクエストごとにこのキーを設定します。このキーを使用して、AWS リソースへの呼び出しが特定の Lambda 関数のコードからのものであるかどうかを確認します。Lambda は、CloudWatch へのログの書き込みや X-Ray へのトレース送信など、実行環境外から送信される一部のリクエストにもこのキーを設定します。
+ **可用性** – このキーは、Lambda 関数コードが呼び出されるときは必ずリクエストコンテキストに含まれます。
+ **データ型** – [ARN](reference_policies_elements_condition_operators.md#Conditions_ARN)
+ **値タイプ** — 単一値
+ **値の例** – arn:aws:lambda:us-east-1:123456789012:function:TestFunction

次の例では、1 つの特定の Lambda 関数に、指定されたバケットへの `s3:PutObject` アクセスを許可します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ExampleSourceFunctionArn",
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "ArnEquals": {
                    "lambda:SourceFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:source_lambda"
                }
            }
        }
    ]
}
```

------

詳細については、*AWS Lambda デベロッパーガイド*の「[Lambda 実行環境での認証情報の使用](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html#permissions-executionrole-source-function-arn)」を参照してください。

### ssm:SourceInstanceArn
<a name="condition-keys-ssm-source-instance-arn"></a>

このキーを使用して、IAM ロール認証情報が配信された AWS Systems Manager マネージドインスタンス ARN を識別します。この条件キーは、リクエストが Amazon EC2 インスタンスプロファイルに関連付けられている IAM ロールを使用してマネージドインスタンスから実行された場合は存在しません。
+ **可用性** – このキーは、ロール認証情報が AWS Systems Manager マネージドインスタンスに配信されるときは必ずリクエストコンテキストに含まれます。
+ **データ型** – [ARN](reference_policies_elements_condition_operators.md#Conditions_ARN)
+ **値タイプ** — 単一値
+ **値の例** – arn:aws::ec2:us-west-2:111111111111:instance/instance-id

### identitystore:UserId
<a name="condition-keys-identity-store-user-id"></a>

このキーを使用して、署名付きリクエストの IAM アイデンティティセンターワークフォース ID を、ポリシーで指定された ID と比較します。
+ **可用性** – このキーは、リクエストの呼び出し元が IAM アイデンティティセンターのユーザーである場合に含まれます。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値
+ **値の例** – 94482488-3041-7026-18f3-be45837cd0e4

AWS CLI、AWS API、AWS SDK を使用して [GetUserId](https://docs.aws.amazon.com//singlesignon/latest/IdentityStoreAPIReference/API_GetUserId.html) API にリクエストを実行することで、IAM アイデンティティセンターのユーザーの UserId を見つけることができます。

## ネットワークのプロパティ
<a name="condition-keys-network-properties"></a>

次の条件キーを使用して、リクエストの発信元ネットワークまたは経由するネットワークの詳細を、ポリシーで指定したプリンシパルのプロパティと比較します。

### aws:SourceIp
<a name="condition-keys-sourceip"></a>

このキーを使用して、リクエスタの IP アドレスをポリシーで指定した IP アドレスと比較します。`aws:SourceIp` 条件キーは、パブリック IP アドレス範囲にのみ使用できます。
+ **可用性** – このキーは、リクエスタが VPC エンドポイントを使用してリクエストを行う場合を除き、リクエストコンテキストに含まれます。
+ **データ型** – [IP アドレス](reference_policies_elements_condition_operators.md#Conditions_IPAddress)
+ **値タイプ** — 単一値

`aws:SourceIp` 条件キーをポリシーで使用して、プリンシパルが指定された IP 範囲内からのみリクエストを行うことを許可できます。

**注記**  
`aws:SourceIp` は IPv4 と IPv6 の両方の IP アドレスおよびレンジをサポートしています。IPv6 をサポートする AWS のサービス のリストについては、「*Amazon VPC ユーザーガイド*」の「[IPv6 をサポートする AWS のサービス](https://docs.aws.amazon.com/vpc/latest/userguide/aws-ipv6-support.html)」を参照してください。

例えば、次の ID ベースのポリシーを IAM ロールにアタッチできます。このポリシーは、指定された IPv4 アドレス範囲から呼び出しを実行する場合に、ユーザーがオブジェクトを `amzn-s3-demo-bucket3` Amazon S3 バケットに格納することを許可します。このポリシーでは、[転送アクセスセッション](access_forward_access_sessions.md) がユーザーに代わってこの操作を実行する AWS サービスも許可されます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "PrincipalPutObjectIfIpAddress",
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket3/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "203.0.113.0/24"
                }
            }
        }
    ]
}
```

------

IPv4 と IPv6 の両方のアドレス指定をサポートするネットワークからのアクセスを制限する必要がある場合は、IAM ポリシー条件に IPv4 と IPv6 のアドレス、または IP アドレスの範囲を含めることができます。次の ID ベースのポリシーは、ユーザーが指定された IPv4 または IPv6 のいずれかのアドレス範囲から呼び出しを実行した場合に、オブジェクトを `amzn-s3-demo-bucket3` Amazon S3 バケットに格納することを許可します。IAM ポリシーに IPv6 アドレス範囲を含める前に、使用している AWS のサービス が IPv6 をサポートしていることを確認してください。IPv6 をサポートする AWS のサービス のリストについては、「*Amazon VPC ユーザーガイド*」の「[IPv6 をサポートする AWS のサービス](https://docs.aws.amazon.com/vpc/latest/userguide/aws-ipv6-support.html)」を参照してください。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "PrincipalPutObjectIfIpAddress",
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket3/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "203.0.113.0/24",
                        "2001:DB8:1234:5678::/64"
                    ]
                }
            }
        }
    ]
}
```

------

リクエスト実行元が Amazon VPC エンドポイントを使用するホストである場合、`aws:SourceIp` キーは使用できません。代わりに、[aws:VpcSourceIp](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-vpcsourceip)などの VPC 固有のキーを使用する必要があります。VPC エンドポイント使用の詳細については、「*AWS PrivateLink ガイド*」の「[VPC エンドポイントおよび VPC エンドポイントサービスの ID およびアクセス管理](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-iam.html)」を参照してください。

**注記**  
ユーザーに代わって AWS のサービス が他の AWS のサービス を呼び出す場合 (サービス間コール)、特定のネットワーク固有の承認コンテキストが編集されます。ポリシーがこの条件キーを `Deny` ステートメントと一緒に使用した場合、意図せずに AWS のサービス プリンシパルがブロックされる可能性があります。セキュリティ要件を維持しながら AWS のサービス が適切に動作させするには、`false` の値を持つ `aws:PrincipalIsAWSService` 条件キーを追加することで、`Deny` ステートメントからサービスプリンシパルを除外します。

### aws:SourceVpc
<a name="condition-keys-sourcevpc"></a>

このキーを使用して、リクエストが VPC エンドポイントのアタッチされている VPC を通過するかどうかを確認します。ポリシーでは、このキーを使用して、特定の VPC にのみアクセスを許可できます。詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[特定の VPC へのアクセスの制限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html#example-bucket-policies-restrict-access-vpc)」を参照してください。
+ **可用性** – このキーは、リクエスタが VPC エンドポイントを使用してリクエストを行う場合にのみリクエストコンテキストに含まれます。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

ポリシーで、このキーを使用して、特定の VPC へのアクセスを許可または制限できます。

例えば、次のアイデンティティベースのポリシーを IAM ロールにアタッチすると、指定された VPC ID からリクエストが行われた場合またはロールに代わってリクエストを行う[転送アクセスセッション (FAS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html) を使用する AWS のサービスによってリクエストが行われた場合を除き、`amzn-s3-demo-bucket3` Amazon S3 バケットへの `PutObject` を拒否できます。[aws:SourceIp](#condition-keys-sourceip) とは異なり、最初のリクエストのソース VPC は保持されないため、FAS リクエストを許可するには [aws:ViaAWSService](#condition-keys-viaawsservice) または [aws:CalledVia](#condition-keys-calledvia) を使用する必要があります。

**注記**  
このポリシーでは、アクションを許可しません。特定のアクションを許可する他のポリシーと組み合わせてこのポリシーを使用します。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "PutObjectIfNotVPCID",
      "Effect": "Deny",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket3/*",
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:SourceVpc": "vpc-1234567890abcdef0"
        },
        "Bool": {
          "aws:ViaAWSService": "false"
        }
      }
    }
  ]
}
```

------

**注記**  
AWS は、対象とするサービスで `aws:SourceVpcArn` がサポートされている場合は `aws:SourceVpc` の代わりに `aws:SourceVpcArn` を使用することを推奨します。サポートされているサービスの一覧については [aws:SourceVpcArn](#condition-keys-sourcevpcarn) を参照してください。

### aws:SourceVpcArn
<a name="condition-keys-sourcevpcarn"></a>

VPC エンドポイント経由でリクエストが行われた VPC の ARN を検証するときはこのキーを使用します。このキーは、VPC エンドポイントがアタッチされている VPC の ARN を返します。
+ **可用性** – このキーは、リクエストが VPC エンドポイントを介して行われた場合にサポートされているサービスのリクエストコンテキストに含まれます。パブリックサービスエンドポイントを介して行われたリクエストにはこのキーは含まれません。このキーは、以下のサービスでサポートされています。
  + AWS App Runner (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapprunner.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapprunner.html))
  + AWS Application Discovery Service (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapplicationdiscoveryservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapplicationdiscoveryservice.html))
  + Amazon Athena (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html))
  + AWS Cloud Map (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudmap.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudmap.html))
  + Amazon CloudWatch Application Insights (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchapplicationinsights.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchapplicationinsights.html))
  + AWS CloudFormation (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html))
  + Amazon Comprehend Medical (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncomprehendmedical.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncomprehendmedical.html))
  + AWS Compute Optimizer (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscomputeoptimizer.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscomputeoptimizer.html))
  + Amazon; Elastic Container Registry (prefix: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerregistry.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerregistry.html))
  + Amazon Elastic Container Service (prefix: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html))
  + Amazon Kinesis Analytics (prefix: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisanalytics.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisanalytics.html))
  + Amazon Route 53 (prefix: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonroute53.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonroute53.html))
  + AWS DataSync (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.html))
  + Amazon Elastic Block Store (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticblockstore.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticblockstore.html))
  + Amazon EventBridge スケジューラ (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoneventbridgescheduler.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoneventbridgescheduler.html))
  + Amazon Data Firehose (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisfirehose.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisfirehose.html))
  + AWS HealthImaging (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthimaging.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthimaging.html))
  + AWS HealthLake (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthlake.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthlake.html))
  + AWS HealthOmics (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthomics.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthomics.html))
  + AWS Identity and Access Management (`iam:PassRole` アクションを除く) (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html))
  + AWS IoT FleetWise (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleetwise.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleetwise.html))
  + AWS IoT Wireless (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotwireless.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotwireless.html))
  + AWS Key Management Service (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html))
  + AWS Lambda (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html))
  + AWS Payment Cryptography (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspaymentcryptography.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspaymentcryptography.html))
  + Amazon Polly (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpolly.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpolly.html))
  + AWS Private Certificate Authority (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsprivatecertificateauthority.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsprivatecertificateauthority.html))
  + AWS ごみ箱 (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrecyclebin.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrecyclebin.html))
  + Amazon Rekognition (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrekognition.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrekognition.html))
  + Service Quotas (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_servicequotas.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_servicequotas.html))
  + Amazon Simple Storage Service (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html))
  + AWS Storage Gateway (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstoragegateway.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstoragegateway.html))
  + AWS Systems Manager Incident Manager Contacts (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssystemsmanagerincidentmanagercontacts.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssystemsmanagerincidentmanagercontacts.html))
  + Amazon Textract (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontextract.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontextract.html))
  + Amazon Transcribe (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontranscribe.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontranscribe.html))
  + AWS Transfer Family (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html))
+ **データ型** – ARN

  AWS では、ARN を比較する場合、[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)の代わりに [ARN 演算子](reference_policies_elements_condition_operators.md#Conditions_ARN)を使用することをお勧めします。
+ **値タイプ** — 単一値
+ **値の例** – `arn:aws:ec2:us-east-1:123456789012:vpc/vpc-0e9801d129EXAMPLE`

以下は、VPC `vpc-1a2b3c4d` の外側から `amzn-s3-demo-bucket` およびそのオブジェクトへのアクセスを拒否するバケットポリシーの例です。

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
     {
       "Sid": "Access-to-specific-VPC-only",
       "Principal": "*",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket",
                    "arn:aws:s3:::amzn-s3-demo-bucket/*"],
       "Condition": {
         "ArnNotEquals": {
           "aws:SourceVpcArn": "arn:aws:ec2:us-east-1:*:vpc/vpc-1a2b3c4d"
         }
       }
     }
   ]
}
```

### aws:SourceVpce
<a name="condition-keys-sourcevpce"></a>

このキーを使用して、リクエストの VPC エンドポイント識別子をポリシーで指定したエンドポイント ID と比較します。
+ **可用性** – このキーは、リクエスタが VPC エンドポイントを使用してリクエストを行う場合にのみリクエストコンテキストに含まれます。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

ポリシーでは、このキーを使用して、特定の VPC エンドポイントへのアクセスを制限できます。詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[特定の VPC へのアクセスの制限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html#example-bucket-policies-restrict-access-vpc)」を参照してください。[aws:SourceVpc](#condition-keys-sourcevpc) を使用する場合と同様に、[転送アクセスセッション (FAS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html) を使用して AWS のサービスによって行われたリクエストを許可するには、[aws:ViaAWSService](#condition-keys-viaawsservice) または [aws:CalledVia](#condition-keys-calledvia) を使用する必要があります。この理由は、最初のリクエストのソース VPC エンドポイントが保持されないためです。

### aws:VpceAccount
<a name="condition-keys-vpceaccount"></a>

このキーを使用して、リクエストが行われた VPC エンドポイントを所有する AWS アカウント ID と、ポリシーで指定したアカウント ID を比較します。この条件キーは、リクエストが、特定のアカウントが所有する VPC エンドポイントを通過するようにすることで、ネットワーク境界コントロールを確立するのに役立ちます。
+ **可用性** – このキーは、リクエストが VPC エンドポイントを介して行われた場合にリクエストコンテキストに含まれます。パブリックサービスエンドポイントを介して行われたリクエストにはこのキーは含まれません。

  このキーは、以下のサービスでサポートされています。
  + AWS App Runner (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapprunner.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapprunner.html))
  + AWS Application Discovery Service (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapplicationdiscoveryservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapplicationdiscoveryservice.html))
  + Amazon Athena (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html))
  + AWS Cloud Map (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudmap.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudmap.html))
  + Amazon CloudWatch Application Insights (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchapplicationinsights.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchapplicationinsights.html))
  + AWS CloudFormation (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html))
  + Amazon Comprehend Medical (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncomprehendmedical.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncomprehendmedical.html))
  + AWS Compute Optimizer (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscomputeoptimizer.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscomputeoptimizer.html))
  + Amazon; Elastic Container Registry (prefix: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerregistry.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerregistry.html))
  + Amazon Elastic Container Service (prefix: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html))
  + Amazon Kinesis Analytics (prefix: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisanalytics.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisanalytics.html))
  + Amazon Route 53 (prefix: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonroute53.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonroute53.html))
  + AWS DataSync (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.html))
  + Amazon Elastic Block Store (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticblockstore.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticblockstore.html))
  + Amazon EventBridge スケジューラ (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoneventbridgescheduler.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoneventbridgescheduler.html))
  + Amazon Data Firehose (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisfirehose.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisfirehose.html))
  + AWS HealthImaging (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthimaging.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthimaging.html))
  + AWS HealthLake (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthlake.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthlake.html))
  + AWS HealthOmics (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthomics.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthomics.html))
  + AWS Identity and Access Management (`iam:PassRole` アクションを除く) (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html))
  + AWS IoT FleetWise (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleetwise.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleetwise.html))
  + AWS IoT Wireless (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotwireless.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotwireless.html))
  + AWS Key Management Service (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html))
  + AWS Lambda (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html))
  + AWS Payment Cryptography (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspaymentcryptography.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspaymentcryptography.html))
  + Amazon Polly (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpolly.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpolly.html))
  + AWS Private Certificate Authority (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsprivatecertificateauthority.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsprivatecertificateauthority.html))
  + AWS ごみ箱 (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrecyclebin.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrecyclebin.html))
  + Amazon Rekognition (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrekognition.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrekognition.html))
  + Service Quotas (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_servicequotas.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_servicequotas.html))
  + Amazon Simple Storage Service (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html))
  + AWS Storage Gateway (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstoragegateway.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstoragegateway.html))
  + AWS Systems Manager Incident Manager Contacts (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssystemsmanagerincidentmanagercontacts.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssystemsmanagerincidentmanagercontacts.html))
  + Amazon Textract (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontextract.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontextract.html))
  + Amazon Transcribe (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontranscribe.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontranscribe.html))
  + AWS Transfer Family (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html))
+ **データ型** – [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値
+ **値の例** – `123456789012`

この条件キーを使用してリソースへのアクセスを制限し、アカウントが所有する VPC エンドポイントを経由してリクエストを送信する必要があるように設定することができます。次の Amazon S3 バケットポリシーの例では、指定されたアカウントが所有する VPC エンドポイントを経由してリクエストが送信されたときにアクセスを許可します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessToSpecificVpceAccountOnly",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/RoleName"
            },
            "Action": "s3:GetObject",
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
            "Condition": {
                "StringEquals": {
                    "aws:VpceAccount": "111122223333"
                }
            }
        }
    ]
}
```

------

**注記**  
この条件キーは現在、AWS サービスの一部でサポートされています。サポートされていないサービスでこのキーを使用すると、意図しない認可結果につながる可能性があります。必ず、条件キーの範囲をポリシーでサポートされているサービスに設定するようにしてください。

一部の AWS サービスは、ユーザーに代わって動作する際に自身のネットワークからユーザーのリソースにアクセスします。このようなサービスを使用する場合は、上記のポリシー例を編集して、AWS サービスがネットワーク外からリソースにアクセスできるようにする必要があります。リクエストオリジンに基づいてアクセスコントロールを適用するときに考慮する必要があるアクセスパターンの詳細については、「[データ境界を使用してアクセス許可のガードレールを確立する](access_policies_data-perimeters.md)」を参照してください。

### aws:VpceOrgID
<a name="condition-keys-vpceorgid"></a>

このキーを使用して、リクエストが行われた VPC エンドポイントを所有する AWS Organizations の組織の ID と、ポリシーで指定した ID を比較します。この条件キーは、組織内のアカウントが所有するすべての VPC エンドポイントを自動的に含めることで、ネットワーク境界コントロールに対する最もスケーラブルなアプローチを提供します。
+ **可用性** – このキーは、リクエストが VPC エンドポイントを介して行われ、VPC エンドポイントの所有者アカウントが AWS 組織のメンバーである場合に、リクエストコンテキストに含まれます。他のネットワークパスを介して行われたリクエストや、VPC エンドポイントの所有者アカウントが組織のメンバーでない場合には、このキーは含まれません。

  このキーは、以下のサービスでサポートされています。
  + AWS App Runner (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapprunner.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapprunner.html))
  + AWS Application Discovery Service (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapplicationdiscoveryservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapplicationdiscoveryservice.html))
  + Amazon Athena (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html))
  + AWS B2B Data Interchange (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsb2bdatainterchange.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsb2bdatainterchange.html))
  + AWS Cloud Map (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudmap.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudmap.html))
  + Amazon CloudWatch Application Insights (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchapplicationinsights.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchapplicationinsights.html))
  + AWS CloudFormation (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html))
  + Amazon Cognito (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncognitoidentity.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncognitoidentity.html))
  + Amazon Comprehend Medical (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncomprehendmedical.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncomprehendmedical.html))
  + AWS Compute Optimizer (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscomputeoptimizer.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscomputeoptimizer.html))
  + AWS Database Migration Service (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatabasemigrationservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatabasemigrationservice.html))
  + AWS Directory Service Data (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdirectoryservicedata.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdirectoryservicedata.html))
  + Amazon; Elastic Container Registry (prefix: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerregistry.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerregistry.html))
  + Amazon Elastic Container Service (prefix: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html))
  + Amazon Kinesis Analytics (prefix: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisanalytics.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisanalytics.html))
  + Amazon Route 53 (prefix: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonroute53.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonroute53.html))
  + AWS DataSync (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.html))
  + Amazon Elastic Block Store (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticblockstore.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticblockstore.html))
  + Amazon EventBridge スケジューラ (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoneventbridgescheduler.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoneventbridgescheduler.html))
  + Amazon Data Firehose (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisfirehose.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisfirehose.html))
  + AWS HealthImaging (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthimaging.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthimaging.html))
  + AWS HealthLake (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthlake.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthlake.html))
  + AWS HealthOmics (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthomics.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthomics.html))
  + AWS Identity and Access Management (`iam:PassRole` アクションを除く) (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html))
  + AWS Identity Store (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentitystore.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentitystore.html))
  + AWS IoT FleetWise (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleetwise.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleetwise.html))
  + AWS IoT TwinMaker (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiottwinmaker.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiottwinmaker.html))
  + AWS IoT Wireless (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotwireless.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotwireless.html))
  + Amazon Keyspaces (Apache Cassandra 向け) (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkeyspacesforapachecassandra.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkeyspacesforapachecassandra.html))
  + AWS Key Management Service (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html))
  + AWS Lambda (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html))
  + AWS Network Firewall (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsnetworkfirewall.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsnetworkfirewall.html))
  + AWS Payment Cryptography (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspaymentcryptography.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspaymentcryptography.html))
  + Amazon Pinpoint SMS and Voice Service (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpinpointsmsandvoiceservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpinpointsmsandvoiceservice.html))
  + Amazon Polly (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpolly.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpolly.html))
  + AWS の料金表 (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspricelist.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspricelist.html))
  + AWS Private Certificate Authority (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsprivatecertificateauthority.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsprivatecertificateauthority.html))
  + AWS ごみ箱 (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrecyclebin.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrecyclebin.html))
  + Amazon Rekognition (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrekognition.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrekognition.html))
  + Service Quotas (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_servicequotas.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_servicequotas.html))
  + Amazon Simple Email Service (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonses.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonses.html))
  + Amazon Simple Storage Service (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html))
  + Amazon Simple Queue Service (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonsqs.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonsqs.html))
  + AWS Storage Gateway (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstoragegateway.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstoragegateway.html))
  + AWS Systems Manager Incident Manager Contacts (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssystemsmanagerincidentmanagercontacts.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssystemsmanagerincidentmanagercontacts.html))
  + Amazon Textract (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontextract.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontextract.html))
  + Amazon Transcribe (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontranscribe.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontranscribe.html))
  + AWS Transfer Family (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html))
  + Amazon WorkMail (プレフィクス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonworkmail.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonworkmail.html))
+ **データ型** – [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値
+ **値の例** – `o-a1b2c3d4e5`

次のリソースコントロールポリシーの例では、リクエストが、指定された組織が所有する VPC エンドポイントを経由して送信されたか、またはユーザーに代わって動作する AWS サービスのネットワークから送信された場合を除き、Amazon S3 および AWS Key Management Service リソースへのアクセスを拒否します。組織によっては、サードパーティーパートナーにアクセスを許可するなど、組織のニーズに合わせてこのポリシーをさらに編集する必要があります。リクエストオリジンに基づいてアクセスコントロールを適用するときに考慮する必要があるアクセスパターンの詳細については、「[データ境界を使用してアクセス許可のガードレールを確立する](access_policies_data-perimeters.md)」を参照してください。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnforceNetworkPerimeterVpceOrgID",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:*",
        "kms:*"
      ],
      "Resource": "*",
      "Condition": {
        "BoolIfExists": {
          "aws:PrincipalIsAWSService": "false",
          "aws:ViaAWSService": "false"
        },
        "StringNotEqualsIfExists": {
            "aws:VpceOrgID": "o-abcdef0123",
            "aws:PrincipalTag/network-perimeter-exception": "true"
        }
      }
    }
  ]
}
```

------

**注記**  
この条件キーは現在、AWS サービスの一部でサポートされています。サポートされていないサービスでこのキーを使用すると、意図しない認可結果につながる可能性があります。必ず、条件キーの範囲をポリシーでサポートされているサービスに設定するようにしてください。

### aws:VpceOrgPaths
<a name="condition-keys-vpceorgpaths"></a>

このキーを使用して、リクエストが行われた VPC エンドポイントの AWS Organizations パスと、ポリシーで指定したパスを比較します。この条件キーを使用すると、組織単位 (OU) レベルでネットワーク境界コントロールを実装し、指定した OU 内に新しいエンドポイントを追加すると、VPC エンドポイントの使用状況に合わせて自動的にスケールするように設定できます。
+ **可用性** – このキーは、リクエストが VPC エンドポイントを介して行われ、VPC エンドポイントの所有者アカウントが組織のメンバーである場合に、リクエストコンテキストに含まれます。他のネットワークパスを介して行われたリクエストや、VPC エンドポイントの所有者アカウントが組織のメンバーでない場合には、このキーは含まれません。

  このキーは、以下のサービスでサポートされています。
  + AWS App Runner (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapprunner.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapprunner.html))
  + AWS Application Discovery Service (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapplicationdiscoveryservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsapplicationdiscoveryservice.html))
  + Amazon Athena (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html))
  + AWS Cloud Map (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudmap.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudmap.html))
  + Amazon CloudWatch Application Insights (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchapplicationinsights.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchapplicationinsights.html))
  + AWS CloudFormation (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html))
  + Amazon Comprehend Medical (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncomprehendmedical.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncomprehendmedical.html))
  + AWS Compute Optimizer (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscomputeoptimizer.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscomputeoptimizer.html))
  + Amazon; Elastic Container Registry (prefix: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerregistry.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerregistry.html))
  + Amazon Elastic Container Service (prefix: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html))
  + Amazon Kinesis Analytics (prefix: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisanalytics.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisanalytics.html))
  + Amazon Route 53 (prefix: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonroute53.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonroute53.html))
  + AWS DataSync (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.html))
  + Amazon Elastic Block Store (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticblockstore.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticblockstore.html))
  + Amazon EventBridge スケジューラ (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoneventbridgescheduler.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoneventbridgescheduler.html))
  + Amazon Data Firehose (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisfirehose.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkinesisfirehose.html))
  + AWS HealthImaging (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthimaging.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthimaging.html))
  + AWS HealthLake (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthlake.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthlake.html))
  + AWS HealthOmics (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthomics.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awshealthomics.html))
  + AWS Identity and Access Management (`iam:PassRole` アクションを除く) (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html))
  + AWS IoT FleetWise (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleetwise.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleetwise.html))
  + AWS IoT Wireless (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotwireless.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotwireless.html))
  + AWS Key Management Service (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html))
  + AWS Lambda (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html))
  + AWS Payment Cryptography (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspaymentcryptography.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awspaymentcryptography.html))
  + Amazon Polly (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpolly.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonpolly.html))
  + AWS Private Certificate Authority (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsprivatecertificateauthority.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsprivatecertificateauthority.html))
  + AWS ごみ箱 (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrecyclebin.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrecyclebin.html))
  + Amazon Rekognition (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrekognition.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrekognition.html))
  + Service Quotas (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_servicequotas.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_servicequotas.html))
  + Amazon Simple Storage Service (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html))
  + AWS Storage Gateway (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstoragegateway.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstoragegateway.html))
  + AWS Systems Manager Incident Manager Contacts (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssystemsmanagerincidentmanagercontacts.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssystemsmanagerincidentmanagercontacts.html))
  + Amazon Textract (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontextract.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontextract.html))
  + Amazon Transcribe (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontranscribe.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazontranscribe.html))
  + AWS Transfer Family (プレフィックス: [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html))
+ **データ型** – [文字列](reference_policies_elements_condition_operators.md#Conditions_String) (リスト)
+ **値タイプ** — 複数値
+ **値の例** – `o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/`

`aws:VpceOrgPaths` は複数値の条件キーであるため、このキーを使用する場合は、[文字列条件演算子](reference_policies_elements_condition_operators.md#Conditions_String)とともに `ForAnyValue` または `ForAllValues` の集合演算子を使用する必要があります。次の Amazon S3 バケットポリシーの例では、指定された組織単位内のアカウントが所有する VPC エンドポイントを経由してリクエストが送信されたときにのみアクセスを許可します。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessFromSpecificOrgPaths",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/RoleName"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
      "Condition": {
        "ForAnyValue:StringLike": {
          "aws:VpceOrgPaths": [
            "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/*",
            "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-33333333/*"
          ]
        }
      }
    }
  ]
}
```

------

**注記**  
この条件キーは現在、AWS サービスの一部でサポートされています。サポートされていないサービスでこのキーを使用すると、意図しない認可結果につながる可能性があります。必ず、条件キーの範囲をポリシーでサポートされているサービスに設定するようにしてください。

一部の AWS サービスは、ユーザーに代わって動作する際に自身のネットワークからユーザーのリソースにアクセスします。このようなサービスを使用する場合は、上記のポリシー例を編集して、AWS サービスがネットワーク外からリソースにアクセスできるようにする必要があります。リクエストオリジンに基づいてアクセスコントロールを適用するときに考慮する必要があるアクセスパターンの詳細については、「[データ境界を使用してアクセス許可のガードレールを確立する](access_policies_data-perimeters.md)」を参照してください。

### aws:VpcSourceIp
<a name="condition-keys-vpcsourceip"></a>

このキーを使用して、リクエストの作成元の IP アドレスと、ポリシーで指定した IP アドレスを比較します。ポリシーでは、リクエストが指定された IP アドレスから送信され、VPC エンドポイントを経由する場合にのみキーが一致します。
+ **可用性** – このキーは、リクエストが VPC エンドポイントを使用して行われた場合にのみリクエストコンテキストに含まれます。
+ **データ型** – [IP アドレス](reference_policies_elements_condition_operators.md#Conditions_IPAddress)
+ **値タイプ** — 単一値

詳細については、「*Amazon VPC ユーザーガイド*」の「[エンドポイントポリシーを使用して VPC エンドポイントへのアクセスを制御する](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html)」を参照してください。[aws:SourceVpc](#condition-keys-sourcevpc) を使用する場合と同様に、[転送アクセスセッション (FAS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html) を使用して AWS のサービスによって行われたリクエストを許可するには、[aws:ViaAWSService](#condition-keys-viaawsservice) または [aws:CalledVia](#condition-keys-calledvia) を使用する必要があります。この理由は、VPC エンドポイントを使用して行われた最初のリクエストのソース IP が FAS リクエストで保持されないためです。

**注記**  
`aws:VpcSourceIp` は IPv4 と IPv6 の両方の IP アドレスおよびレンジをサポートしています。IPv6 をサポートする AWS のサービス のリストについては、「*Amazon VPC ユーザーガイド*」の「[IPv6 をサポートする AWS のサービス](https://docs.aws.amazon.com/vpc/latest/userguide/aws-ipv6-support.html)」を参照してください。  
`aws:VpcSourceIp` 条件キーは、常に `aws:SourceVpc` または `aws:SourceVpce` 条件キーのいずれかと組み合わせて使用されるべきです。そうしないと、同じまたは重複する IP CIDR を使用する予期しない VPC からの API コールがポリシーによって許可される可能性があります。これは、2 つの無関係な VPC からの IP CIDR が同じまたは重複している可能性があるために発生する場合があります。代わりに、VPC ID または VPC エンドポイント ID は、グローバルに一意の識別子を持つため、ポリシーで使用されるべきです。これらの一意の識別子により、予期しない結果の発生が回避されます。

**注記**  
ユーザーに代わって AWS のサービス が他の AWS のサービス を呼び出す場合 (サービス間コール)、特定のネットワーク固有の承認コンテキストが編集されます。ポリシーがこの条件キーを `Deny` ステートメントと一緒に使用した場合、意図せずに AWS のサービス プリンシパルがブロックされる可能性があります。セキュリティ要件を維持しながら AWS のサービス が適切に動作させするには、`false` の値を持つ `aws:PrincipalIsAWSService` 条件キーを追加することで、`Deny` ステートメントからサービスプリンシパルを除外します。

## リソースのプロパティ
<a name="condition-keys-resource-properties"></a>

次の条件キーを使用して、リクエストの送信先リソースの詳細を、ポリシーで指定したリソースのプロパティと比較します。

### aws:ResourceAccount
<a name="condition-keys-resourceaccount"></a>

このキーを使用して、ポリシーのリソースアカウントと要求されたリソース所有者の [AWS アカウント ID](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) を比較します。その後、リソースを所有するアカウントに応じて、そのリソースへのアクセスを許可または拒否することができます。
+ **可用性** - このキーは常時ほとんどのサービスアクションのリクエストコンテキストに含まれます。以下のアクションではこのキーをサポートしていません。
  + AWS Audit Manager
    + `auditmanager:UpdateAssessmentFrameworkShare`
  + Amazon Detective
    + `detective:AcceptInvitation`
  + AWS Directory Service
    + `ds:AcceptSharedDirectory`
  + Amazon Elastic Block Store - すべてのアクション
  + Amazon EC2
    + `ec2:AcceptTransitGatewayPeeringAttachment`
    + `ec2:AcceptVpcEndpointConnections`
    + `ec2:AcceptVpcPeeringConnection`
    + `ec2:CreateTransitGatewayPeeringAttachment`
    + `ec2:CreateVpcEndpoint`
    + `ec2:CreateVpcPeeringConnection`
  + Amazon EventBridge
    + `events:PutEvents` – 2023 年 3 月 2 日以前にそのイベントバスがクロスアカウントの EventBridge ターゲットとして設定されていた場合、EventBridge `PutEvents` は別のアカウントのイベントバスを呼び出します。詳細については、「*Amazon EventBridge ユーザーガイド*」の「[他の AWS アカウントからのイベントを許可するアクセス許可の付与](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-cross-account.html#eb-receiving-events-from-another-account)」を参照してください。
  + Amazon GuardDuty
    + `guardduty:AcceptAdministratorInvitation`
  + Amazon Macie
    + `macie2:AcceptInvitation`
  + Amazon OpenSearch Service
    + `es:AcceptInboundConnection`
  + Amazon Route 53
    + `route53:AssociateVpcWithHostedZone`
    + `route53:CreateVPCAssociationAuthorization`
  + AWS Security Hub CSPM
    + `securityhub:AcceptAdministratorInvitation`
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

**注記**  
上記のサポートされていないアクションに関するその他の考慮事項については、[data-perimeter-policy-examples](https://github.com/aws-samples/data-perimeter-policy-examples) リポジトリを参照してください。

このキーはリクエストで評価されたリソースを持つアカウントの AWS アカウント ID に相当します。

アカウントのリソースのほとんどで、[ARN](reference_policies_elements_condition_operators.md#Conditions_ARN) にそのリソースの所有者アカウント ID が含まれています。Amazon S3 バケットなどの特定のリソースでは、リソース ARN にアカウント ID は含まれていません。次の 2 つの例は、ARN にアカウント ID を持つリソースと、アカウント ID を持たない Amazon S3 ARN の違いを示しています。
+ `arn:aws:iam::123456789012:role/AWSExampleRole` – アカウント 123456789012 内で作成および所有されている IAM ロール。
+ `arn:aws:s3:::amzn-s3-demo-bucket2` — ARN に表示されていない `111122223333` アカウント内で作成および所有されている Amazon S3 バケット。

AWS コンソールや API、または CLI を使用して、すべてのリソースおよび対応する ARN を検索します。

リソース所有者のアカウント ID に応じて、リソースへのアクセス権を拒否するポリシーを記述します。例えば、リソースが*指定されたアカウント*に属さない場合に、以下の ID ベースポリシーでは*指定されたリソース*へのアクセスを拒否します。

このポリシーを使用するには、*イタリック体のプレースホルダーテキスト*をお客様のアカウント情報と置き換えます。

**重要**  
このポリシーでは、アクションを許可しません。代わりに、ステートメントに記載され、リストされたアカウントに属さないすべてのリソースへのアクセスを明示的に拒否する `Deny` 効果を使用します。特定のリソースへのアクセスを許可する他のポリシーと組み合わせてこのポリシーを使用します。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyInteractionWithResourcesNotInSpecificAccount",
      "Action": "service:*",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:service:us-east-1:111122223333:*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceAccount": [
            "111122223333"
          ]
        }
      }
    }
  ]
}
```

------

このポリシーでは、特定の AWS アカウント でリソースを所有する場合を除き、特定の AWS サービスのすべてのリソースへのアクセスを拒否します。

**注記**  
一部の AWS のサービス では他の AWS アカウント でホストされている AWS 所有リソースへのアクセスを必要とします。ID ベースのポリシーで `aws:ResourceAccount` を使用する場合は、これらのリソースにアクセスする ID の機能に影響を与える可能性があります。

AWS Data Exchange などの特定の AWS サービスでは、通常のオペレーションで AWS アカウント の外部のリソースへのアクセスに依存しています。ポリシーに `aws:ResourceAccount` 要素を使う場合、それらのサービスの免除を指定するために追加のステートメントを含めます。ポリシー [AWS: AWS Data Exchange を除くアカウント外の Amazon S3 リソースへのアクセスを拒否する](reference_policies_examples_resource_account_data_exch.md) の例では、サービスが所有するリソースの例外を定義しながら、リソースアカウントに応じてアクセスを拒否する方法を示しています。

独自のカスタムポリシーを作成する場合に、このポリシーの例をテンプレートとして使用します。詳細については、サービスの[ドキュメント](https://docs.aws.amazon.com/index.html)を参照してください。

### aws:ResourceOrgPaths
<a name="condition-keys-resourceorgpaths"></a>

このキーを使用して、アクセスされたリソースの AWS Organizations パスをポリシー内のパスと比較します。ポリシーでは、この条件キーによって、このリソースが AWS Organizations の指定した組織ルートまたは組織単位 (OU) 内のアカウントメンバーに属していることを保証します。AWS Organizations パスは、Organizations エンティティの構造をテキストで表記したものです。パスの使用と理解の詳細については、「[AWS Organizations エンティティパスを理解する](access_policies_last-accessed-view-data-orgs.md#access_policies_last-accessed-viewing-orgs-entity-path)」を参照してください。
+ **可用性** – このキーは、リソースを所有するアカウントが組織のメンバーである場合にのみ、リクエストコンテキストに含まれます。このグローバル条件キーでは以下のアクションがサポートされません。
  + AWS Audit Manager
    + `auditmanager:UpdateAssessmentFrameworkShare`
  + Amazon Detective
    + `detective:AcceptInvitation`
  + AWS Directory Service
    + `ds:AcceptSharedDirectory`
  + Amazon Elastic Block Store - すべてのアクション
  + Amazon EC2
    + `ec2:AcceptTransitGatewayPeeringAttachment`
    + `ec2:AcceptVpcEndpointConnections`
    + `ec2:AcceptVpcPeeringConnection`
    + `ec2:CreateTransitGatewayPeeringAttachment`
    + `ec2:CreateVpcEndpoint`
    + `ec2:CreateVpcPeeringConnection`
  + Amazon EventBridge
    + `events:PutEvents` – 2023 年 3 月 2 日以前にそのイベントバスがクロスアカウントの EventBridge ターゲットとして設定されていた場合、EventBridge `PutEvents` は別のアカウントのイベントバスを呼び出します。詳細については、「*Amazon EventBridge ユーザーガイド*」の「[他の AWS アカウントからのイベントを許可するアクセス許可の付与](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-cross-account.html#eb-receiving-events-from-another-account)」を参照してください。
  + Amazon GuardDuty
    + `guardduty:AcceptAdministratorInvitation`
  + Amazon Macie
    + `macie2:AcceptInvitation`
  + Amazon OpenSearch Service
    + `es:AcceptInboundConnection`
  + Amazon Route 53
    + `route53:AssociateVpcWithHostedZone`
    + `route53:CreateVPCAssociationAuthorization`
  + AWS Security Hub CSPM
    + `securityhub:AcceptAdministratorInvitation`
+ **データ型** – [文字列](reference_policies_elements_condition_operators.md#Conditions_String) (リスト)
+ **値タイプ** — 複数値

**注記**  
上記のサポートされていないアクションに関するその他の考慮事項については、[data-perimeter-policy-examples](https://github.com/aws-samples/data-perimeter-policy-examples) リポジトリを参照してください。

`aws:ResourceOrgPaths` は複数の値を持つ条件キーです。複数値のキーは、リクエストコンテキストに複数の値を持つことができます。このキーを使用する場合は、[文字列条件演算子](reference_policies_elements_condition_operators.md#Conditions_String)とともに `ForAnyValue` または `ForAllValues` の集合演算子を使用する必要があります。複数値を持つ条件キーの詳細については、「[複数値のコンテキストキーの演算子を設定する](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)」を参照してください。

例えば次の条件では、その組織 `o-a1b2c3d4e5` に属するリソースに `True` を返します。ワイルドカードを含める場合は、条件演算子 [StringLike](reference_policies_elements_condition_operators.md) を使用する必要があります。

```
"Condition": { 
      "ForAnyValue:StringLike": {
             "aws:ResourceOrgPaths":["o-a1b2c3d4e5/*"]
   }
}
```

次の条件では、OU ID `ou-ab12-11111111` を持つリソースには `True` が返されます。OU ou-ab12-11111111、または子 OU のいずれかにアタッチするアカウントが所有するリソースと一致することになります。

```
"Condition": { "ForAnyValue:StringLike" : {
     "aws:ResourceOrgPaths":["o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/*"]
}}
```

次の条件が OU ID `ou-ab12-22222222` に直接アタッチしたアカウントが所有するリソースに `True` が返されますが、子 OU には返されません。次の例では [StringEquals](reference_policies_elements_condition_operators.md) 条件演算子を使用して、ワイルドカード一致ではなく OU ID の完全一致要件を指定します。

```
"Condition": { "ForAnyValue:StringEquals" : {
     "aws:ResourceOrgPaths":["o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/"]
}}
```

**注記**  
一部の AWS のサービス では他の AWS アカウント でホストされている AWS 所有リソースへのアクセスを必要とします。ID ベースのポリシーで `aws:ResourceOrgPaths` を使用する場合は、これらのリソースにアクセスする ID の機能に影響を与える可能性があります。

AWS Data Exchange などの特定の AWS サービスでは、通常のオペレーションで AWS アカウント の外部のリソースへのアクセスに依存しています。ポリシーに `aws:ResourceOrgPaths` キーを使う場合、それらのサービスの免除を指定するために追加のステートメントを含めます。ポリシー [AWS: AWS Data Exchange を除くアカウント外の Amazon S3 リソースへのアクセスを拒否する](reference_policies_examples_resource_account_data_exch.md) の例では、サービスが所有するリソースの例外を定義しながら、リソースアカウントに応じてアクセスを拒否する方法を示しています。類似ポリシーを作成して、サービス所有のリソースを考慮しながら、`aws:ResourceOrgPaths` キーを使用して組織単位 (OU) 内のリソースへのアクセスを制限できます。

独自のカスタムポリシーを作成する場合に、このポリシーの例をテンプレートとして使用します。詳細については、サービスの[ドキュメント](https://docs.aws.amazon.com/index.html)を参照してください。

### aws:ResourceOrgID
<a name="condition-keys-resourceorgid"></a>

このキーを使用して、ポリシーで指定した識別子とリクエストしたリソースが属する AWS Organizations の組織の識別子を比較します。
+ **可用性** – このキーは、リソースを所有するアカウントが組織のメンバーである場合にのみ、リクエストコンテキストに含まれます。このグローバル条件キーでは以下のアクションがサポートされません。
  + AWS Audit Manager
    + `auditmanager:UpdateAssessmentFrameworkShare`
  + Amazon Detective
    + `detective:AcceptInvitation`
  + AWS Directory Service
    + `ds:AcceptSharedDirectory`
  + Amazon Elastic Block Store - すべてのアクション
  + Amazon EC2
    + `ec2:AcceptTransitGatewayPeeringAttachment`
    + `ec2:AcceptVpcEndpointConnections`
    + `ec2:AcceptVpcPeeringConnection`
    + `ec2:CreateTransitGatewayPeeringAttachment`
    + `ec2:CreateVpcEndpoint`
    + `ec2:CreateVpcPeeringConnection`
  + Amazon EventBridge
    + `events:PutEvents` – 2023 年 3 月 2 日以前にそのイベントバスがクロスアカウントの EventBridge ターゲットとして設定されていた場合、EventBridge `PutEvents` は別のアカウントのイベントバスを呼び出します。詳細については、「*Amazon EventBridge ユーザーガイド*」の「[他の AWS アカウントからのイベントを許可するアクセス許可の付与](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-cross-account.html#eb-receiving-events-from-another-account)」を参照してください。
  + Amazon GuardDuty
    + `guardduty:AcceptAdministratorInvitation`
  + Amazon Macie
    + `macie2:AcceptInvitation`
  + Amazon OpenSearch Service
    + `es:AcceptInboundConnection`
  + Amazon Route 53
    + `route53:AssociateVpcWithHostedZone`
    + `route53:CreateVPCAssociationAuthorization`
  + AWS Security Hub CSPM
    + `securityhub:AcceptAdministratorInvitation`
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

**注記**  
上記のサポートされていないアクションに関するその他の考慮事項については、[data-perimeter-policy-examples](https://github.com/aws-samples/data-perimeter-policy-examples) リポジトリを参照してください。

このグローバルキーは、与えられたリクエストのリソース組織 ID を返します。これにより、[ID ベースポリシー](access_policies_identity-vs-resource.md)の `Resource` 要素で指定した組織のすべてのリソースに適用されるルールが作成できます。[組織 ID](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_details.html) は、条件要素で指定できます。アカウントを追加および削除する場合、`aws:ResourceOrgID` のキーを含むポリシーには正しいアカウントが自動的に組み込まれ、手動で更新する必要はありません。

例えば、以下のポリシーでは、Amazon S3 リソースがリクエストを行うプリンシパルと同じ組織に属している場合を除き、プリンシパルは `policy-genius-dev` リソースにオブジェクトを追加できません。

**重要**  
このポリシーでは、アクションを許可しません。代わりに、ステートメントに記載され、リストされたアカウントに属さないすべてのリソースへのアクセスを明示的に拒否する `Deny` 効果を使用します。特定のリソースへのアクセスを許可する他のポリシーと組み合わせてこのポリシーを使用します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "DenyPutObjectToS3ResourcesOutsideMyOrganization",
        "Effect": "Deny",
        "Action": "s3:PutObject",
        "Resource": "arn:aws:s3:::policy-genius-dev/*",
        "Condition": {
            "StringNotEquals": {
                "aws:ResourceOrgID": "${aws:PrincipalOrgID}"
            }
        }
    }
}
```

------

**注記**  
一部の AWS のサービス では他の AWS アカウント でホストされている AWS 所有リソースへのアクセスを必要とします。ID ベースのポリシーで `aws:ResourceOrgID` を使用する場合は、これらのリソースにアクセスする ID の機能に影響を与える可能性があります。

AWS Data Exchange などの特定の AWS サービスでは、通常のオペレーションで AWS アカウント の外部のリソースへのアクセスに依存しています。ポリシーに `aws:ResourceOrgID` キーを使う場合、それらのサービスの免除を指定するために追加のステートメントを含めます。ポリシー [AWS: AWS Data Exchange を除くアカウント外の Amazon S3 リソースへのアクセスを拒否する](reference_policies_examples_resource_account_data_exch.md) の例では、サービスが所有するリソースの例外を定義しながら、リソースアカウントに応じてアクセスを拒否する方法を示しています。類似ポリシーを作成して、サービス所有のリソースを考慮しながら、`aws:ResourceOrgID` キーを使用して組織内のリソースへのアクセスを制限できます。

独自のカスタムポリシーを作成する場合に、このポリシーの例をテンプレートとして使用します。詳細については、サービスの[ドキュメント](https://docs.aws.amazon.com/index.html)を参照してください。

次のビデオでは、ポリシーで `aws:ResourceOrgID` 条件キーを使用する方法について詳しく説明します。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/cWVW0xAiWwc/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/cWVW0xAiWwc)


### aws:ResourceTag/*tag-key*
<a name="condition-keys-resourcetag"></a>

このキーを使用して、ポリシーで指定したタグキーバリューのペアと、リソースにアタッチされているキーバリューのペアを比較します。たとえば、リソースに値 `"Marketing"` の付いたタグキー `"Dept"` がアタッチされている場合にのみ、そのリソースへのアクセスを許可するように要求することができます。詳細については、「[AWS のリソースへのアクセスの制御](access_tags.md#access_tags_control-resources)」を参照してください。
+ **可用性** – このキーは、リクエストコンテキスト (リクエストされたリソースにすでにアタッチしたタグがある場合) またはアタッチしたタグを持つリソースを作成するリクエストに含まれます。このキーは、[タグに基づいて認可をサポートする](reference_aws-services-that-work-with-iam.md)リソースに対してのみ返されます。タグキーバリューのペアごとに 1 つのコンテキストキーがあります。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

このコンテキストキーは `"aws:ResourceTag/tag-key":"tag-value"` という形式です。ここで *tag-key* および *tag-value* はタグキーバリューのペアです。タグキーでは、大文字と小文字は区別されません。つまり、ポリシーの条件要素で `"aws:ResourceTag/TagKey1": "Value1"` で指定した場合、その条件は `TagKey1` または `tagkey1` という名前のリソースタグキーに一致しますが、その両方には一致しません。これらのタグキーと値のペアの値では、大文字と小文字が区別されます。したがって、ポリシーの条件要素で `"aws:ResourceTag/TagKey1": "Production"` を指定した場合、その条件は `Production` という名前のリソースタグ値に一致しますが、`production` や `PRODUCTION` には一致しません。

`aws:ResourceTag` キーを使用して IAM リソースへのアクセスを制御する例については、「[AWS のリソースへのアクセスの制御](access_tags.md#access_tags_control-resources)」を参照してください。

`aws:ResourceTag` キーを使用して他の AWS リソースへのアクセスを制御する例については、「[タグを使用した AWS リソースへのアクセスの制御](access_tags.md)」をご参照ください。

属性ベースのアクセス制御 (ABAC) の `aws:ResourceTag` 条件キーの使用に関するチュートリアルについては、「[IAM チュートリアル: タグに基づいて AWS リソースにアクセスするためのアクセス許可を定義する](tutorial_attribute-based-access-control.md)」をご参照ください。

## リクエストのプロパティ
<a name="condition-keys-request-properties"></a>

次の条件キーを使用して、リクエスト自体とリクエストの内容の詳細を、ポリシーで指定したリクエストのプロパティと比較します。

### aws:CalledVia
<a name="condition-keys-calledvia"></a>

このキーを使用して、ポリシー内のサービスと、IAM プリンシパル (ユーザーまたはロール) に代わってリクエストを実行したサービスを比較します。プリンシパルが AWS サービスに対してリクエストを実行すると、そのサービスはプリンシパルの認証情報を使用して、後続のリクエストを他のサービスに対して実行することがあります。転送アクセスセッション (FAS) を使用してリクエストが行われる場合、このキーはサービスプリンシパルの値で設定されます。`aws:CalledVia` キーには、プリンシパルに代わってリクエストを実行したチェーン内の各サービスの順序付きリストが含まれます。

詳細については、「[転送アクセスセッション](access_forward_access_sessions.md)」を参照してください。
+ **可用性 ** – このキーは、`aws:CalledVia` をサポートするサービスが IAM プリンシパルの認証情報を使用して別のサービスにリクエストを実行する場合に、リクエスト内に存在します。サービスが[サービスロールまたはサービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#id_roles_terms-and-concepts)を使用してプリンシパルに代わって呼び出しを行う場合、このキーは存在しません。また、プリンシパルが直接呼び出しを行う場合にも存在しません。
+ **データ型** – [文字列](reference_policies_elements_condition_operators.md#Conditions_String) (リスト)
+ **値タイプ** — 複数値

ポリシーで `aws:CalledVia` 条件キーを使用するには、AWS サービスリクエストを許可または拒否するサービスプリンシパルを提供する必要があります。例えば、AWS CloudFormation を使用して Amazon DynamoDB テーブルからの読み取りと書き込みを行うことができます。次に、DynamoDB は AWS Key Management Service（AWS KMS）によって提供される暗号化を使用します。

*いずれかの*サービスがプリンシパルの認証情報を使用してリクエストを実行したときにアクセスを許可または拒否するには、`aws:ViaAWSService` 条件キーを使用します。この条件キーは、AWS サービスをサポートします。

`aws:CalledVia` キーは[複数値を持つキー](reference_policies_condition-single-vs-multi-valued-context-keys.md)です。ただし、条件でこのキーを使用して順序を強制することはできません。上記の例を使用すると、**ユーザー 1**は、CloudFormation に対してリクエストを実行し、それにより AWS KMS が呼び出され、DynamoDB が呼び出されます。これらは 3 つの個別のリクエストです。AWS KMS への最後の呼び出しは、CloudFormation を*介し*、次に DynamoDB を介して、ユーザー 1 によって実行されます。

![\[aws:CalledVia の使用例\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/condition-key-calledvia-example-diagram.png)


この場合、リクエストコンテキストの `aws:CalledVia` キーには、`cloudformation.amazonaws.com`、`dynamodb.amazonaws.com` がこの順序で含まれます。呼び出しがリクエストのチェーン内のどこかで、DynamoDB を介して行われたことだけが重要である場合は、ポリシーでこの条件キーを使用できます。

たとえば、次のポリシーでは、AWS KMS という名前の `my-example-key` キーを管理できますが、DynamoDB がリクエスト元のサービスの 1 つである場合に限ります。`ForAnyValue:StringEquals` 条件演算子により、DynamoDB が呼び出し元サービスの 1 つであることが保証されます。プリンシパルが AWS KMS を直接呼び出す場合、条件は `false` を返し、リクエストはこのポリシーで許可されません。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "KmsActionsIfCalledViaDynamodb",
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey",
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/my-example-key",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "aws:CalledVia": [
                        "dynamodb.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

チェーン内の最初または最後の呼び出しを行うサービスを強制する場合は、`aws:CalledViaLast` キー `aws:CalledViaFirst` とキーを使用できます。たとえば、次のポリシーでは、`my-example-key` という名前のキーを AWS KMS で管理できます。これらの AWS KMS オペレーションは、複数のリクエストがチェーンに含まれている場合にのみ許可されます。最初のリクエストは CloudFormation を介して、最後のリクエストは DynamoDB を介して実行される必要があります。他のサービスがチェーンの途中でリクエストを実行しても、オペレーションは許可されます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "KmsActionsIfCalledViaChain",
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey",
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/my-example-key",
            "Condition": {
                "StringEquals": {
                    "aws:CalledViaFirst": "cloudformation.amazonaws.com",
                    "aws:CalledViaLast": "dynamodb.amazonaws.com"
                }
            }
        }
    ]
}
```

------

サービスで IAM プリンシパルの認証情報を使用して別のサービスを呼び出す場合、`aws:CalledViaFirst` キーと `aws:CalledViaLast` キーはリクエスト内に存在します。これらは、リクエストのチェーンで呼び出しを行った最初と最後のサービスを示します。たとえば、CloudFormation が `X Service` という名前の別のサービスを呼び出し、それにより DynamoDB が呼び出され、AWS KMS が呼び出されるとします。AWS KMS への最後の呼び出しは、`User 1` を*介して* CloudFormation、DynamoDBの順に `X Service` によって実行されます。これは、最初に CloudFormation を介して呼び出され、最後に DynamoDB を介して呼び出されました。

![\[aws:CalledViaFirst および aws:CalledViaLast の使用例\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/condition-key-calledviafirstlast-example-diagram.png)


### aws:CalledViaFirst
<a name="condition-keys-calledviafirst"></a>

このキーを使用して、ポリシー内のサービスと、IAM プリンシパル (ユーザーまたはロール) に代わってリクエストを実行した***最初のサービス***を比較します。詳細については、「`aws:CalledVia`」を参照してください。
+ **可用性** – このキーは、サービスが IAM プリンシパルの認証情報を使用して、別のサービスに対して少なくとも 1 つの他のリクエストを実行する場合に、リクエスト内に存在します。サービスが[サービスロールまたはサービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#id_roles_terms-and-concepts)を使用してプリンシパルに代わって呼び出しを行う場合、このキーは存在しません。また、プリンシパルが直接呼び出しを行う場合にも存在しません。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

### aws:CalledViaLast
<a name="condition-keys-calledvialast"></a>

このキーを使用して、ポリシー内のサービスと、IAM プリンシパル (ユーザーまたはロール) に代わってリクエストを実行した*最後のサービス*を比較します。詳細については、「`aws:CalledVia`」を参照してください。
+ **可用性** – このキーは、サービスが IAM プリンシパルの認証情報を使用して、別のサービスに対して少なくとも 1 つの他のリクエストを実行する場合に、リクエスト内に存在します。サービスが[サービスロールまたはサービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#id_roles_terms-and-concepts)を使用してプリンシパルに代わって呼び出しを行う場合、このキーは存在しません。また、プリンシパルが直接呼び出しを行う場合にも存在しません。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

### aws:ViaAWSService
<a name="condition-keys-viaawsservice"></a>

このキーを使用して、AWS のサービスが[転送アクセスセッション (FAS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html) を使用してユーザーに代わって別のサービスにリクエストを実行するかどうか確認します。

サービスが転送アクセスセッションを使用して元の IAM プリンシパルに代わってリクエストを実行すると、リクエストコンテキストキーは `true` を返します。リクエストコンテキストキーは、プリンシパルが直接呼び出しを行ったときも `false` を返します。
+ **可用性** – このキーは常にリクエストコンテキストに含まれます。
+ **データ型** – [ブール値](reference_policies_elements_condition_operators.md#Conditions_Boolean)
+ **値タイプ** — 単一値

### aws:CalledViaAWSMCP
<a name="condition-keys-calledviaawasmcp"></a>

このキーを使用して、ポリシー内のサービスと、IAM プリンシパル (ユーザーまたはロール) に代わってリクエストを実行した AWS MPC サービスを比較します。プリンシパルが AWS MCP サービスに対してリクエストを実行すると、そのサービスはプリンシパルの認証情報を使用して、後続のリクエストを他のサービスに対して実行します。AWS MCP サービスを使用してリクエストが行われる場合、このキーはサービスプリンシパルの値で設定されます。`aws:CalledViaAWSMCP` キーには、プリンシパルに代わってリクエストを行った MCP サービスのサービスプリンシパル名が含まれます。
+ **可用性** – このキーは、AWS MCP サービスが IAM プリンシパルの認証情報を使用して AWS サービスにリクエストを実行する場合、リクエスト内に存在します。また、プリンシパルが直接呼び出しを行う場合にも存在しません。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

この条件キーを使用して、リクエストを開始した特定の MCP サーバーに基づいてアクセスを許可または拒否できます。例えば、次のポリシーは、特定の MCP サーバーから開始された機密性の高い削除オペレーションを拒否します。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenySensitiveActionsViaSpecificMCP",
            "Effect": "Deny",
            "Action": [
                "s3:DeleteBucket",
                "s3:DeleteObject",
                "dynamodb:DeleteTable"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:CalledViaAWSMCP": "aws-mcp.amazonaws.com"
                }
            }
        }
    ]
}
```

### aws:ViaAWSMCPService
<a name="condition-keys-viaawsmcpservice"></a>

このキーを使用して、AWS MCP サービスが転送アクセスセッション (FAS) を使用してユーザーに代わって別の AWS サービスにリクエストを実行するかどうか確認します。AWS MCP サービスが元の IAM プリンシパルに代わってリクエストを AWS サービスに転送すると、リクエストコンテキストキーは `true` を返します。リクエストコンテキストキーは、プリンシパルが直接呼び出しを行ったときも `false` を返します。
+ **可用性** – AWS MCP サーバーが IAM プリンシパルに代わってダウンストリームの AWS サービスにリクエストを行うと、このキーがリクエストコンテキストに含まれます。
+ **データ型** – [ブール値](reference_policies_elements_condition_operators.md#Conditions_Boolean)
+ **値タイプ** — 単一値

このキーを使用して、特定のアクションが MCP サーバーから行われたときにそのアクションを制限できます。例えば、次のポリシーは、任意の AWS MCP サーバーから開始された場合、機密性の高い削除オペレーションを拒否します。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenySensitiveActionsViaMCP",
            "Effect": "Deny",
            "Action": [
                "s3:DeleteBucket",
                "s3:DeleteObject",
                "dynamodb:DeleteTable"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "aws:ViaAWSMCPService": "true"
                }
            }
        }
    ]
}
```

### aws:CurrentTime
<a name="condition-keys-currenttime"></a>

このキーを使用して、リクエストの日時と、ポリシーで指定した日時を比較します。この条件キーを使用するポリシーの例を表示するには、「[AWS: 日付と時刻に基づいてアクセスを許可します](reference_policies_examples_aws-dates.md)」を参照してください。
+ **可用性** – このキーは常にリクエストコンテキストに含まれます。
+ **データ型** – [日付](reference_policies_elements_condition_operators.md#Conditions_Date)
+ **値タイプ** — 単一値

### aws:EpochTime
<a name="condition-keys-epochtime"></a>

このキーを使用して、リクエストの日時（epoch または Unix 時間）をポリシーで指定した値と比較します。このキーは、1970 年 1 月 1 日からの秒数も受け付けます。
+ **可用性** – このキーは常にリクエストコンテキストに含まれます。
+ **データ型** – [日付](reference_policies_elements_condition_operators.md#Conditions_Date)、[数値](reference_policies_elements_condition_operators.md#Conditions_Numeric)
+ **値タイプ** — 単一値

### aws:referer
<a name="condition-keys-referer"></a>

このキーを使用して、クライアントブラウザでリクエストを参照したユーザーとポリシーで指定したリファラーを比較します。`aws:referer` リクエストコンテキストの値は、HTTP ヘッダーで呼び出し元によって提供されます。`Referer` ヘッダーは、ウェブページ上のリンクを選択すると、ウェブブラウザリクエストに含まれます。`Referer` ヘッダーには、リンクが選択されたウェブページの URL が含まれます。
+ **可用性** – このキーは、ブラウザでウェブページ URL からリンクすることによって AWS リソースへのリクエストが呼び出された場合にのみ、リクエストコンテキストに含まれます。このキーは、AWS リソースへのアクセスにブラウザリンクを使用しないため、プログラムによるリクエストには含まれません。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

例えば、URL または直接 API 呼び出しを使用して、Amazon S3 オブジェクトに直接アクセスできます。詳細については、「[ウェブブラウザを使用して Amazon S3 API オペレーションを直接呼び出す](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-use-case-4)」をご参照ください。ウェブページに存在する URL から Amazon S3 オブジェクトにアクセスすると、ソースウェブページの URL が `aws:referer` で使用されます。ブラウザに URL を入力して Amazon S3 オブジェクトにアクセスすると、`aws:referer` は存在しません。API を直接呼び出すと、`aws:referer` も存在していません。ポリシーで `aws:referer` 条件キーを使用して、会社のドメイン内のウェブページ上のリンクなど、特定のリファラーからのリクエストを許可できます。

**警告**  
このキーは慎重に使用する必要があります。一般に知られている参照子のヘッダー値を含めるのは危険です。認可されていない当事者は、変更されたブラウザまたはカスタムブラウザを使用して任意の `aws:referer` 値を提供することができます。そのため `aws:referer` は、認可されていない当事者から AWS にリクエストが直接行われることを防止するために使用しないでください。このキーは、Amazon S3 に保存されているデジタルコンテンツなど、認可されていないサードパーティーサイトで参照されることから保護するためにのみ、お客様に提供されています。

### aws:RequestedRegion
<a name="condition-keys-requestedregion"></a>

このキーを使用して、リクエストで呼び出された AWS リージョンとポリシーで指定したリージョンを比較します。このグローバル条件キーを使用して、リクエストできるリージョンを制御できます。各サービスの AWS リージョンを表示するには、「*Amazon Web Services 全般のリファレンス*」の「[サービスエンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)」を参照してください。
+ **可用性** – このキーは常にリクエストコンテキストに含まれます。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

IAM などのグローバルサービスには、単一のエンドポイントがあります。このエンドポイントは、物理的に米国東部 (バージニア北部) リージョンにあるため、IAM 呼び出しは常に us-east-1 リージョンで行われます。たとえば、リクエストされたリージョンが us-west-2 でない場合にすべてのサービスへのアクセスを拒否するポリシーを作成すると、IAM 呼び出しは必ず失敗します。これを回避する方法の例を表示するには、「[Deny での NotAction の使用](reference_policies_elements_notaction.md)」を参照してください。

**注記**  
`aws:RequestedRegion` 条件キーを使用すると、呼び出されるサービスのエンドポイントを制御できますが、オペレーションの影響を制御することはできません。一部のサービスではリージョン間の影響があります。  
例えば、Amazon S3 には複数のリージョンにまたがる API オペレーションがあります。  
1 つのリージョン（`aws:RequestedRegion` の条件キーの影響を受ける）で `s3:PutBucketReplication` を呼び出すことはできますが、他のリージョンはレプリケーションの構成設定に基づいて影響を受けます。
`s3:CreateBucket` を呼び出し、別のリージョンにバケットを作成できます。また、`s3:LocationConstraint` 条件キーを使用して該当するリージョンを制御できます。

このコンテキストキーを使用して、指定された一連のリージョン内の AWS サービスへのアクセスを制限できます。たとえば、以下のポリシーでは、AWS マネジメントコンソール でのすべての Amazon EC2 インスタンスの表示をユーザーに許可します。ただし、変更できるインスタンスは、アイルランド (eu-west-1)、ロンドン (eu-west-2)、パリ (eu-west-3) のみです。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "InstanceConsoleReadOnly",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "ec2:Export*",
                "ec2:Get*",
                "ec2:Search*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "InstanceWriteRegionRestricted",
            "Effect": "Allow",
            "Action": [
                "ec2:Associate*",
                "ec2:Import*",
                "ec2:Modify*",
                "ec2:Monitor*",
                "ec2:Reset*",
                "ec2:Run*",
                "ec2:Start*",
                "ec2:Stop*",
                "ec2:Terminate*"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestedRegion": [
                        "eu-west-1",
                        "eu-west-2",
                        "eu-west-3"
                    ]
                }
            }
        }
    ]
}
```

------

### aws:RequestTag/*tag-key*
<a name="condition-keys-requesttag"></a>

このキーを使用して、リクエストで渡されたタグキーバリューのペアと、ポリシーで指定したタグペアを比較します。たとえば、リクエストに「`"Dept"`」タグキーが含まれ、「`"Accounting"`」という値が含まれているかどうかを確認できます。詳細については、「[AWS リクエスト時のアクセスの制御](access_tags.md#access_tags_control-requests)」を参照してください。
+ **可用性** – このキーは、リクエストでタグのキー/値のペアが渡されたときにリクエストコンテキストに含まれます。複数のタグがリクエストで渡されると、タグキーバリューのペアごとに 1 つのコンテキストキーがあります。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

このコンテキストキーは `"aws:RequestTag/tag-key":"tag-value"` という形式です。ここで *tag-key* および *tag-value* はタグキーバリューのペアです。タグキーでは、大文字と小文字は区別されません。つまり、ポリシーの条件要素で `"aws:RequestTag/TagKey1": "Value1"` で指定した場合、その条件は `TagKey1` または `tagkey1` という名前のリクエストタグキーに一致しますが、その両方には一致しません。これらのタグキーと値のペアの値では、大文字と小文字が区別されます。したがって、ポリシーの条件要素で `"aws:RequestTag/TagKey1": "Production"` を指定した場合、その条件は `Production` という名前のリクエストタグ値に一致しますが、`production` や `PRODUCTION` には一致しません。

この例では、キーが単一値であっても、キーが異なる場合でもリクエストで複数のキー/値のペアが使用できることを示しています。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "ec2:CreateTags",
    "Resource": "arn:aws:ec2::111122223333:instance/*",
    "Condition": {
      "StringEquals": {
        "aws:RequestTag/environment": [
          "preprod",
          "production"
        ],
        "aws:RequestTag/team": [
          "engineering"
        ]
      }
    }
  }
}
```

------

### aws:TagKeys
<a name="condition-keys-tagkeys"></a>

このキーを使用して、リクエスト内のタグキーとポリシーで指定したキーを比較します。ポリシーでタグを使用してアクセスを制御する場合は、`aws:TagKeys` 条件キーを使用して、許可されるタグキーを定義することをお勧めします。ポリシー例と詳細については、「[タグキーに基づいたアクセスの制御](access_tags.md#access_tags_control-tag-keys)」を参照してください
+ **可用性** – このキーは、オペレーションがリクエストのタグを渡すサポートしている場合にのみ、リクエストコンテキストに含まれます。
+ **データ型** – [文字列](reference_policies_elements_condition_operators.md#Conditions_String) (リスト)
+ **値タイプ** — 複数値

このコンテキストキーは `"aws:TagKeys":"tag-key"` という形式であり、ここで *tag-key* は値 (`["Dept","Cost-Center"]` など) のないタグキーのリストです。

1 つのリクエストに複数のタグとキーバリューのペアを含めることができるため、リクエストのコンテンツは[複数の値を](reference_policies_condition-single-vs-multi-valued-context-keys.md)持つリクエストである場合があります。この場合、`ForAllValues` または `ForAnyValue` 集合演算子を使用する必要があります。詳細については、「[複数値のコンテキストキーの演算子を設定する](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)」を参照してください。

一部のサービスでは、リソースの作成、変更、削除などのリソースオペレーションを使用したタグ付けをサポートしています。1 回の呼び出しでタグ付けとオペレーションを許可するには、タグ付けアクションとリソース変更アクションの両方を含むポリシーを作成する必要があります。次に、`aws:TagKeys` 条件キーを使用して、リクエストで特定のタグキーを使用して適用できます。たとえば、だれかが Amazon EC2 スナップショットを作成するときにタグを制限するには、ポリシーに ***`ec2:CreateSnapshot` の作成アクション***および `ec2:CreateTags` のタグ付けアクションを含める必要があります。`aws:TagKeys` を使用するこのシナリオのポリシーを表示するには、「*Amazon EC2 ユーザーガイド*」の[タグ付きのスナップショットの作成](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html#iam-creating-snapshot-with-tags)に関するページを参照してください。

### aws:SecureTransport
<a name="condition-keys-securetransport"></a>

このキーを使用してリクエストが TLS を使用して送信されたかどうかをチェックします。リクエストコンテキストは `true` または `false` を返します。ポリシーでは、リクエストが TLS を使用して送信された場合にのみ、特定のアクションを許可できます。
+ **可用性** – このキーは常にリクエストコンテキストに含まれます。
+ **データ型** – [ブール値](reference_policies_elements_condition_operators.md#Conditions_Boolean)
+ **値タイプ** — 単一値

**注記**  
ユーザーに代わって AWS のサービス が他の AWS のサービス を呼び出す場合 (サービス間コール)、特定のネットワーク固有の承認コンテキストが編集されます。ポリシーがこの条件キーを `Deny` ステートメントと一緒に使用した場合、意図せずに AWS のサービス プリンシパルがブロックされる可能性があります。セキュリティ要件を維持しながら AWS のサービス が適切に動作させするには、`false` の値を持つ `aws:PrincipalIsAWSService` 条件キーを追加することで、`Deny` ステートメントからサービスプリンシパルを除外します。例えば、次のようになります。  

```
{
  "Effect": "Deny",
  "Action": "s3:*",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "aws:SecureTransport": "false",
      "aws:PrincipalIsAWSService": "false"
    }
  }
}
```
このポリシーにより、HTTPS が使用されていない (`aws:SecureTransport` が false) ときに Amazon S3 オペレーションへのアクセスが拒否されますが、AWS 以外のサービスプリンシパルのみが対象になります。条件付き制限がすべてのプリンシパルに適用されます (AWS のサービス プリンシパルを除く)。

### aws:SourceAccount
<a name="condition-keys-sourceaccount"></a>

このキーを使用して、サービス間リクエストを行っているリソースのアカウント ID を、ポリシーで指定したアカウント ID と比較します。ただし、このリクエストが AWS サービスプリンシパルによって実行された場合に限定されます。
+ **可用性** — このキーは、設定によってサービス間リクエストがトリガーされたリソースに代わって、[AWS サービスプリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services)が直接リソースを呼び出している場合にのみリクエストコンテキストに含まれます。呼び出し元のサービスは、オリジナルのリソースのアカウント ID を呼び出し先のサービスに渡します。
**注記**  
このキーは、クロスサービスの混乱した使節のコントロールを AWS のサービス 全体で強制適用するための統一メカニズムを提供します。ただし、すべてのサービス統合で、このグローバル条件キーを使用する必要はありません。クロスサービスにおける混乱した使節のリスクを軽減するためのサービス固有のメカニズムの詳細については、使用する AWS のサービス のドキュメントを参照してください。  
![\[aws:SourceAccount\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/sourceAccount.png)
+ **データ型** – [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

この条件キーを使用すると、リクエストが特定のアカウントからのものである場合にのみ、呼び出し元のサービスがリソースにアクセスできるようにするのに役立ちます。例えば、次のリソースコントロールポリシー (RCP) をアタッチして、指定されたアカウントのリソースによってトリガーされたものではない限り、サービスプリンシパルによる Amazon S3 バケットに対するリクエストを拒否できます。このポリシーは、`aws:SourceAccount` キーが存在するサービスプリンシパル (`"Bool": {"aws:PrincipalIsAWSService": "true"}`) によるリクエストに対してのみ、コントロールを適用します (`"Null": {"aws:SourceAccount": "false"}`)。これにより、このキーの使用を必要としないサービス統合とプリンシパルによる呼び出しは影響を受けません。`aws:SourceAccount` キーがリクエストコンテキストに存在する場合、`Null` 条件は `true` に評価され、`aws:SourceAccount` キーが強制適用されます。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "RCPEnforceConfusedDeputyProtection",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:SourceAccount": "111122223333"
        },
        "Null": {
          "aws:SourceAccount": "false"
        },
        "Bool": {
          "aws:PrincipalIsAWSService": "true"
        }
      }
    }
  ]
}
```

------

プリンシパルが AWS のサービス プリンシパルであるリソースベースのポリシーでは、キーを使用してサービスに付与される許可を制限します。例えば、Amazon S3 バケットが Amazon SNS トピックに通知を送信するように設定されている場合、Amazon S3 サービスは設定されたすべてのイベントのために `sns:Publish` API オペレーションを呼び出します。`sns:Publish` 操作を許可するトピックポリシーで、条件キーの値を Amazon S3 バケットのアカウント ID に設定します。

### aws:SourceArn
<a name="condition-keys-sourcearn"></a>

このキーを使用して、サービス間リクエストを行っているリソースの [Amazon リソースネーム (ARN)](reference_identifiers.md#identifiers-arns) を、ポリシーで指定した ARN と比較します。ただし、このリクエストが AWS サービスプリンシパルによって実行された場合に限定されます。ソースの ARN にアカウント ID が含まれている場合は、`aws:SourceArn` で `aws:SourceAccount` を使用する必要はありません。

このキーは、リクエストを行うプリンシパルの ARN では機能しません。代わりに `aws:PrincipalArn` を使用してください。
+ **可用性** — このキーは、設定によってサービス間リクエストがトリガーされたリソースに代わって、[AWS サービスプリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services)が直接リソースを呼び出している場合にのみリクエストコンテキストに含まれます。呼び出し元のサービスは、元のリソースの ARN を呼び出し先のサービスに渡します。
**注記**  
このキーは、クロスサービスの混乱した使節のコントロールを AWS のサービス 全体で強制適用するための統一メカニズムを提供します。ただし、すべてのサービス統合で、このグローバル条件キーを使用する必要はありません。クロスサービスにおける混乱した使節のリスクを軽減するためのサービス固有のメカニズムの詳細については、使用する AWS のサービス のドキュメントを参照してください。  
![\[aws:SourceArn\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/sourceArn.png)
+ **データ型** – ARN

  AWS では、ARN を比較する場合、[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)の代わりに [ARN 演算子](reference_policies_elements_condition_operators.md#Conditions_ARN)を使用することをお勧めします。
+ **値タイプ** — 単一値

この条件キーを使用すると、リクエストが特定のリソースからのものである場合にのみ、呼び出し元のサービスがリソースにアクセスできるようにするのに役立ちます。AWS のサービス プリンシパルを `Principal` とするリソースベースのポリシーを使用する場合は、この条件キーの値を、アクセスを制限するリソースの ARN に設定します。例えば、Amazon S3 バケットが Amazon SNS トピックに通知を送信するように設定されている場合、Amazon S3 サービスは設定されたすべてのイベントのために `sns:Publish` API オペレーションを呼び出します。`sns:Publish` 操作を許可するトピックポリシーで、条件キーの値を Amazon S3 バケットの ARN に設定します。リソースベースのポリシーでこの条件キーを使用する場合に関するレコメンデーションについては、使用している AWS のサービス のドキュメントを参照してください。

### aws:SourceOrgID
<a name="condition-keys-sourceorgid"></a>

このキーを使用して、サービス間リクエストを行っているリソースの[組織 ID](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_details.html) を、ポリシーで指定した組織 ID と比較します。ただし、このリクエストが AWS サービスプリンシパルによって実行された場合に限定されます。AWS Organizations の組織にアカウントを追加する、または組織からアカウントを削除する場合、`aws:SourceOrgID` のキーを含むポリシーには正しいアカウントが自動的に組み込まれるため、手動で更新する必要はありません。
+ **可用性** — このキーがリクエストコンテキストに含まれるのは、組織のメンバーであるアカウントが所有するリソースに代わって、[AWSサービスプリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services)が直接リソースを呼び出している場合のみです。呼び出し元のサービスは、元のリソースの組織 ID を呼び出し先のサービスに渡します。
**注記**  
このキーは、クロスサービスの混乱した使節のコントロールを AWS のサービス 全体で強制適用するための統一メカニズムを提供します。ただし、すべてのサービス統合で、このグローバル条件キーを使用する必要はありません。クロスサービスにおける混乱した使節のリスクを軽減するためのサービス固有のメカニズムの詳細については、使用する AWS のサービス のドキュメントを参照してください。  
![\[aws:SourceOrgID\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/sourceOrgID.png)
+ **データ型** – [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

この条件キーを使用すると、リクエストが特定の組織からのものである場合にのみ、呼び出し元のサービスがリソースにアクセスできるようにするのに役立ちます。例えば、次のリソースコントロールポリシー (RCP) をアタッチして、指定された AWS 組織のリソースによってトリガーされたものではない限り、サービスプリンシパルによる Amazon S3 バケットに対するリクエストを拒否できます。このポリシーは、`aws:SourceAccount` キーが存在するサービスプリンシパル (`"Bool": {"aws:PrincipalIsAWSService": "true"}`) によるリクエストに対してのみ、コントロールを適用します (`"Null": {"aws:SourceAccount": "false"}`)。これにより、このキーの使用を必要としないサービス統合とプリンシパルによる呼び出しは影響を受けません。`aws:SourceAccount` キーがリクエストコンテキストに存在する場合、`Null` 条件は `true` に評価され、`aws:SourceOrgID` キーが強制適用されます。リクエストが組織に属さないアカウントからのものである場合でもコントロールが適用されるように、`Null` 条件演算子では `aws:SourceOrgID` ではなく `aws:SourceAccount` が使用されます。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "RCPEnforceConfusedDeputyProtection",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:SourceOrgID": "o-xxxxxxxxxx"
        },
        "Null": {
          "aws:SourceAccount": "false"
        },
        "Bool": {
          "aws:PrincipalIsAWSService": "true"
        }
      }
    }
  ]
}
```

------

### aws:SourceOrgPaths
<a name="condition-keys-sourceorgpaths"></a>

このキーを使用して、サービス間リクエストを行っているリソースの AWS Organizations パスを、ポリシーで指定した組織パスと比較します。ただし、このリクエストが AWS サービスプリンシパルによって実行された場合に限定されます。AWS Organizations パスは、AWS Organizations エンティティの構造をテキストで表記したものです。パスの使用と理解の詳細については、「[AWS Organizations エンティティパスを理解する](access_policies_last-accessed-view-data-orgs.md#access_policies_last-accessed-viewing-orgs-entity-path)」を参照してください。
+ **可用性** — このキーがリクエストコンテキストに含まれるのは、組織のメンバーであるアカウントが所有するリソースに代わって、[AWSサービスプリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services)が直接リソースを呼び出している場合のみです。呼び出し元のサービスは、元のリソースの組織パスを呼び出し先のサービスに渡します。
**注記**  
このキーは、クロスサービスの混乱した使節のコントロールを AWS のサービス 全体で強制適用するための統一メカニズムを提供します。ただし、すべてのサービス統合で、このグローバル条件キーを使用する必要はありません。クロスサービスにおける混乱した使節のリスクを軽減するためのサービス固有のメカニズムの詳細については、使用する AWS のサービス のドキュメントを参照してください。  
![\[aws:SourceOrgPaths\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/sourceOrgPaths.png)
+ **データ型** – [文字列](reference_policies_elements_condition_operators.md#Conditions_String) (リスト)
+ **値タイプ** — 複数値

この条件キーを使用すると、リクエストが AWS Organizations の特定の組織単位 (OU) からのものである場合にのみ、呼び出し元のサービスがリソースにアクセスできるようにするのに役立ちます。

`aws:SourceOrgID` と同様に、このキーの使用を必要としないサービス統合に対する影響を防ぐのに役立つよう、`Null` 条件キーで `aws:SourceAccount` 条件演算子を使用して、リクエストが組織に属さないアカウントからのものである場合でもコントロールが引き続き適用されるようにします。

```
{
      "Condition": {
        "ForAllValues:StringNotLikeIfExists": {
            "aws:SourceOrgPaths": "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/"
        },
        "Null": {
          "aws:SourceAccount": "false"
        },
        "Bool": {
          "aws:PrincipalIsAWSService": "true"
        }
      }
}
```

`aws:SourceOrgPaths` は複数の値を持つ条件キーです。複数値のキーは、リクエストコンテキストに複数の値を持つことができます。このキーを使用する場合は、[文字列条件演算子](reference_policies_elements_condition_operators.md#Conditions_String)とともに `ForAnyValue` または `ForAllValues` の集合演算子を使用する必要があります。複数値を持つ条件キーの詳細については、「[複数値のコンテキストキーの演算子を設定する](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)」を参照してください。

### aws:UserAgent
<a name="condition-keys-useragent"></a>

このキーを使用して、リクエスタのクライアントアプリケーションとポリシーで指定したアプリケーションを比較します。
+ **可用性** – このキーは常にリクエストコンテキストに含まれます。
+ **データ型** - [文字列](reference_policies_elements_condition_operators.md#Conditions_String)
+ **値タイプ** — 単一値

**警告**  
このキーは慎重に使用する必要があります。しかし、`aws:UserAgent` 値は HTTP ヘッダー内の発信者によって渡されるため、認可されていない当事者が改造またはカスタムブラウザを使用して任意の `aws:UserAgent` 値を渡すことができます。そのため `aws:UserAgent` は、認可されていない当事者から AWS にリクエストが直接行われることを防止するために使用しないでください。このステートメントを使用して、ポリシーをテストした後にのみ、特定のクライアントアプリケーションのみを許可できます。

### aws:IsMcpServiceAction
<a name="condition-keys-ismcpserviceaction"></a>

承認されたアクションが MCP サービスアクションであることを確認するときはこのキーを使用します。このキーは、MCP サービスが他の AWS サービスに対して実行したアクションは参照しません。
+ **可用性** – このキーはリクエストコンテキストに含まれ、MCP サービスが MCP サービスアクションを承認している場合にのみ True に設定されます。
+ **データ型** – [ブール値](reference_policies_elements_condition_operators.md#Conditions_Boolean)
+ **値タイプ** — 単一値

## その他のクロスサービス条件キー
<a name="condition-keys-other"></a>

AWS STS は、[SAML ベースのフェデレーション条件キー](reference_policies_iam-condition-keys.md#condition-keys-saml)と [OIDC フェデレーション](reference_policies_iam-condition-keys.md#condition-keys-wif)のクロスサービス条件キーをサポートします。これらのキーは、OICD や SAML を使用してフェデレーションされたユーザーが他のサービスで AWS オペレーションを実行するときに利用できます。

# 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 `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\$1id  |  アプリケーション ID   |  はい  | 
|  sub  |  ユーザー ID  |  はい  | 
|  user\$1id  |  ユーザー ID  |  はい  | 

**app\$1id**  
[文字列演算子](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\$1id**  
[文字列演算子](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\$1id | アプリケーション ID  | はい | 
| id | id | はい | 

**app\$1id**  
[文字列演算子](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\$1id | actor\$1id | いいえ | 
| job\$1workflow\$1ref | job\$1workflow\$1ref | いいえ | 
| repository | repository | いいえ | 
| repository\$1id | repository\$1id | いいえ | 
| workflow | workflow | いいえ | 
| ref | ref | いいえ | 
| 環境 | 環境 | いいえ | 
| enterprise\$1id | enterprise\$1id | いいえ | 

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

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

**job\$1workflow\$1ref**  
[文字列演算子](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\$1id**  
[文字列演算子](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\$1id**  
[文字列演算子](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\$1number | google:organization\$1number | いいえ | 

**google/organization\$1number**  
[桁演算子](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\$1id | rpst\$1id | いいえ | 

**rpst\$1id**  
[文字列演算子](reference_policies_elements_condition_operators.md#Conditions_String)で動作します。  
**例** - `oci-issuer-url:rpst_id`  
このキーは、OCI のリソースプリンシパルを一意に識別します。これを使用して、特定の OCI リソースプリンシパルへのアクセスを制限します。rpst\$1id (リソースプリンシパルセッショントークン 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)で動作します。  
\$1 これはクレームの件名です。組織内の個々のユーザーを一意に識別する値が含まれます（例: `_cbb88bf52c2510eabe00c1642d4643f41430fe25e3`）。

**saml:sub\$1type**  
[文字列演算子](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)で動作します。  
\$1 これはクレームの件名です。組織内の個々のユーザーを一意に識別する値が含まれます（例: `_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 文字で構成されている必要があります。この値は、空白のない英数字にする必要があります。次の記号を含めることもできます。プラス記号 (\$1)、等号 (=)、カンマ (,)、ピリオド (.)、アットマーク (@)、コロン (:)、スラッシュ (/)、およびハイフン (–)。

**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)と呼ばれます。  
この条件キーをポリシーで使用すると、ロールの引き受け時またはユーザーのフェデレーション時に、特定のセッションタグを推移的として設定するよう要求できます。

# AWS のサービスのアクション、リソース、および条件キー
<a name="reference_policies_actions-resources-contextkeys"></a>

それぞれの AWS のサービスでは、IAM ポリシーで使用できるように、アクション、リソース、および条件コンテキストキーを定義することができます。AWS サービス、ならびにそのアクション、リソース、および条件コンテキストキーのリストについては、「*サービス認可リファレンス*」の「[アクション、リソース、および条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)」を参照してください。