

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

# AWS KMS 条件キー
<a name="conditions-kms"></a>

AWS KMS には、キーポリシーと IAM ポリシーで使用できる一連の条件キーが用意されています。これらの条件キーは に固有です AWS KMS。例えば、`kms:EncryptionContext:context-key` 条件キーは、対称暗号化 KMS キーへのアクセスを制御するときに特定の[暗号化コンテキスト](encrypt_context.md)を要求するために使用できます。

**API オペレーションリクエストの条件**

多くの AWS KMS 条件キーは、 AWS KMS オペレーションのリクエストのパラメータの値に基づいて KMS キーへのアクセスを制御します。例えば、IAM ポリシーの [kms:KeySpec](#conditions-kms-key-spec) 条件キーを使用すると、`CreateKey` リクエストの `KeySpec` パラメータ値が `RSA_4096` の場合にのみ、[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) オペレーションの使用を許可できます。

このタイプの条件は、パラメータのデフォルト値を使用する場合など、リクエストにパラメータが表示されない場合でも機能します。例えば、[kms:KeySpec](#conditions-kms-key-spec) 条件キーを使用すると、`KeySpec` パラメータ値が `SYMMETRIC_DEFAULT` (デフォルト値) の場合にのみ、`CreateKey` オペレーションの使用をユーザーに許可できます。この条件では、`SYMMETRIC_DEFAULT` 値を持つ `KeySpec` パラメータを持つリクエストと、`KeySpec` パラメータを持たないリクエストが許可されます。

**API オペレーションで使用される KMS キーの条件**

一部の AWS KMS 条件キーは、オペレーションで使用される KMS キーのプロパティに基づいてオペレーションへのアクセスを制御できます。例えば、[kms:KeyOrigin](#conditions-kms-key-origin) 条件を使用すると、KMS キーの `Origin` が `AWS_KMS` の場合にのみ、プリンシパルが [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) を KMS キーで呼び出すことができます。この方法で条件キーを使用できるかどうかを確認するには、条件キーの説明を参照してください。

このオペレーションは *KMS キーリソースオペレーション*である必要があります。つまり、特定の KMS キーに認可されるオペレーションです。KMS キーリソースオペレーションを識別するには、[アクションとリソースの表](kms-api-permissions-reference.md#kms-api-permissions-reference-table)で、オペレーションの `Resources` 列の `KMS key` の値を探します。[ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html) など、特定の KMS キーリソースに対して認可されていないオペレーションでこのタイプの条件キーを使用すると、条件が満たされないため、アクセス許可は有効になりません。`ListKeys` オペレーションの認可に関与する KMS キーリソースおよび `KeySpec` プロパティはありません。

以下のトピックでは、各 AWS KMS 条件キーについて説明し、ポリシー構文を示すポリシーステートメントの例を示します。

 **条件キーで集合演算子を使用する**

ポリシー条件が、リクエスト内のタグのセットとポリシー内のタグのセットなど、2 つの値のセットを比較する場合、セットを比較する AWS 方法を に指示する必要があります。この目的のために、IAM は、2 つの集合演算子、`ForAnyValue` および `ForAllValues` を定義します。集合演算子は、それらを必要とする*複数値を持つ条件キー*でのみ使用します。*単一値の条件キー*で集合演算子を使用しないでください。ポリシーステートメントは必ず、本稼働環境での使用前に完全にテストしてください。

条件キーは単一値または複数値です。 AWS KMS 条件キーが単一値か複数値かを判断するには、条件キーの説明の**「値タイプ**」列を参照してください。
+ *単一値の*条件キーは認可コンテキスト (リクエストまたはリソース) に、最大で 1 つの値を持ちます。例えば、各 API コールは 1 つのみから発信できるため AWS アカウント、[kms:CallerAccount ](#conditions-kms-caller-account)は単一の値条件キーです。単一値の条件キーで集合演算子を使用しないでください。
+ *複数値の*条件キーでは、認可コンテキスト (リクエストまたはリソース) に複数の値があります。例えば、各 KMS キーは複数のエイリアスを持つことができるため、[kms:ResourceAliases](#conditions-kms-resource-aliases) は複数値を持つことができます。複数値の条件キーには集合演算子が必要です。

単一値と複数値の条件キーの違いは、ポリシー条件の値の数ではなく、認可コンテキストの値の数であることに注意してください。

**警告**  
単一値の条件キーで集合演算子を使用すると、過度に許可される (または過度に制限される) ポリシーステートメントが作成される可能性があります。集合演算子は、複数値の条件キーでのみ使用してください。  
kms:EncryptionContext:*context-key* または `aws:RequestTag/tag-key`条件キーを持つ`ForAllValues`集合演算子を含むポリシーを作成または更新すると、 は次のエラーメッセージ AWS KMS を返します。  
`OverlyPermissiveCondition: Using the ForAllValues set operator with a single-valued condition key matches requests without the specified [encryption context or tag] or with an unspecified [encryption context or tag]. To fix, remove ForAllValues.`

`ForAnyValue` および `ForAllValues` 集合演算子の詳細については、*IAM ユーザーガイド*の[複数のキーと値の使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions)を参照してください。`ForAllValues` 集合演算子を単一値の条件で使用するリスクの詳細については、*IAM ユーザーガイド*の [Security Warning – ForAllValues with single valued key](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html#access-analyzer-reference-policy-checks-security-warning-forallvalues-with-single-valued-key) を参照してください。

**Topics**
+ [kms:BypassPolicyLockoutSafetyCheck](#conditions-kms-bypass-policy-lockout-safety-check)
+ [kms:CallerAccount](#conditions-kms-caller-account)
+ [kms:CustomerMasterKeySpec (非推奨)](#conditions-kms-key-spec-replaced)
+ [kms:CustomerMasterKeyUsage (非推奨)](#conditions-kms-key-usage-replaced)
+ [kms:DataKeyPairSpec](#conditions-kms-data-key-spec)
+ [kms:EncryptionAlgorithm](#conditions-kms-encryption-algorithm)
+ [kms:EncryptionContext: *context-key*](#conditions-kms-encryption-context)
+ [kms:EncryptionContextKeys](#conditions-kms-encryption-context-keys)
+ [kms:ExpirationModel](#conditions-kms-expiration-model)
+ [kms:GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [kms:GrantIsForAWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [kms:GrantOperations](#conditions-kms-grant-operations)
+ [kms:GranteePrincipal](#conditions-kms-grantee-principal)
+ [kms:KeyAgreementAlgorithm](#conditions-kms-key-agreement-algorithm)
+ [kms:KeyOrigin](#conditions-kms-key-origin)
+ [kms:KeySpec](#conditions-kms-key-spec)
+ [kms:KeyUsage](#conditions-kms-key-usage)
+ [kms:MacAlgorithm](#conditions-kms-mac-algorithm)
+ [kms:MessageType](#conditions-kms-message-type)
+ [kms:MultiRegion](#conditions-kms-multiregion)
+ [kms:MultiRegionKeyType](#conditions-kms-multiregion-key-type)
+ [kms:PrimaryRegion](#conditions-kms-primary-region)
+ [kms:ReEncryptOnSameKey](#conditions-kms-reencrypt-on-same-key)
+ [kms:RequestAlias](#conditions-kms-request-alias)
+ [kms:ResourceAliases](#conditions-kms-resource-aliases)
+ [kms:ReplicaRegion](#conditions-kms-replica-region)
+ [kms:RetiringPrincipal](#conditions-kms-retiring-principal)
+ [kms:RotationPeriodInDays](#conditions-kms-rotation-period-in-days)
+ [kms:ScheduleKeyDeletionPendingWindowInDays](#conditions-kms-schedule-key-deletion-pending-window-in-days)
+ [kms:SigningAlgorithm](#conditions-kms-signing-algorithm)
+ [kms:ValidTo](#conditions-kms-valid-to)
+ [kms:ViaService](#conditions-kms-via-service)
+ [kms:WrappingAlgorithm](#conditions-kms-wrapping-algorithm)
+ [kms:WrappingKeySpec](#conditions-kms-wrapping-key-spec)

## kms:BypassPolicyLockoutSafetyCheck
<a name="conditions-kms-bypass-policy-lockout-safety-check"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:BypassPolicyLockoutSafetyCheck`  |  ブール値  | 単一値 |  `CreateKey` `PutKeyPolicy`  |  IAM ポリシーのみ キーポリシーと IAM ポリシー  | 

`kms:BypassPolicyLockoutSafetyCheck` 条件キーは、リクエストの [ パラメータの値に基づき、](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)CreateKey[ オペレーションおよび ](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)PutKeyPolicy`BypassPolicyLockoutSafetyCheck` オペレーションへのアクセスを制御します。

次の IAM ポリシーステートメントの例では、`CreateKey` リクエストの `BypassPolicyLockoutSafetyCheck` パラメータ値が `true.` の場合に、KMS キーを作成するアクセス許可を拒否することで、ユーザーがポリシーのロックアウト安全チェックを回避できないようにします。

```
{
  "Effect": "Deny",
  "Action": [
    "kms:CreateKey",
    "kms:PutKeyPolicy"
  ],
  "Resource": "*",
  "Condition": {
    "Bool": {
      "kms:BypassPolicyLockoutSafetyCheck": true
    }
  }
}
```

IAM ポリシーまたはキーポリシーで `kms:BypassPolicyLockoutSafetyCheck` 条件キーを使用して、 `PutKeyPolicy` オペレーションへのアクセスを制御することもできます。次のキーポリシーのポリシーステートメントの例では、KMS キーのポリシーを変更する際に、ユーザーがポリシーのロックアウト安全チェックを回避できないようにします。

このポリシーステートメントでは、明示的に `Deny` を使用せずに、[Null 条件演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null)とともに `Allow` を使用し、リクエストに `BypassPolicyLockoutSafetyCheck` パラメータが含まれていない場合にのみアクセスを許可します。パラメータが使用されていない場合、デフォルト値は `false` です。この弱いポリシーステートメントは、バイパスが必要な限定された状況では上書きされる場合があります。

```
{
  "Effect": "Allow",
  "Action": "kms:PutKeyPolicy",
  "Resource": "*",
  "Condition": {
    "Null": {
      "kms:BypassPolicyLockoutSafetyCheck": true
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:KeySpec](#conditions-kms-key-spec)
+ [kms:KeyOrigin](#conditions-kms-key-origin)
+ [kms:KeyUsage](#conditions-kms-key-usage)

## kms:CallerAccount
<a name="conditions-kms-caller-account"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:CallerAccount`  |  String  | 単一値 |  KMS キーリソースのオペレーション カスタムキーストアのオペレーション  |  キーポリシーと IAM ポリシー  | 

この条件キーを使用して、 AWS アカウントのすべてのアイデンティティ (ユーザーおよびロール) へのアクセスを許可または拒否できます。キーポリシーでは、`Principal` 要素を使って、ポリシーステートメントが適用される ID を指定できます。`Principal` 要素の構文では、 AWS アカウントのすべてのアイデンティティを指定することはできません。ただし、この条件キーをすべての ID AWS を指定する `Principal`要素と組み合わせることで、この効果を実現できます。

これを使用して、任意の *KMS キーリソースオペレーション*、つまり特定の KMS キーを使用する AWS KMS オペレーションへのアクセスを制御できます。KMS キーリソースオペレーションを識別するには、[アクションとリソースの表](kms-api-permissions-reference.md#kms-api-permissions-reference-table)で、オペレーションの `Resources` 列の `KMS key` の値を探します。また、[カスタムキーストア](key-store-overview.md#custom-key-store-overview)を管理するオペレーションにも有効です。

例えば、次のポリシーステートメントは、`kms:CallerAccount` 条件キーを使用する方法を示します。このポリシーステートメントは、Amazon EBS の AWS マネージドキー のキーポリシーにあります。すべての ID を指定する `Principal`要素と `kms:CallerAccount`条件キーを組み合わせて、 AWS アカウント 111122223333 AWS のすべての ID へのアクセスを効果的に許可します。Amazon EBS 経由のリクエストのみを許可することで、アクセス許可をさらに制限するための追加の AWS KMS 条件キー (`kms:ViaService`) が含まれています。詳細については、「[kms:ViaService](#conditions-kms-via-service)」を参照してください。

```
{
  "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS",
  "Effect": "Allow",
  "Principal": {"AWS": "*"},
  "Condition": {
    "StringEquals": {
      "kms:CallerAccount": "111122223333",
      "kms:ViaService": "ec2.us-west-2.amazonaws.com"
    }
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:CreateGrant",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}
```

## kms:CustomerMasterKeySpec (非推奨)
<a name="conditions-kms-key-spec-replaced"></a>

`kms:CustomerMasterKeySpec` 条件キーは非推奨です。代わりに、[kms:KeySpec](#conditions-kms-key-spec) 条件キーを使用します。

`kms:CustomerMasterKeySpec` および `kms:KeySpec` 条件キーは同じように機能します。名前だけが異なります。`kms:KeySpec` を使用することをお勧めします。ただし、変更が中断されないように、 は両方の条件キー AWS KMS をサポートします。

## kms:CustomerMasterKeyUsage (非推奨)
<a name="conditions-kms-key-usage-replaced"></a>

`kms:CustomerMasterKeyUsage` 条件キーは非推奨です。代わりに、[kms:KeyUsage](#conditions-kms-key-usage) 条件キーを使用します。

`kms:CustomerMasterKeyUsage` および `kms:KeyUsage` 条件キーは同じように機能します。名前だけが異なります。`kms:KeyUsage` を使用することをお勧めします。ただし、変更が中断されないように、 は両方の条件キー AWS KMS をサポートします。

## kms:DataKeyPairSpec
<a name="conditions-kms-data-key-spec"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:DataKeyPairSpec`  |  String  | 単一値 |  `GenerateDataKeyPair` `GenerateDataKeyPairWithoutPlaintext`  |  キーポリシーと IAM ポリシー  | 

この条件キーを使用して、リクエストの `KeyPairSpec` パラメータ値に基づく、[GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html) および [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html) オペレーションへのアクセスを制御します。例えば、特定のタイプのデータキーペアのみを生成することをユーザーに許可できます。

次のキーポリシーステートメントの例では、`kms:DataKeyPairSpec` 条件キーを使用して、ユーザーが KMS キーを使用して RSA データキーペアのみを生成できるようにします。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": [
    "kms:GenerateDataKeyPair",
    "kms:GenerateDataKeyPairWithoutPlaintext"
  ],
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:DataKeyPairSpec": "RSA*"
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:KeySpec](#conditions-kms-key-spec)
+ [kms:EncryptionAlgorithm](#conditions-kms-encryption-algorithm)
+ [kms:EncryptionContext: *context-key*](#conditions-kms-encryption-context)
+ [kms:EncryptionContextKeys](#conditions-kms-encryption-context-keys)

## kms:EncryptionAlgorithm
<a name="conditions-kms-encryption-algorithm"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:EncryptionAlgorithm`  |  String  | 単一値 |  `Decrypt` `Encrypt` `GenerateDataKey` `GenerateDataKeyPair` `GenerateDataKeyPairWithoutPlaintext` `GenerateDataKeyWithoutPlaintext` `ReEncrypt`  |  キーポリシーと IAM ポリシー  | 

`kms:EncryptionAlgorithm` 条件キーを使用して、オペレーションで使用される暗号化アルゴリズムに基づいて暗号化オペレーションへのアクセスを制御できます。[Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)、[Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)、および [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) オペレーションの場合、リクエストの [EncryptionAlgorithm](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html#KMS-Decrypt-request-EncryptionAlgorithm) パラメータの値に基づいてアクセスを制御します。データキーとデータキーペアを生成するオペレーションでは、データキーの暗号化に使用される暗号化アルゴリズムに基づいてアクセスを制御します。

この条件キーは、非対称 KMS キーペアのパブリックキーによる暗号化など AWS KMS、 の外部で実行されるオペレーションには影響しません AWS KMS。

**リクエスト内の暗号化アルゴリズムパラメータ**

ユーザーが KMS キーで特定の暗号化アルゴリズムのみを使用できるようにするには、`Deny` 効果と `StringNotEquals` 条件演算子を含むポリシーステートメントを使用します。例えば、以下のキーポリシーステートメント例は、リクエスト内の暗号化アルゴリズムが `RSAES_OAEP_SHA_256` (RSA KMS キーで使用される非対称暗号化アルゴリズム) 以外の場合に、`ExampleRole` ロールを引き受けることができるプリンシパルが、指定された暗号化オペレーションでこの KMS キーを使用することを禁止します。

ユーザーが特定の暗号化アルゴリズムを使用できるようにするポリシーステートメントとは異なり、このような二重否定を持つポリシーステートメントは、この KMS キーに対する他のポリシーおよび権限によって、このロールが他の暗号化アルゴリズムを使用することを防止します。このポリシーステートメントの `Deny` は、 `Allow` 効果を持つキーポリシーまたは IAM ポリシーよりも優先され、この KMS キーおよびそのプリンシパルのすべての権限よりも優先されます。

```
{
  "Sid": "Allow only one encryption algorithm with this asymmetric KMS key",
  "Effect": "Deny",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*"
  ],
  "Resource": "*",
  "Condition": {
    "StringNotEquals": {
      "kms:EncryptionAlgorithm": "RSAES_OAEP_SHA_256"
    }
  }
}
```

**オペレーションに使用される暗号化アルゴリズム**

`kms:EncryptionAlgorithm` 条件キーを使用して、リクエストでアルゴリズムが指定されていない場合でも、オペレーションで使用される暗号化アルゴリズムに基づいてオペレーションへのアクセスを制御することもできます。これにより、デフォルト値のためリクエストで指定されない可能性のある `SYMMETRIC_DEFAULT` アルゴリズムを要求または禁止することができます。

この機能により、`kms:EncryptionAlgorithm` 条件キーを使用して、データキーとデータキーペアを生成するオペレーションへのアクセスを制御することができます。これらのオペレーションは、対称暗号化 KMS キーと `SYMMETRIC_DEFAULT` アルゴリズムのみを使用します。

例えば、この IAM ポリシーは、プリンシパルを対称暗号化に制限します。リクエストで指定された、またはオペレーションで使用される暗号化アルゴリズムが SYMMETRIC\$1DEFAULT でない限り、暗号化オペレーションのサンプルアカウントにある KMS キーへのアクセスを拒否します。`GenerateDataKey*` を含めると、[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)、[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)、[GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)、および [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html) がアクセス許可に追加されます。この条件は、常に対称暗号化アルゴリズムを使用するため、これらのオペレーションには影響しません。

```
{
  "Sid": "AllowOnlySymmetricAlgorithm",
  "Effect": "Deny",
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*"
  ],
  "Resource": "arn:aws:kms:us-west-2:111122223333:key/*",
  "Condition": {
    "StringNotEquals": {
      "kms:EncryptionAlgorithm": "SYMMETRIC_DEFAULT"
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:MacAlgorithm](#conditions-kms-mac-algorithm)
+ [kms:SigningAlgorithm](#conditions-kms-signing-algorithm)

## kms:EncryptionContext: *context-key*
<a name="conditions-kms-encryption-context"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:EncryptionContext:context-key`  |  String  | 単一値 |  `CreateGrant` `Encrypt` `Decrypt` `GenerateDataKey` `GenerateDataKeyPair` `GenerateDataKeyPairWithoutPlaintext` `GenerateDataKeyWithoutPlaintext` `ReEncrypt` `RetireGrant`  |  キーポリシーと IAM ポリシー  | 

`kms:EncryptionContext:context-key` 条件キーを使用して、[対称暗号化 KMS キー](symm-asymm-choose-key-spec.md#symmetric-cmks)へのアクセスを、[暗号化オペレーション](kms-cryptography.md#cryptographic-operations)に対するリクエスト内の[暗号化コンテキスト](encrypt_context.md)に基づいて制御することができます。暗号化コンテキストペアのキーと値の両方を評価するには、この条件キーを使用します。暗号化コンテキストキーのみを評価するか、キーまたは値に関係なく暗号化コンテキストを要求するには、[kms:EncryptionContextKeys](#conditions-kms-encryption-context-keys) 条件キーを使用します。

**注記**  
条件キーの値は、 キーポリシーと IAM ポリシーに関する文字ルールに従う必要があります。暗号化コンテキストで有効な文字の中には、ポリシーでは有効にならないものもあります。この条件キーは、すべての有効な暗号化コンテキスト値を表現するために使用できない場合があります。キーポリシードキュメントのルールに関する詳細については、「[キーポリシー形式](key-policy-overview.md#key-policy-format)」を参照してください。IAM ポリシードキュメントのルールに関する詳細については、「IAM ユーザーガイド」の「[IAM 名前の要件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-names)」を参照してください。

[非対称 KMS キー](symmetric-asymmetric.md)または [HMAC KMS キー](hmac.md)を使用する暗号化オペレーションで暗号化コンテキストを指定することはできません。非対称アルゴリズムと MAC アルゴリズムは、暗号化コンテキストをサポートしません。

kms:EncryptionContext:*context-key* 条件キーを使用するには、*context-key* プレースホルダーを暗号化コンテキストキーと置き換えます。*コンテキスト値* プレースホルダーを暗号化コンテキスト値と置き換えます。

```
"kms:EncryptionContext:context-key": "context-value"
```

例えば、次の条件キーでは、キーが `AppName`、値が `ExampleApp` (`AppName = ExampleApp`) の暗号化コンテキストを指定します。

```
"kms:EncryptionContext:AppName": "ExampleApp"
```

これは[単一値の条件キー](#set-operators)です。条件キーのキーは、特定の暗号化コンテキストキー (*context-key*) を指定します。各 API リクエストに複数の暗号化コンテキストペアを含めることができますが、指定された*コンテキストキー*を持つ暗号化コンテキストペアが設定できる値は 1 つだけです。例えば、`kms:EncryptionContext:Department` 条件キーは、`Department` キーを持つ暗号化コンテキストペアにのみ適用されます。`Department` キーを持つ任意の暗号化コンテキストペアには 1 つの値しか設定できません。

`kms:EncryptionContext:context-key` 条件キーで集合演算子を使用しないでください。ポリシーステートメントを `Allow` アクションで作成する場合、`kms:EncryptionContext:context-key` 条件キー、`ForAllValues` 集合演算子、条件は、暗号化コンテキストのないリクエストと、ポリシー条件で指定されていない暗号化コンテキストペアを持つリクエストを許可します。

**警告**  
この単一値の条件キーで、`ForAnyValue` または `ForAllValues` の集合演算子を使用しないでください。これらの集合演算子は、要求する値を必要としないポリシー条件を作成し、禁止する値を許可する可能性があります。  
kms:EncryptionContext:*context-key* を持つ`ForAllValues`集合演算子を含むポリシーを作成または更新すると、 は次のエラーメッセージ AWS KMS を返します。  
`OverlyPermissiveCondition:EncryptionContext: Using the ForAllValues set operator with a single-valued condition key matches requests without the specified encryption context or with an unspecified encryption context. To fix, remove ForAllValues.`

特定の暗号化コンテキストペアを要求するには、`StringEquals` 演算子を持つ `kms:EncryptionContext:context-key` 条件キーを使用します。

次の例に示されるキーポリシーステートメントでは、リクエスト内の暗号化コンテキストに `AppName:ExampleApp` ペアが含まれる場合に限り、ロールを引き受けることができるプリンシパルが `GenerateDataKey` リクエストのKMS キーを使用できるようにします。他の暗号化コンテキストのペアも許可されます。

キースペース名では、大文字と小文字は区別されません。値の大文字と小文字の区別は、条件演算子 (`StringEquals` など) によって決定されます。詳細については、「[暗号化コンテキスト条件での大文字と小文字の区別](#conditions-kms-encryption-context-case)」を参照してください。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:AppName": "ExampleApp"
    }
  }
}
```

暗号化コンテキストペアを要求し、他のすべての暗号化コンテキストペアを禁止するには、両方のポリシーステートメントで、kms:EncryptionContext:*context-key* および [`kms:EncryptionContextKeys`](#conditions-kms-encryption-context-keys) を使用します。次のポリシーステートメントでは、`kms:EncryptionContext:AppName` 条件キーを使用してリクエストの `AppName=ExampleApp` 暗号化コンテキストペアを要求します。`ForAllValues` 集合演算子を持つ `kms:EncryptionContextKeys` 条件キーを使用して、`AppName` 暗号化コンテキストキーのみを許可することもできます。

`ForAllValues` 集合演算子は、リクエストの暗号化コンテキストキーを `AppName` に制限します。ポリシーステートメントに、`ForAllValues` 集合演算子を持つ `kms:EncryptionContextKeys` 条件が単独で使用された場合、この集合演算子は、暗号化コンテキストのないリクエストを許可します。ただし、リクエストに暗号化コンテキストがない場合、`kms:EncryptionContext:AppName` 条件は失敗します。`ForAllValues` 集合演算子の詳細については、*IAM ユーザーガイド*の[複数のキーと値の使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions)を参照してください。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/KeyUsers"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:AppName": "ExampleApp"
    },
    "ForAllValues:StringEquals": {
      "kms:EncryptionContextKeys": [
        "AppName"
      ]
    }
  }
}
```

この条件キーを使用して、特定のオペレーションの KMS キーへのアクセスを拒否することもできます。次の例のキーポリシーステートメントでは、`Deny` 効果を使用して、リクエストの暗号化コンテキストに `Stage=Restricted` 暗号化コンテキストペアが含まれる場合に、プリンシパルがKMS キーを使用することを禁止します。この条件により、他の暗号化コンテキストペアを含むリクエストが許可されます。これには、`Stage` キーおよびその他の値 (`Stage=Test` など) を持つ暗号化コンテキストペアが含まれます。

```
{
  "Effect": "Deny",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:Stage": "Restricted"
    }
  }
}
```

### 複数の暗号化コンテキストペアを使用する
<a name="conditions-kms-encryption-context-many"></a>

複数の暗号化コンテキストペアを要求または禁止できます。また、複数の暗号化コンテキストペアのうちの 1 つを要求することもできます。これらの条件を解釈するために使用されるロジックの詳細については、IAM ユーザーガイドの[複数のキーまたは値を持つ条件の作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html)を参照してください。

**注記**  
このトピックの以前のバージョンでは、kms:EncryptionContext:*context-key* 条件キーを持つ `ForAnyValue` および `ForAllValues` 集合演算子を使用するポリシーステートメントを表示していました。[単一値の条件キー](#set-operators)を持つ集合演算子を使用すると、暗号化コンテキストのないリクエストおよび暗号化コンテキストペアが指定されていないリクエストを許可するポリシーとなる可能性があります。  
例えば、`Allow` 効果を持つポリシー条件の場合、`ForAllValues` 集合演算子および `"kms:EncryptionContext:Department": "IT"` 条件キーは、暗号化コンテキストを「Department=IT」ペアに制限しません。これは、暗号化コンテキストのないリクエストとおよび暗号化コンテキストのペアが指定されていないリクエストを許可します (`Stage=Restricted` など)。  
ポリシーを確認し、kms:EncryptionContext:*context-key* を含む条件から集合演算子を削除してください。この形式のポリシーを作成または更新しようとすると、`OverlyPermissiveCondition` の例外を含むエラーが発生します。このエラーを解決するには、集合演算子を削除します。

複数の暗号化コンテキストのペアを要求するには、同じ条件でペアを一覧表示します。次の例のキーポリシーステートメントでは、2 つの暗号化コンテキストペア (`Department=IT` および `Project=Alpha`) を要求します。条件には異なるキー (`kms:EncryptionContext:Department`および`kms:EncryptionContext:Project`) が含まれるため、それらは暗黙的に AND 演算子によって接続されます。他の暗号化コンテキストペアは許可されますが、必須ではありません。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:Decrypt",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:Department": "IT",
      "kms:EncryptionContext:Project": "Alpha"
    }
  }
}
```

1 つの暗号化コンテキストペア、または別のペアを要求するには、各条件キーを個別のポリシーステートメントに配置します。次のキーポリシーの例では、`Department=IT` *または* `Project=Alpha` ペア、またはその両方を要求します。他の暗号化コンテキストペアは許可されますが、必須ではありません。

```
{
 "Effect": "Allow",
 "Principal": {
  "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
 },
 "Action": "kms:GenerateDataKey",
 "Resource": "*",
 "Condition": {
  "StringEquals": {
   "kms:EncryptionContext:Department": "IT"
  }
 }
},
{
 "Effect": "Allow",
 "Principal": {
  "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
 },
 "Action": "kms:GenerateDataKey",
 "Resource": "*",
 "Condition": {
  "StringEquals": {
   "kms:EncryptionContext:Project": "Alpha"
  }
 }
}
```

特定の暗号化ペアを要求し、他のすべての暗号化コンテキストペアを除外するには、ポリシーステートメントで、kms:EncryptionContext:*context-key* および [`kms:EncryptionContextKeys`](#conditions-kms-encryption-context-keys) を使用します。次のキーポリシーステートメントでは、kms:EncryptionContext:*context-key* 条件を使用して、`Department=IT` *および* `Project=Alpha` ペアの両方を持つ暗号化コンテキストを要求します。このコンテキストでは、`ForAllValues` 集合演算子を持つ `kms:EncryptionContextKeys` 条件キーを使用して、`Department` および `Project` 暗号化コンテキストキーのみを許可します。

`ForAllValues` 集合演算子は、リクエストの暗号化コンテキストキーを `Department` `Project` に制限します。条件内に単独で使用した場合、この集合演算子は暗号化コンテキストのないリクエストを許可しますが、この設定では、本条件の kms:EncryptionContext:*context-key* は失敗する可能性があります。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:Department": "IT",
      "kms:EncryptionContext:Project": "Alpha"
    },
    "ForAllValues:StringEquals": {
      "kms:EncryptionContextKeys": [
        "Department",
        "Project"
      ]
    }
  }
}
```

複数の暗号化コンテキストペアを禁止することもできます。次の例のキーポリシーステートメントでは、`Deny` 効果を使用して、リクエストの暗号化コンテキストに `Stage=Restricted` または `Stage=Production` ペアが含まれる場合に、プリンシパルがKMS キーを使用することを禁止します。

同じキー (`kms:EncryptionContext:Stage`) の複数の値 (`Restricted`および`Production`) は、暗黙的に OR によって接続されます。詳細については、*IAM ユーザーガイド*の [Evaluation logic for conditions with multiple keys or values](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multiple-conditions-eval) を参照してください。

```
{
  "Effect": "Deny",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:Stage": [
         "Restricted",
         "Production"
      ] 
    }
  }
}
```

### 暗号化コンテキスト条件での大文字と小文字の区別
<a name="conditions-kms-encryption-context-case"></a>

復号オペレーションで指定される暗号化コンテキストは、暗号化オペレーションで指定される暗号化コンテキストに大文字と小文字を区別して完全に一致する必要があります。複数のペアの暗号化コンテキストのペアの順序のみを変更できます。

ただし、ポリシー条件では、条件キーの大文字と小文字は区別されません。条件値の大文字と小文字の区別は、使用する [ポリシー条件演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) (`StringEquals` や `StringEqualsIgnoreCase` など) によって決まります。

したがって、`kms:EncryptionContext:` プレフィックスと *`context-key`* の置換で構成される条件キーでは、大文字と小文字は区別されません。この条件を使用するポリシーでは、条件キーのいずれの要素もチェックされません。値の大文字と小文字の区別 (*`context-value`* の置換) は、ポリシー条件演算子によって決まります。

例えば、次のポリシーステートメントでは、大文字と小文字に関係なく暗号化コンテキストに `Appname` キーが含まれている場合にオペレーションが許可されます。この `StringEquals` 条件では、指定時に `ExampleApp` を大文字にする必要があります。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:Decrypt",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:Appname": "ExampleApp"
    }
  }
}
```

大文字と小文字を区別する暗号化コンテキストキーを要求するには、[kms:EncryptionContextKeys](#conditions-kms-encryption-context-keys) ポリシー条件と、大文字と小文字が区別される条件演算子 (`StringEquals` など) を使用します。このポリシー条件では、暗号化コンテキストキーがポリシー条件値であるため、大文字と小文字の区別は条件演算子によって決定されます。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "ForAnyValue:StringEquals": {
      "kms:EncryptionContextKeys": "AppName"
    }
  }
}
```

暗号化コンテキストのキーと値の両方に対して大文字と小文字を区別する評価を要求するには、同じポリシーステートメントで `kms:EncryptionContextKeys` と kms:EncryptionContext:*context-key* のポリシー条件を一緒に使用します。大文字と小文字を区別する条件演算子 (`StringEquals` など) は、常に条件の値に適用されます。暗号化コンテキストキー (`AppName` など) は `kms:EncryptionContextKeys` 条件の値です。暗号化コンテキスト値 (`ExampleApp` など) は、kms:EncryptionContext:*context-key* 条件の値です。

例えば、次のキーポリシーステートメントでは、`StringEquals` 演算子で大文字と小文字が区別されるため、暗号化コンテキストキーと暗号化コンテキスト値の両方で大文字と小文字が区別されます。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "ForAnyValue:StringEquals": {
      "kms:EncryptionContextKeys": "AppName"
    },
    "StringEquals": {
      "kms:EncryptionContext:AppName": "ExampleApp"
    }
  }
}
```

### 暗号化コンテキスト条件での変数の使用
<a name="conditions-kms-encryption-context-variables"></a>

暗号化コンテキストペアのキーと値はシンプルなリテラル文字列であることが必要です。整数やオブジェクトなど完全に解決されない型のキーと値は使用できません。整数や浮動小数点数など、別の型を使用する場合、 はそれをリテラル文字列として AWS KMS 解釈します。

```
"encryptionContext": {
    "department": "10103.0"
}
```

ただし、`kms:EncryptionContext:context-key` 条件キーの値は [IAM ポリシー変数](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html)となる可能性があります。これらのポリシー変数はリクエストの値に基づいて実行時に解決されます。例えば、`aws:CurrentTime ` はリクエストの時間に解決され、`aws:username` は呼び出し元のフレンドリ名に解決されます。

これらのポリシー変数を使用し、ポリシーステートメントを作成して、暗号化コンテキストに限定的な情報 (呼び出し元のユーザー名など) を必要とする条件を指定できます。ポリシーステートメントに変数を含めるため、ロールを引き受けることができるすべてのユーザーに同じポリシーステートメントを使用できます。ユーザー別にポリシーステートメントを記述する必要はありません。

ロールを引き受けることができるすべてのユーザーが同じ KMS キーを使用して、データを暗号化および復号する状況を考慮します。ただし、それらのユーザーに自分が暗号化したデータのみの復号を許可するとします。まず、すべてのリクエストに、キーが `user`で値が発信者の AWS ユーザー名である暗号化コンテキスト AWS KMS を含めるように要求します。次に例を示します。

```
"encryptionContext": {
    "user": "bob"
}
```

次に、この要件を定義するために、以下の例のようなポリシーステートメントを使用できます。このポリシーステートメントでは、`TestTeam` ロールに、KMS キーを使用してデータを暗号化および復号するためのアクセス許可を付与します。ただし、そのアクセス許可は、`"user": "<username>"` ペアがリクエストの暗号化コンテキストに含まれる場合にのみ有効です。条件では、ユーザー名を表すために [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-infotouse](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-infotouse) policy 変数を使用します。

リクエストが評価されるとき、条件の変数が呼び出し元のユーザー名に置き換えられます。そのため条件では、「bob」には `"user": "bob"`、「alice」には `"user": "alice"` の暗号化コンテキストを必須とします。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/TestTeam"
  },
  "Action": [
    "kms:Decrypt",
    "kms:Encrypt"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:user": "${aws:username}"
    }
  }
}
```

IAM ポリシー変数は、`kms:EncryptionContext:context-key` 条件キーの値でのみ使用できます。キーで変数を使用することはできません。

変数に [プロバイダ固有のコンテキストキー](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_user-id.html) を使用することもできます。これらのコンテキストキー AWS は、ウェブ ID フェデレーションを使用して にログインしたユーザーを一意に識別します。

すべての変数と同様に、これらの変数は、実際の暗号化コンテキストではなく `kms:EncryptionContext:context-key` ポリシー条件でのみ使用できます。また、条件のキーではなく値でのみ使用できます。

例えば、以下のキーポリシーステートメントは前のものと似ています。ただし、この条件には、Amazon Cognito ユーザープールにログインしたユーザーを値が一意に識別する、キーが `sub` の暗号化コンテキストが必要です。Amazon Cognito でのユーザーおよびロールの識別についての詳細は、[Amazon Cognito デベロッパーガイド](https://docs.aws.amazon.com/cognito/latest/developerguide/)の [IAM ロール](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html)を参照してください。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/TestTeam"
  },
  "Action": [
    "kms:Decrypt",
    "kms:Encrypt"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
       "kms:EncryptionContext:sub": "${cognito-identity.amazonaws.com:sub}"
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:EncryptionContextKeys](#conditions-kms-encryption-context-keys)
+ [kms:GrantConstraintType](#conditions-kms-grant-constraint-type)

## kms:EncryptionContextKeys
<a name="conditions-kms-encryption-context-keys"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:EncryptionContextKeys`  |  文字列 (リスト)  | 複数値 |  `CreateGrant` `Decrypt` `Encrypt` `GenerateDataKey` `GenerateDataKeyPair` `GenerateDataKeyPairWithoutPlaintext` `GenerateDataKeyWithoutPlaintext` `ReEncrypt` `RetireGrant`  |  キーポリシーと IAM ポリシー  | 

`kms:EncryptionContextKeys` 条件キーを使用することで、暗号化オペレーションに対するリクエスト内の[暗号化コンテキスト](encrypt_context.md)に基づいて[対称暗号化 KMS キー](symm-asymm-choose-key-spec.md#symmetric-cmks)へのアクセスを制御することができます。各暗号化コンテキストペアのキーのみを評価するには、この条件キーを使用します。暗号化コンテキストのキーと値の両方を評価するには、`kms:EncryptionContext:context-key` 条件キーを使用します。

[非対称 KMS キー](symmetric-asymmetric.md)または [HMAC KMS キー](hmac.md)を使用する暗号化オペレーションで暗号化コンテキストを指定することはできません。非対称アルゴリズムと MAC アルゴリズムは、暗号化コンテキストをサポートしません。

**注記**  
暗号化コンテキストキーを含む条件キー値は、 AWS KMS キーポリシーの文字とエンコーディングルールに準拠する必要があります。この条件キーは、すべての有効な暗号化コンテキストキーを表現するために使用できない場合があります。キーポリシードキュメントのルールに関する詳細については、「[キーポリシー形式](key-policy-overview.md#key-policy-format)」を参照してください。IAM ポリシードキュメントのルールに関する詳細については、「IAM ユーザーガイド」の「[IAM 名前の要件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-names)」を参照してください。

これは[複数値の条件キー](#set-operators)です。各 API リクエストで複数の暗号化コンテキストペアを指定できます。`kms:EncryptionContextKeys` は、リクエストの暗号化コンテキストキーとポリシーの暗号化コンテキストキーのセットを比較します。これらのセットを比較する方法を決定するには、`ForAnyValue` または `ForAllValues` 集合演算子をポリシー条件で使用します。集合演算子の詳細については、IAM ユーザーガイドの[複数のキーと値の使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions)を参照してください。
+ `ForAnyValue`: リクエスト内の 1 つ以上の暗号化コンテキストキーがポリシー条件の暗号化コンテキストキーと一致する必要があります。その他の暗号化コンテキストキーも許可されます。リクエストに暗号化コンテキストがない場合、条件は満たされません。
+ `ForAllValues`: リクエスト内のすべての暗号化コンテキストキーがポリシー条件の暗号化コンテキストキーと一致する必要があります。この集合演算子は、暗号化コンテキストキーをポリシー条件内のキーに制限します。暗号化コンテキストキーは必要ありませんが、指定されていない暗号化コンテキストキーは禁止されています。

次の例のキーポリシーステートメントでは、`ForAnyValue` 集合演算子で `kms:EncryptionContextKeys` 条件キーを使用します。このポリシーステートメントでは KMS キーを使用して、リクエストの暗号化コンテキストペアの 1 つ以上に、値にかかわらず `AppName` キーが含まれる場合にのみ、指定されたオペレーションで KMS キーの使用を許可します。

例えば、このキーポリシーステートメントでは、2 つの暗号化コンテキストペア `AppName=Helper` および `Project=Alpha` を持つ `GenerateDataKey` リクエストを許可します。これは、最初の暗号化コンテキストペアが条件を満たすためです。`Project=Alpha` のみを持つリクエスト、または暗号化コンテキストがないリクエストは失敗します。

[StringEquals](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) 条件オペレーションでは大文字と小文字が区別されるため、このポリシーステートメントでは、暗号化コンテキストキーのスペル、および大文字と小文字が区別されます。ただし、キーの大文字と小文字の区別を無視する条件演算子 (`StringEqualsIgnoreCase` など) を使用できます。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": [
    "kms:Encrypt",
    "kms:GenerateDataKey*"
  ],
  "Resource": "*",
  "Condition": {
    "ForAnyValue:StringEquals": {
      "kms:EncryptionContextKeys": "AppName"
    }
  }
}
```

`kms:EncryptionContextKeys` 条件キーを使用して、KMS キーを使用する暗号化オペレーションで、暗号化テキスト (任意の暗号化コンテキスト) を要求することもできます。

次の例のキーポリシーステートメントでは、`kms:EncryptionContextKeys` 条件キーを [Null 条件演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null)とともに使用して、API リクエストに暗号化コンテキストが存在する (null ではない) 場合にのみ、KMS キーへのアクセスを許可します。この条件では、暗号化コンテキストのキーまたは値をチェックしません。暗号化コンテキストが存在することだけを検証します。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": [
    "kms:Encrypt",
    "kms:GenerateDataKey*"
  ],
  "Resource": "*",
  "Condition": {
    "Null": {
      "kms:EncryptionContextKeys": false
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:EncryptionContext: *context-key*](#conditions-kms-encryption-context)
+ [kms:GrantConstraintType](#conditions-kms-grant-constraint-type)

## kms:ExpirationModel
<a name="conditions-kms-expiration-model"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:ExpirationModel`  |  String  | 単一値 |  `ImportKeyMaterial`  |  キーポリシーと IAM ポリシー  | 

`kms:ExpirationModel` 条件キーは、リクエストの [ExpirationModel](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html) パラメータの値に基づき、[ImportKeyMaterial](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ExpirationModel) オペレーションへのアクセスを制御します。

`ExpirationModel` は、インポートされたキーマテリアルの有効期限が切れているかどうかを判断するオプションのパラメータです。有効な値は、`KEY_MATERIAL_EXPIRES` および `KEY_MATERIAL_DOES_NOT_EXPIRE` です。`KEY_MATERIAL_EXPIRES` はデフォルト値です。

有効期限の日付と時刻は、 [Validto](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ValidTo) パラメーターの値によって決まります。`ValidTo` パラメータの値が `ExpirationModel` である場合を除き、`KEY_MATERIAL_DOES_NOT_EXPIRE` パラメータが必要です。また、[kms:ValidTo](#conditions-kms-valid-to) 条件キーを使用して、アクセス条件として特定の有効期限を設定することもできます。

次のポリシーステートメントの例では、`kms:ExpirationModel` 条件キーを使用して、リクエストに `ExpirationModel` パラメータが含まれていて、その値が `KEY_MATERIAL_DOES_NOT_EXPIRE` の場合にのみ、ユーザーが KMS キーにキーマテリアルをインポートできるようにします。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:ImportKeyMaterial",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ExpirationModel": "KEY_MATERIAL_DOES_NOT_EXPIRE"
    }
  }
}
```

また、`kms:ExpirationModel` 条件キーを使用して、キーマテリアルの有効期限が切れている場合にのみ、ユーザーがキーマテリアルをインポートできるようにもします。次のポリシーステートメントの例では、[Null 条件演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null)とともに `kms:ExpirationModel` 条件キーを使用して、リクエストに `ExpirationModel` パラメータが含まれていない場合にのみ、ユーザーがキーマテリアルをインポートできるようにします。ExpirationModel のデフォルト値は `KEY_MATERIAL_EXPIRES` です。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:ImportKeyMaterial",
  "Resource": "*",
  "Condition": {
    "Null": {
      "kms:ExpirationModel": true
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:ValidTo](#conditions-kms-valid-to)
+ [kms:WrappingAlgorithm](#conditions-kms-wrapping-algorithm)
+ [kms:WrappingKeySpec](#conditions-kms-wrapping-key-spec)

## kms:GrantConstraintType
<a name="conditions-kms-grant-constraint-type"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:GrantConstraintType`  |  String  | 単一値 |  `CreateGrant` `RetireGrant`  |  キーポリシーと IAM ポリシー  | 

この条件キーを使用し、リクエストの[権限の制約](create-grant-overview.md#grant-constraints)のタイプに基づいて、[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) オペレーションへのアクセスを制御できます。

許可の作成では、オプションで許可の制約を指定して、特定の[暗号化コンテキスト](encrypt_context.md)が存在する場合のみ、許可によってオペレーションを実行できます。許可の制約には、`EncryptionContextEquals` または`EncryptionContextSubset` の 2 つのタイプがあります。この条件キーを使用して、リクエストにどちらのタイプが含まれているか確認できます。

**重要**  
このフィールドには、機密情報や重要情報を含めないでください。このフィールドは、CloudTrail ログやその他の出力にプレーンテキストで表示される場合があります。

次のキーポリシーステートメントの例では、`kms:GrantConstraintType` 条件キーを使用して、リクエストに `EncryptionContextEquals` 権限の制約が含まれている場合にのみ、ユーザーが権限を作成できるようにします。この例は、キーポリシーのポリシーステートメントを示しています。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:CreateGrant",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:GrantConstraintType": "EncryptionContextEquals"
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:EncryptionContext: *context-key*](#conditions-kms-encryption-context)
+ [kms:EncryptionContextKeys](#conditions-kms-encryption-context-keys)
+ [kms:GrantIsForAWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [kms:GrantOperations](#conditions-kms-grant-operations)
+ [kms:GranteePrincipal](#conditions-kms-grantee-principal)
+ [kms:RetiringPrincipal](#conditions-kms-retiring-principal)

## kms:GrantIsForAWSResource
<a name="conditions-kms-grant-is-for-aws-resource"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:GrantIsForAWSResource`  |  ブール値  | 単一値 |  `CreateGrant` `ListGrants` `RevokeGrant`  |  キーポリシーと IAM ポリシー  | 

[AWS KMSと統合されたAWS サービス](https://aws.amazon.com/kms/features/#AWS_Service_Integration)がユーザーの代わりにオペレーションを呼び出す場合にのみ、[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)、[ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)、[RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html) オペレーションのアクセス許可を許可または拒否します。このポリシー条件では、ユーザーがこれらの許可オペレーションを直接呼び出すことはできません。

次のキーポリシーステートメント例では、 `kms:GrantIsForAWSResource` 条件キーを使用しています。これにより AWS KMS、Amazon EBS などの と統合されている AWS サービスが、指定されたプリンシパルに代わってこの KMS キーに許可を作成できるようになります。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:CreateGrant",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "kms:GrantIsForAWSResource": true
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [kms:GrantOperations](#conditions-kms-grant-operations)
+ [kms:GranteePrincipal](#conditions-kms-grantee-principal)
+ [kms:RetiringPrincipal](#conditions-kms-retiring-principal)

## kms:GrantOperations
<a name="conditions-kms-grant-operations"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:GrantOperations`  |  String  | 複数値 |  `CreateGrant`  |  キーポリシーと IAM ポリシー  | 

この条件キーを使用し、リクエストの[権限オペレーション](grants.md#terms-grant-operations)に基づいて、[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) オペレーションへのアクセスを制御できます。例えば、暗号化へのアクセス権限を委任し、復号化へのアクセス権限を委任しないという許可をユーザーが作成するようにできます。権限の詳細については、[権限の使用](grants.md)を参照してください。

これは[複数値を持つ条件キー](#set-operators)です。`kms:GrantOperations` は `CreateGrant` リクエストの権限オペレーションのセットをポリシーの権限オペレーションのセットと比較します。これらのセットを比較する方法を決定するには、`ForAnyValue` または `ForAllValues` 集合演算子をポリシー条件で使用します。集合演算子の詳細については、IAM ユーザーガイドの[複数のキーと値の使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions)を参照してください。
+ `ForAnyValue`: リクエストの 1 つ以上の権限オペレーションが、ポリシー条件の権限オペレーションのうちの 1 つと一致する必要があります。その他の権限オペレーションは許可されます。
+ ForAllValues: リクエスト内のすべての権限オペレーションが、ポリシー条件の権限オペレーションと一致する必要があります。この集合演算子は、権限オペレーションをポリシー条件で指定されたオペレーションに制限します。この集合演算子は権限オペレーションを必要としませんが、不特定の権限オペレーションを禁止します。

  ForAllValues はリクエストに権限オペレーションがない場合にも true を返しますが、`CreateGrant` はそれを許可しません。`Operations` パラメータが欠落しているか、null 値を持っている場合、`CreateGrant` リクエストは失敗します。

次のキーポリシーステートメントの例では、`kms:GrantOperations` 条件キーを使用して、権限オペレーションが `Encrypt`、`ReEncryptTo`、または両方の場合にのみ、権限を作成します。権限に他のオペレーションが含まれている場合、`CreateGrant` リクエストは失敗します。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:CreateGrant",
  "Resource": "*",
  "Condition": {
    "ForAllValues:StringEquals": {
      "kms:GrantOperations": [
        "Encrypt",
        "ReEncryptTo"
      ]
    }
  }
}
```

ポリシー条件で集合演算子を `ForAnyValue` に変更した場合、ポリシーステートメントでは、権限の権限オペレーションの 1 つ以上が `Encrypt` または `ReEncryptTo` であっても、`Decrypt` または `ReEncryptFrom` のような他の権限オペレーションを許可する必要があります。

**以下の資料も参照してください。**
+ [kms:GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [kms:GrantIsForAWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [kms:GranteePrincipal](#conditions-kms-grantee-principal)
+ [kms:RetiringPrincipal](#conditions-kms-retiring-principal)

## kms:GranteePrincipal
<a name="conditions-kms-grantee-principal"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:GranteePrincipal`  |  String  | 単一値 |  `CreateGrant`  |  IAM とキーポリシー  | 

この条件キーを使用して、リクエストの [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) パラメータの値に基づき、[GranteePrincipal](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-GranteePrincipal) オペレーションへのアクセスを制御できます。例えば、`CreateGrant` リクエストの被付与者プリンシパルが条件ステートメントで指定されたプリンシパルと一致した場合にのみ、KMS キーを使用する権限を作成できます。

グラント対象のプリンシパルを指定するには、 AWS プリンシパルの Amazon リソースネーム (ARN) を使用します。有効なプリンシパルには AWS アカウント、IAM ユーザー、IAM ロール、フェデレーティッドユーザー、引き受けたロールユーザーが含まれます。プリンシパル向け ARN 構文については、「*IAM ユーザーガイド*」の「[IAM の ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)」を参照してください。

次のキーポリシーステートメントの例では、`kms:GranteePrincipal` 条件キーを使用して、権限の被付与者プリンシパルが `LimitedAdminRole` の場合にのみ、KMS キーの権限を作成します。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:CreateGrant",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:GranteePrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole"
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [kms:GrantIsForAWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [kms:GrantOperations](#conditions-kms-grant-operations)
+ [kms:RetiringPrincipal](#conditions-kms-retiring-principal)

## kms:KeyAgreementAlgorithm
<a name="conditions-kms-key-agreement-algorithm"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:KeyAgreementAlgorithm`  |  String  | 単一値 | `DeriveSharedSecret` |  キーポリシーと IAM ポリシー  | 

`kms:KeyAgreementAlgorithm` 条件キーを使用することで、リクエスト内の `KeyAgreementAlgorithm` パラメータの値に基づいて [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html) オペレーションへのアクセスを制御できます。`KeyAgreementAlgorithm` では、唯一の有効な値は `ECDH` です。

例えば、次のキーポリシーステートメントは、`kms:KeyAgreementAlgorithm` 条件キーを使用して、`KeyAgreementAlgorithm` が `ECDH` でない限り、DeriveSharedSecret へのすべてのアクセスを拒否します。

```
{
       "Effect": "Deny",
       "Principal": {
         "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
       },
       "Action": "kms:DeriveSharedSecret",
       "Resource": "*",
       "Condition": {
            "StringNotEquals": {
               "kms:KeyAgreementAlgorithm": "ECDH"
         }
       }
}
```

**以下の資料も参照してください。**
+ [kms:KeyUsage](#conditions-kms-key-usage)

## kms:KeyOrigin
<a name="conditions-kms-key-origin"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:KeyOrigin`  |  String  | 単一値 |  `CreateKey` KMS キーリソースのオペレーション  |  IAM ポリシー キーポリシーと IAM ポリシー  | 

`kms:KeyOrigin` 条件キーは、オペレーションによって作成される、またはオペレーションで使用される KMS キーの `Origin` プロパティの値に基づいて、オペレーションへのアクセスを制御します。これは、リソース条件または要求条件として機能します。

この条件キーを使用して、リクエストの [Origin](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) パラメータの値に基づき、[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-Origin) オペレーションへのアクセスを制御できます。`Origin` の有効値は、`AWS_KMS`、`AWS_CLOUDHSM`、`EXTERNAL_KEY_STORE`、`EXTERNAL` です。

たとえば、キーマテリアルが AWS KMS (`AWS_KMS`) で生成された場合にのみ、キーマテリアルが [CloudHSM カスタムキーストア](key-store-overview.md#custom-key-store-overview) () に関連付けられた AWS CloudHSM クラスターで生成された場合にのみ、キーマテリアルが[外部キーストア](key-store-overview.md#custom-key-store-overview) (`AWS_CLOUDHSM`) で生成された場合にのみ、またはキーマテリアルが外部ソース (`EXTERNAL_KEY_STORE`) からインポートされた場合にのみ、KMS キーを作成できます`EXTERNAL`。 [キーの AWS KMS キーマテリアルのインポート](importing-keys.md)

次のキーポリシーステートメントの例では、 `kms:KeyOrigin`条件キーを使用して、 がキーマテリアルを作成する場合にのみ KMS AWS KMS キーを作成します。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
      },
      "Action": "kms:CreateKey",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:KeyOrigin": "AWS_KMS"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
      },
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:GenerateDataKeyPair",
        "kms:GenerateDataKeyPairWithoutPlaintext",
        "kms:ReEncrypt*"
      ],
      "Resource": "arn:aws:kms:us-west-2:111122223333:key/*",
      "Condition": {
        "StringEquals": {
          "kms:KeyOrigin": "AWS_CLOUDHSM"
        }
      }
    }
  ]
}
```

------

`kms:KeyOrigin` 条件キーを使用し、オペレーションに使用される KMS キーの `Origin` プロパティに基づいて、KMS キーを使用または管理するオペレーションへのアクセスを制御することもできます。このオペレーションは *KMS キーリソースオペレーション*である必要があります。つまり、特定の KMS キーに認可されるオペレーションです。KMS キーリソースオペレーションを識別するには、[アクションとリソースの表](kms-api-permissions-reference.md#kms-api-permissions-reference-table)で、オペレーションの `Resources` 列の `KMS key` の値を探します。

例えば次の IAM ポリシーでは、カスタムキーストアで作成されたアカウントの KMS キーのみを使用して、プリンシパルが、指定された KMS キーリソースのオペレーションを実行できるようにします。

```
{
  "Effect": "Allow",  
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:GenerateDataKey",
    "kms:GenerateDataKeyWithoutPlaintext",
    "kms:GenerateDataKeyPair",
    "kms:GenerateDataKeyPairWithoutPlaintext",
    "kms:ReEncrypt*"
  ],
  "Resource": "arn:aws:kms:us-west-2:111122223333:key/*",
  "Condition": {
    "StringEquals": {
      "kms:KeyOrigin": "AWS_CLOUDHSM"
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:BypassPolicyLockoutSafetyCheck](#conditions-kms-bypass-policy-lockout-safety-check)
+ [kms:KeySpec](#conditions-kms-key-spec)
+ [kms:KeyUsage](#conditions-kms-key-usage)

## kms:KeySpec
<a name="conditions-kms-key-spec"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:KeySpec`  |  String  | 単一値 |  `CreateKey` KMS キーリソースのオペレーション |  IAM ポリシー キーポリシーと IAM ポリシー  | 

`kms:KeySpec` 条件キーは、オペレーションによって作成される、またはオペレーションで使用される KMS キーの `KeySpec` プロパティの値に基づいて、オペレーションへのアクセスを制御します。

IAM ポリシーにあるこの条件キーを使用し、`CreateKey` リクエストの [KeySpec](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-KeySpec) パラメータ値に基づいて、[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) オペレーションへのアクセスを制御できます。例えば、この条件を使用して、対称暗号化 KMS キーのみの作成、または HMAC KMS キーのみの作成をユーザーに許可することができます。

以下の IAM ポリシーステートメント例は、`kms:KeySpec` 条件キーを使用して、RSA 非対称 KMS キーのみの作成をプリンシパルに許可します。この許可は、リクエスト内の `KeySpec` が `RSA_` で始まる場合に限り、有効です。

```
{
  "Effect": "Allow",
  "Action": "kms:CreateKey",
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:KeySpec": "RSA_*"
    }
  }
}
```

`kms:KeySpec` 条件キーを使用し、オペレーションに使用される KMS キーの `KeySpec` プロパティに基づいて、KMS キーを使用または管理するオペレーションへのアクセスを制御することもできます。このオペレーションは *KMS キーリソースオペレーション*である必要があります。つまり、特定の KMS キーに認可されるオペレーションです。KMS キーリソースオペレーションを識別するには、[アクションとリソースの表](kms-api-permissions-reference.md#kms-api-permissions-reference-table)で、オペレーションの `Resources` 列の `KMS key` の値を探します。

例えば、以下の IAM ポリシーは、指定された KMS キーリソースオペレーションの実行をプリンシパルに許可しますが、許可されるのはアカウント内の対称暗号化 KMS キーを使用する場合のみになります。

```
{
  "Effect": "Allow",
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:DescribeKey"
  ],
  "Resource": "arn:aws:kms:us-west-2:111122223333:key/*",
  "Condition": {
    "StringEquals": {
      "kms:KeySpec": "SYMMETRIC_DEFAULT"
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:BypassPolicyLockoutSafetyCheck](#conditions-kms-bypass-policy-lockout-safety-check)
+ [kms:CustomerMasterKeySpec (非推奨)](#conditions-kms-key-spec-replaced)
+ [kms:DataKeyPairSpec](#conditions-kms-data-key-spec)
+ [kms:KeyOrigin](#conditions-kms-key-origin)
+ [kms:KeyUsage](#conditions-kms-key-usage)

## kms:KeyUsage
<a name="conditions-kms-key-usage"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:KeyUsage`  |  String  | 単一値 |  `CreateKey` KMS キーリソースのオペレーション  |  IAM ポリシー キーポリシーと IAM ポリシー  | 

`kms:KeyUsage` 条件キーは、オペレーションによって作成される、またはオペレーションで使用される KMS キーの `KeyUsage` プロパティの値に基づいて、オペレーションへのアクセスを制御します。

この条件キーを使用し、リクエストの [KeyUsage](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-KeyUsage) パラメータの値に基づいて、[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) オペレーションへのアクセスを制御できます。`KeyUsage` の有効値は、`ENCRYPT_DECRYPT`、`SIGN_VERIFY`、`GENERATE_VERIFY_MAC`、`KEY_AGREEMENT` です。

例えば、`KeyUsage` が `ENCRYPT_DECRYPT` である場合にのみ KMS キーを作成し、`KeyUsage` が `SIGN_VERIFY` の場合はユーザーのアクセス許可を拒否できます。

次の IAM ポリシーステートメントの例では、`kms:KeyUsage` 条件キーを使用して、`KeyUsage` が `ENCRYPT_DECRYPT` の場合にのみ KMS キーを作成します。

```
{
  "Effect": "Allow",  
  "Action": "kms:CreateKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:KeyUsage": "ENCRYPT_DECRYPT"
    }
  }
}
```

`kms:KeyUsage` 条件キーを使用し、オペレーションの KMS キーの `KeyUsage` プロパティに基づいて、KMS キーを使用または管理するオペレーションへのアクセスを制御することもできます。このオペレーションは *KMS キーリソースオペレーション*である必要があります。つまり、特定の KMS キーに認可されるオペレーションです。KMS キーリソースオペレーションを識別するには、[アクションとリソースの表](kms-api-permissions-reference.md#kms-api-permissions-reference-table)で、オペレーションの `Resources` 列の `KMS key` の値を探します。

例えば次の IAM ポリシーでは、署名と検証に使用されるアカウント内の KMS キーのみを使用して、指定された KMS キーリソースのオペレーションをプリンシパルが実行できるようにします。

```
{
  "Effect": "Allow",
  "Action": [
    "kms:CreateGrant",
    "kms:DescribeKey",
    "kms:GetPublicKey",
    "kms:ScheduleKeyDeletion"
  ],
  "Resource": "arn:aws:kms:us-west-2:111122223333:key/*",
  "Condition": {
    "StringEquals": {
      "kms:KeyUsage": "SIGN_VERIFY"
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:BypassPolicyLockoutSafetyCheck](#conditions-kms-bypass-policy-lockout-safety-check)
+ [kms:CustomerMasterKeyUsage (非推奨)](#conditions-kms-key-usage-replaced)
+ [kms:KeyOrigin](#conditions-kms-key-origin)
+ [kms:KeySpec](#conditions-kms-key-spec)

## kms:MacAlgorithm
<a name="conditions-kms-mac-algorithm"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:MacAlgorithm`  |  String  | 単一値 | `GenerateMac``VerifyMac` |  キーポリシーと IAM ポリシー  | 

`kms:MacAlgorithm` 条件キーを使用することで、リクエスト内の `MacAlgorithm` パラメータの値に基づいて [GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html) および [VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html) オペレーションへのアクセスを制御することができます。

以下のキーポリシー例は、リクエスト内の MAC アルゴリズムが `HMAC_SHA_384` または `HMAC_SHA_512` である場合に限り、HMAC KMS キーを使用して HMAC タグを生成し、検証することを、`testers` ロールを引き受けることができるユーザーに許可します。このポリシーは、それぞれが独自の条件を持つ 2 つの個別のポリシーステートメントを使用します。単一の条件ステートメント内で複数の MAC アルゴリズムを指定する場合、条件はアルゴリズムのどちらか一方ではなく、両方を必須とします。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/testers"
      },
      "Action": [
        "kms:GenerateMac",
        "kms:VerifyMac"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:MacAlgorithm": "HMAC_SHA_384"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/testers"
      },
      "Action": [
        "kms:GenerateMac",
        "kms:VerifyMac"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:MacAlgorithm": "HMAC_SHA_512"
        }
      }
    }
  ]
}
```

------

**以下の資料も参照してください。**
+ [kms:EncryptionAlgorithm](#conditions-kms-encryption-algorithm)
+ [kms:SigningAlgorithm](#conditions-kms-signing-algorithm)

## kms:MessageType
<a name="conditions-kms-message-type"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:MessageType`  |  String  | 単一値 |  `Sign` `Verify`  | キーポリシーと IAM ポリシー | 

`kms:MessageType` 条件キーは、リクエストの `MessageType` パラメータの値に基づいて、[Sign](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html) および [Verify](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html) オペレーションへのアクセスを制御します。`MessageType` の有効値は、`RAW` と `DIGEST` です。

例えば、次のキーポリシーステートメントでは `kms:MessageType` 条件キーを使用して、非対称 KMS キーを使用してメッセージに署名することを許可し、メッセージダイジェストの使用は拒否しません。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:Sign",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:MessageType": "RAW"
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:SigningAlgorithm](#conditions-kms-signing-algorithm)

## kms:MultiRegion
<a name="conditions-kms-multiregion"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:MultiRegion`  |  ブール値  | 単一値 |  `CreateKey` KMS キーリソースのオペレーション  |  キーポリシーと IAM ポリシー  | 

この条件キーを使用すると、単一リージョンキー、または[マルチリージョンキー](multi-region-keys-overview.md)のみのオペレーションを許可できます。`kms:MultiRegion` 条件キーは、KMS キーの プロパティの値に基づいて、KMS キーに対する AWS KMS オペレーションと [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) `MultiRegion` オペレーションへのアクセスを制御します。有効な値は、`true` (マルチリージョン)、および `false` (単一リージョン) です。すべての KMS キーには `MultiRegion` プロパティが含まれます。

例えば、次の IAM ポリシーステートメントでは `kms:MultiRegion` 条件キーを使用して、プリンシパルが単一リージョンキーを作成できるようにします。

```
{
  "Effect": "Allow",
  "Action": "kms:CreateKey",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "kms:MultiRegion": false
    }
  }
}
```

## kms:MultiRegionKeyType
<a name="conditions-kms-multiregion-key-type"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:MultiRegionKeyType`  |  String  | 単一値 |  `CreateKey` KMS キーリソースのオペレーション  |  キーポリシーと IAM ポリシー  | 

この条件キーを使用して、[マルチリージョンプライマリキー](multi-region-keys-overview.md#mrk-primary-key)または[マルチリージョンレプリカキー](multi-region-keys-overview.md#mrk-replica-key)のみのオペレーションを許可できます。`kms:MultiRegionKeyType` 条件キーは、KMS キーの `MultiRegionKeyType`プロパティに基づいて、KMS キーに対する AWS KMS オペレーションと [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) オペレーションへのアクセスを制御します。有効な値は `PRIMARY` および `REPLICA` です。マルチリージョンキーのみに `MultiRegionKeyType` プロパティがあります

通常は、IAM ポリシーの `kms:MultiRegionKeyType` 条件キーを使用して、複数の KMS キーへのアクセスを制御します。ただし、特定のマルチリージョンキーがプライマリまたはレプリカに変更されることがあるため、キーポリシーでこの条件を使用して、特定のマルチリージョンキーがプライマリキーまたはレプリカキーである場合にのみ、オペレーションを許可します。

例えば、次の IAM ポリシーステートメントでは `kms:MultiRegionKeyType` 条件キーを使用して、指定した AWS アカウントのマルチリージョンレプリカキーのみでキー削除のスケジュールおよびキャンセルを実行することをプリンシパルに許可します。

```
{
  "Effect": "Allow",
  "Action": [
    "kms:ScheduleKeyDeletion",
    "kms:CancelKeyDeletion"
  ],
  "Resource": "arn:aws:kms:*:111122223333:key/*",
  "Condition": {
    "StringEquals": {
      "kms:MultiRegionKeyType": "REPLICA"
    }
  }
}
```

すべてのマルチリージョンキーへのアクセスを許可または拒否するには、両方の値または `kms:MultiRegionKeyType` の null 値を使用します。ただし、この目的には [kms:MultiRegion](#conditions-kms-multiregion) 条件キーの使用を推奨します。

## kms:PrimaryRegion
<a name="conditions-kms-primary-region"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:PrimaryRegion`  |  文字列 (リスト)  | 単一値 |  `UpdatePrimaryRegion`  |  キーポリシーと IAM ポリシー  | 

この条件キーを使用して、[UpdatePrimaryRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html) オペレーションの送信先リージョンを制限します。これらは、マルチリージョンのプライマリキーをホスト AWS リージョン できる です。

`kms:PrimaryRegion` 条件キーは、`PrimaryRegion` パラメータ値に基づいて [UpdatePrimaryRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html) オペレーションへのアクセスを制御します。`PrimaryRegion` パラメータは、プライマリに昇格するマルチリージョンレプリカキー AWS リージョン の を指定します。 [レプリカキー](multi-region-keys-overview.md#mrk-replica-key)条件の値は、 や などの 1 `us-east-1` つ以上の AWS リージョン 名前`ap-southeast-2`、または などのリージョン名パターンです。 `eu-*`

例えば、次のキーポリシーステートメントでは `kms:PrimaryRegion` 条件キーを使用して、プリンシパルがマルチリージョンキーのプライマリリージョンを、指定した 4 つのリージョンのうちの 1 つに更新できるようにします。

```
{
  "Effect": "Allow",
  "Action": "kms:UpdatePrimaryRegion",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/Developer"
  },
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:PrimaryRegion": [ 
         "us-east-1",
         "us-west-2",
         "eu-west-3",
         "ap-southeast-2"
      ]
    }
  }
}
```

## kms:ReEncryptOnSameKey
<a name="conditions-kms-reencrypt-on-same-key"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:ReEncryptOnSameKey`  |  ブール値  | 単一値 |  `ReEncrypt`  |  キーポリシーと IAM ポリシー  | 

この条件キーを使用し、元の 暗号化に使用されたものと同じ送信先 KMS キーがリクエストで指定されているかどうかに基づいて、[ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) オペレーションへのアクセスを制御できます。

例えば、次のポリシーステートメントでは `kms:ReEncryptOnSameKey` 条件キーを使用して、対象の KMS キーが元の暗号化に使用されたものと同じである場合にのみ再暗号化します。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:ReEncrypt*",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "kms:ReEncryptOnSameKey": true
    }
  }
}
```

## kms:RequestAlias
<a name="conditions-kms-request-alias"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:RequestAlias`  |  文字列 (リスト)  | 単一値 |  [暗号化オペレーション](kms-cryptography.md#cryptographic-operations) [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)  |  キーポリシーと IAM ポリシー  | 

この条件キーを使用して、リクエストが KMS キーを識別するために特定のエイリアスを使用する場合にのみ、オペレーションを許可します。`kms:RequestAlias` 条件キーでは、リクエスト内の KMS キーを識別する[エイリアス](kms-alias.md)に基づいて、暗号化オペレーション (`GetPublicKey` または `DescribeKey`) で使用される KMS キーへのアクセスを制御します。(このポリシー条件は、[GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html) オペレーションが KMS キーまたはエイリアスを使用しないため、オペレーションには影響しません)。

この条件は、 で[属性ベースのアクセスコントロール](abac.md) (ABAC) をサポートします。これにより AWS KMS、KMS キーのタグとエイリアスに基づいて KMS キーへのアクセスを制御できます。ポリシーや権限を変更せずに、タグとエイリアスを使用して KMS キーへのアクセスを許可または拒否できます。詳細については、「[の ABAC AWS KMS](abac.md)」を参照してください。

このポリシー条件でエイリアスを指定するには、[エイリアス名](concepts.md#key-id-alias-name) (`alias/project-alpha` など)、またはエイリアス名パターン (`alias/*test*` など) を使用します。この条件キーの値に[エイリアス ARN](concepts.md#key-id-alias-ARN) を指定することはできません。

この条件を満たすには、リクエストの `KeyId` パラメータの値が、一致するエイリアス名またはエイリアス ARN である必要があります。リクエストが別の[キー識別子](concepts.md#key-id)を使用する場合、同じ KMS キーを識別しても条件を満たしません。

例えば、次のキーポリシーステートメントでは、プリンシパルが KMS キーで [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) オペレーションを呼び出すことを許可します。ただし、これは、リクエスト内の `KeyId` パラメータ値が `alias/finance-key`、またはそのエイリアス名を持つエイリアス ARN (`arn:aws:kms:us-west-2:111122223333:alias/finance-key` など)である場合にのみ許可されます。

```
{
  "Sid": "Key policy using a request alias condition",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/developer"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:RequestAlias": "alias/finance-key"
    }
  }
}
```

この条件キーを使用して、エイリアスオペレーションへのアクセスを制御することはできません ([CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html) または [DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html) など)。エイリアスオペレーションへのアクセスの制御については、[エイリアスへのアクセスの制御](alias-access.md) を参照してください。

## kms:ResourceAliases
<a name="conditions-kms-resource-aliases"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:ResourceAliases`  |  文字列 (リスト)  | 複数値 | KMS キーリソースのオペレーション |  IAM ポリシーのみ  | 

この条件キーを使用し、KMS キーに関連付けられた[エイリアス](kms-alias.md)に基づいて、KMS キーへのアクセスを制御します。このオペレーションは *KMS キーリソースオペレーション*である必要があります。つまり、特定の KMS キーに認可されるオペレーションです。KMS キーリソースオペレーションを識別するには、[アクションとリソースの表](kms-api-permissions-reference.md#kms-api-permissions-reference-table)で、オペレーションの `Resources` 列の `KMS key` の値を探します。

この条件では、 AWS KMSの属性ベースのアクセスコントロール (ABAC) をサポートします。ABAC を使用すると、KMS キーに割り当てられたタグと KMS キーに関連付けられたエイリアスに基づいて、KMS キーへのアクセスを制御できます。ポリシーや権限を変更せずに、タグとエイリアスを使用して KMS キーへのアクセスを許可または拒否できます。詳細については、「[の ABAC AWS KMS](abac.md)」を参照してください。

エイリアスは AWS アカウント および リージョンで一意である必要がありますが、この条件により、同じリージョン内の複数の KMS キー (`StringLike`比較演算子を使用) または AWS リージョン 各アカウントの異なる複数の KMS キーへのアクセスを制御できます。

**注記**  
[kms:ResourceAliases](#conditions-kms-resource-aliases) 条件は、KMS キーが [aliases per KMS key](resource-limits.md#aliases-per-key) クォータに適合している場合にのみ有効です。KMS キーがこのクォータを超えると、KMS キーを `kms:ResourceAliases` 条件で使用するよう認可されたプリンシパルは、KMS キーへのアクセスを拒否されます。

このポリシー条件でエイリアスを指定するには、[エイリアス名](concepts.md#key-id-alias-name) (`alias/project-alpha` など)、またはエイリアス名パターン (`alias/*test*` など) を使用します。この条件キーの値に[エイリアス ARN](concepts.md#key-id-alias-ARN) を指定することはできません。条件を満たすには、オペレーションで使用する KMS キーが指定されたエイリアスを持っている必要があります。オペレーションのリクエストで KMS キーが識別されるかどうか、またはどのように識別されるかは関係ありません。

これは、KMS キーに関連付けられたエイリアスのセットとポリシー内のエイリアスのセットを比較する、複数値を持つ条件キーです。これらのセットを比較する方法を決定するには、`ForAnyValue` または `ForAllValues` 集合演算子をポリシー条件で使用します。集合演算子の詳細については、IAM ユーザーガイドの[複数のキーと値の使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions)を参照してください。
+ ForAnyValue: KMS キーに関連付けられた 1 つ以上のエイリアスがポリシー条件のエイリアスと一致する必要があります。その他のエイリアスは許可されます。KMS キーにエイリアスがない場合、条件は満たされません。
+ ForAllValues: KMS キーに関連付けられたすべてのエイリアスがポリシーのエイリアスと一致する必要があります。この集合演算子は、KMS キーと関連付けられるエイリアスを、ポリシー条件内のエイリアスに制限します。エイリアスを必要としませんが、不特定のエイリアスを禁止します。

たとえば、次の IAM ポリシーステートメントでは、プリンシパルがエイリアスに関連付けられている指定された の任意の KMS キーで [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) `finance-key` オペレーションを呼び出す AWS アカウント ことを許可します。(影響を受ける KMS キーのキーポリシーでは、プリンシパルのアカウントに、このオペレーションでキーを使用することも許可する必要があります)。KMS キーに関連付けられる可能性がある多数のエイリアスのいずれかが `alias/finance-key` である場合に、条件が満たされていることを示すには条件に `ForAnyValue` 集合演算子を使用します。

`kms:ResourceAliases` 条件はリクエストではなくリソースに基づいているため、リクエストが KMS キーを識別する[キー ID](concepts.md#key-id-key-id) または[キー ARN](concepts.md#key-id-key-ARN) を使用する場合でも、`GenerateDataKey` に対する呼び出しは、`finance-key` エイリアスに関連付けられているすべての KMS キーで成功します。

```
{
  "Sid": "AliasBasedIAMPolicy",
  "Effect": "Allow",
  "Action": "kms:GenerateDataKey",
  "Resource": [
    "arn:aws:kms:*:111122223333:key/*",
    "arn:aws:kms:*:444455556666:key/*"
  ],
  "Condition": {
    "ForAnyValue:StringEquals": {
      "kms:ResourceAliases": "alias/finance-key"
    }
  }
}
```

次の IAM ポリシーステートメントの例では、KMS キーのすべてのエイリアスに「`Test`」が含まれる場合にのみ、プリンシパルが KMS キーを有効または無効にすることを許可します。このポリシーステートメントは 2 つの条件を使用します。`ForAllValues` 集合演算子を持つ条件では、KMS キーに関連付けられたすべてのエイリアスに「Test」が含まれている必要があります。`ForAnyValue` 集合演算子を持つ条件では、KMS キーに 1 つ以上の「Test」を持つエイリアスが含まれている必要があります。`ForAnyValue` 条件なしの場合、このポリシーステートメントはプリンシパルに、エイリアスがない KMS キーの使用を許可する可能性があります。

```
{
  "Sid": "AliasBasedIAMPolicy",
  "Effect": "Allow",
  "Action": [
    "kms:EnableKey",
    "kms:DisableKey"
  ],
  "Resource": "arn:aws:kms:*:111122223333:key/*",
  "Condition": {
    "ForAllValues:StringLike": {
      "kms:ResourceAliases": [
        "alias/*Test*"
      ]
    },
    "ForAnyValue:StringLike": {
      "kms:ResourceAliases": [
        "alias/*Test*"
      ]
    }
  }
}
```

## kms:ReplicaRegion
<a name="conditions-kms-replica-region"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:ReplicaRegion`  |  文字列 (リスト)  | 単一値 |  `ReplicateKey`  |  キーポリシーと IAM ポリシー  | 

この条件キーを使用して、プリンシパル AWS リージョン が[マルチリージョンキー](multi-region-keys-overview.md)をレプリケートできる を制限できます。`kms:ReplicaRegion` 条件キーは、リクエストの [ReplicaRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-RetiringPrincipal) パラメータ値に基づいて、[ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) オペレーションへのアクセスを制御します このパラメータは、 AWS リージョン の新しい[レプリカキー](multi-region-keys-overview.md#mrk-replica-key)を指定します。

条件の値は、 や などの 1 `us-east-1` つ以上の AWS リージョン 名前`ap-southeast-2`、または などの名前パターンです`eu-*`。が AWS KMS サポート AWS リージョン する の名前のリストについては、 の[AWS Key Management Service 「エンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/kms.html)」を参照してください AWS 全般のリファレンス。

例えば、次のキーポリシーステートメントでは `kms:ReplicaRegion` 条件キーを使用して、`ReplicaRegion` パラメータ値が指定されたリージョンの 1 つである場合にのみ、プリンシパルが [ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html) オペレーションを呼び出すことを許可します。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/Administrator"
  },
  "Action": "kms:ReplicateKey"
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ReplicaRegion": [ 
         "us-east-1",
         "eu-west-3",
         "ap-southeast-2"
      ]
    }
  }
}
```

この条件キーは、[ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html) オペレーションへのアクセスのみを制御します。[UpdatePrimaryRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html) オペレーションへのアクセスを制御するには、[kms:PrimaryRegion](#conditions-kms-primary-region) 条件キーを使用します。

## kms:RetiringPrincipal
<a name="conditions-kms-retiring-principal"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:RetiringPrincipal`  |  文字列 (リスト)  | 単一値 |  `CreateGrant`  |  キーポリシーと IAM ポリシー  | 

この条件キーを使用し、リクエストの [RetiringPrincipal](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) のパラメータ値に基づいて、[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-RetiringPrincipal) オペレーションへのアクセスを制御できます。例えば、`CreateGrant` リクエストの `RetiringPrincipal` が条件ステートメントの `RetiringPrincipal` と一致した場合にのみ、KMS キーの使用権限を作成します。

削除プリンシパルを指定するには、 AWS プリンシパルの Amazon リソースネーム (ARN) を使用します。有効なプリンシパルには AWS アカウント、IAM ユーザー、IAM ロール、フェデレーティッドユーザー、引き受けたロールユーザーが含まれます。プリンシパル向け ARN 構文については、「*IAM ユーザーガイド*」の「[IAM の ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)」を参照してください。

次のポリシーステートメント例は、KMS キーに対するグラント (権限付与) の作成をユーザーに許可します。`kms:RetiringPrincipal` 条件キーが、グラント内の削除プリンシパルが `LimitedAdminRole` である `CreateGrant` リクエストへのアクセス許可を制限します。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:CreateGrant",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:RetiringPrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole"
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [kms:GrantIsForAWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [kms:GrantOperations](#conditions-kms-grant-operations)
+ [kms:GranteePrincipal](#conditions-kms-grantee-principal)

## kms:RotationPeriodInDays
<a name="conditions-kms-rotation-period-in-days"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:RotationPeriodInDays`  |  数値  | 単一値 |  `EnableKeyRotation`  |  キーポリシーと IAM ポリシー  | 

この条件キーを使用して、プリンシパルが [EnableKeyRotation](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKeyRotation.html) リクエストの `RotationPeriodInDays` パラメータに指定できる値を制限できます。

は、各自動キーローテーション日の間の日数`RotationPeriodInDays`を指定します。 AWS KMS では、90 日から 2560 日までのローテーション期間を指定できますが、`kms:RotationPeriodInDays`条件キーを使用して、有効範囲内の最小ローテーション期間を強制するなど、ローテーション期間をさらに制限できます。

例えば、次のキーポリシーステートメントでは、`kms:RotationPeriodInDays` 条件キーの使用により、ローテーション期間が 180 日以内である場合にプリンシパルがキーローテーションを有効化できないようにしています。

```
{
  "Effect": "Deny",
  "Action": "kms:EnableKeyRotation",
  "Principal": "*",
  "Resource": "*",
  "Condition" : {
      "NumericLessThanEquals" : {
        "kms:RotationPeriodInDays" : "180"
      }
  }
}
```

## kms:ScheduleKeyDeletionPendingWindowInDays
<a name="conditions-kms-schedule-key-deletion-pending-window-in-days"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:ScheduleKeyDeletionPendingWindowInDays`  |  数値  | 単一値 |  `ScheduleKeyDeletion`  |  キーポリシーと IAM ポリシー  | 

この条件キーを使用して、プリンシパルが [ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html) リクエストの `PendingWindowInDays` パラメータに指定できる値を制限できます。

は、キーを削除する前に AWS KMS が待機する日数`PendingWindowInDays`を指定します。 AWS KMS では、7～30 日間の待機期間を指定できますが、`kms:ScheduleKeyDeletionPendingWindowInDays`条件キーを使用して、有効な範囲内で最小待機期間を適用するなど、待機期間をさらに制限できます。

例えば、次のキーポリシーステートメントでは、`kms:ScheduleKeyDeletionPendingWindowInDays` 条件キーを使用して、待機期間が 21 日以内の場合にプリンシパルがキーの削除をスケジュールできないようにしています。

```
{
  "Effect": "Deny",
  "Action": "kms:ScheduleKeyDeletion",
  "Principal": "*",
  "Resource": "*",
  "Condition" : {
      "NumericLessThanEquals" : {
        "kms:ScheduleKeyDeletionPendingWindowInDays" : "21"
      }
  }
}
```

## kms:SigningAlgorithm
<a name="conditions-kms-signing-algorithm"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:SigningAlgorithm`  |  String  | 単一値 |  `Sign`  `Verify`  |  キーポリシーと IAM ポリシー  | 

`kms:SigningAlgorithm` 条件キーを使用し、リクエストの [SigningAlgorithm](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-SigningAlgorithm) パラメータの値に基づいて、[Sign](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html) および [Verify](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html) オペレーションへのアクセスを制御できます。この条件キーは、非対称 KMS キーペアの外部でパブリックキーを使用して署名を検証するなど AWS KMS、 の外部で実行されるオペレーションには影響しません AWS KMS。

次のキーポリシーの例では、リクエストに使用される署名アルゴリズムが RSASSA\$1PSS アルゴリズム (`RSASSA_PSS_SHA512` など) である場合にのみ、`testers` ロールを引き受けることができるユーザーが KMS キーを使用してメッセージに署名できるようにします。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/testers"
  },
  "Action": "kms:Sign",
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:SigningAlgorithm": "RSASSA_PSS*"
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:EncryptionAlgorithm](#conditions-kms-encryption-algorithm)
+ [kms:MacAlgorithm](#conditions-kms-mac-algorithm)
+ [kms:MessageType](#conditions-kms-message-type)

## kms:ValidTo
<a name="conditions-kms-valid-to"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:ValidTo`  |  タイムスタンプ  | 単一値 |  `ImportKeyMaterial`  |  キーポリシーと IAM ポリシー  | 

`kms:ValidTo` 条件キーは、リクエストの [ValidTo](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html) パラメータの値に基づき、[ImportKeyMaterial](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ValidTo) オペレーションへのアクセスを制御します。これにより、インポートされたキーマテリアルが失効するタイミングが決まります。この値は、[Unix 時間](https://en.wikipedia.org/wiki/Unix_time)で表現されます。

デフォルトでは、`ValidTo` パラメータは `ImportKeyMaterial` リクエストで必要です。ただし、 [ExpirationModel](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ExpirationModel) パラメーターの値がの場合 `KEY_MATERIAL_DOES_NOT_EXPIRE`, 、 `ValidTo` パラメーターは無効です。また、[kms:ExpirationModel](#conditions-kms-expiration-model) 条件キーを使用して、`ExpirationModel` パラメータまたは特定のパラメータの値を要求することもできます。

次のポリシーステートメントの例では、キーマテリアルの KMS キーへのインポートをユーザーに許可します。`kms:ValidTo` 条件キーは、`ImportKeyMaterial` リクエストへのアクセス権限を制限します。ここで、`ValidTo` の値は `1546257599.0` (2018 年 12 月 31 日 午後 11:59:59) 以下となります。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:ImportKeyMaterial",
  "Resource": "*",
  "Condition": {
    "NumericLessThanEquals": {
      "kms:ValidTo": "1546257599.0"
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:ExpirationModel](#conditions-kms-expiration-model) 
+ [kms:WrappingAlgorithm](#conditions-kms-wrapping-algorithm)
+ [kms:WrappingKeySpec](#conditions-kms-wrapping-key-spec)

## kms:ViaService
<a name="conditions-kms-via-service"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:ViaService`  |  String  | 単一値 |  KMS キーリソースのオペレーション  |  キーポリシーと IAM ポリシー  | 

`kms:ViaService` 条件キーは、KMS キーの使用を指定された からのリクエストに制限します AWS のサービス。この条件キーは、[転送アクセスセッション](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)にのみ適用されます。各 `kms:ViaService` 条件キーに 1 つ以上のサービスを指定できます。このオペレーションは *KMS キーリソースオペレーション*である必要があります。つまり、特定の KMS キーに認可されるオペレーションです。KMS キーリソースオペレーションを識別するには、[アクションとリソースの表](kms-api-permissions-reference.md#kms-api-permissions-reference-table)で、オペレーションの `Resources` 列の `KMS key` の値を探します。

例えば、次のキーポリシーステートメントでは `kms:ViaService` 条件キーを使用して、リクエストが `ExampleRole` に代わって米国西部 (オレゴン) リージョンの Amazon EC2 または Amazon RDS から送信された場合にのみ、[カスタマーマネージドキー](concepts.md#customer-mgn-key)を指定されたアクションで使用できるようにします 。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:CreateGrant",
    "kms:ListGrants",
    "kms:DescribeKey"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ViaService": [
        "ec2.us-west-2.amazonaws.com",
        "rds.us-west-2.amazonaws.com"
      ]
    }
  }
}
```

`kms:ViaService` 条件キーを使用して、特定のサービスからリクエストが送信された場合に KMS キーの使用許可を拒否することもできます。例えば、次のキーポリシーからのポリシーステートメントでは `kms:ViaService` 条件キーを使用して、`ExampleRole` の代わりに AWS Lambda からリクエストが送信された場合に、カスタマーマネージドキーが `Encrypt` オペレーションに使用されるのを防ぎます。

```
{
  "Effect": "Deny",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": [
    "kms:Encrypt"    
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ViaService": [
          "lambda.us-west-2.amazonaws.com"
      ]
    }
  }
}
```

**重要**  
`kms:ViaService` 条件キーを使用する場合は、サービスが AWS アカウントのプリンシパルの代わりにリクエストを行います。これらのプリンシパルは、次のアクセス許可が必要です。  
KMS キーを使用するアクセス許可。プリンシパルの代わりにサービスがカスタマーマネージドキーを使用できるようにするために、プリンシパルは統合されたサービスにこれらのアクセス許可を付与する必要があります。詳細については、「[AWS サービスでの AWS KMS 暗号化の使用](service-integration.md)」を参照してください。
統合されたサービスを使用するアクセス権限。と統合する AWS サービスへのアクセス権をユーザーに付与する方法の詳細については AWS KMS、統合サービスのドキュメントを参照してください。

すべての [AWS マネージドキー](concepts.md#aws-managed-key) は、キーポリシードキュメントで `kms:ViaService` 条件キーを使用します。この条件では、KMS キーを作成したサービスからリクエストされた場合にのみ、KMS キーの使用を許可します。のキーポリシーを表示するには AWS マネージドキー、[GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html) オペレーションを使用します。

`kms:ViaService` 条件キーは IAM とキーポリシーのステートメントで有効です。指定するサービスは、[AWS KMSと統合](https://aws.amazon.com/kms/features/#AWS_Service_Integration)されていて、`kms:ViaService` 条件キーをサポートしている必要があります。

### `kms:ViaService` 条件キーをサポートするサービス
<a name="viaService_table"></a>

次の表に、 と統合 AWS KMS され、カスタマーマネージドキーでの `kms:ViaService`条件キーの使用をサポートする AWS サービスを示します。この表のサービスは、一部のリージョンで利用できない場合があります。すべての AWS パーティションで AWS KMS ViaService `.amazonaws.com` 名のサフィックスを使用します。

**注記**  
この表のすべてのデータを表示するには、水平または垂直にスクロールする必要があります。


| サービス名 | AWS KMS ViaService 名 | 
| --- | --- | 
| Amazon AI Operations | aiops.AWS\$1region.amazonaws.com | 
| AWS App Runner | apprunner.AWS\$1region.amazonaws.com | 
| AWS AppFabric | appfabric.AWS\$1region.amazonaws.com | 
| Amazon AppFlow | appflow.AWS\$1region.amazonaws.com | 
| AWS Application Migration Service | mgn.AWS\$1region.amazonaws.com | 
| Amazon Athena | athena.AWS\$1region.amazonaws.com | 
| AWS Audit Manager | auditmanager.AWS\$1region.amazonaws.com | 
| Amazon Aurora | rds.AWS\$1region.amazonaws.com | 
| AWS Backup | backup.AWS\$1region.amazonaws.com | 
| AWS Backup ゲートウェイ | backup-gateway.AWS\$1region.amazonaws.com | 
| Amazon Bedrock モデルコピー | bedrock.AWS\$1region.amazonaws.com | 
| Amazon Chime SDK | chimevoiceconnector.AWS\$1region.amazonaws.com | 
| AWS Clean Rooms ML | cleanrooms-ml.AWS\$1region.amazonaws.com | 
| AWS CodeArtifact | codeartifact.AWS\$1region.amazonaws.com | 
| Amazon CodeGuru Reviewer | codeguru-reviewer.AWS\$1region.amazonaws.com | 
| Amazon Comprehend | comprehend.AWS\$1region.amazonaws.com | 
| Amazon Connect | connect.AWS\$1region.amazonaws.com | 
| Amazon Connect Customer Profiles | profile.AWS\$1region.amazonaws.com | 
| Amazon Q in Connect | wisdom.AWS\$1region.amazonaws.com | 
| AWS Database Migration Service (AWS DMS) | dms.AWS\$1region.amazonaws.com | 
| AWS DeepRacer | deepracer.AWS\$1region.amazonaws.com | 
| AWS Directory Service | directoryservice.AWS\$1region.amazonaws.com | 
| Amazon DocumentDB | docdb-elastic.AWS\$1region.amazonaws.com | 
| Amazon DynamoDB | dynamodb.AWS\$1region.amazonaws.com | 
| Amazon EC2 Systems Manager (SSM) | ssm.AWS\$1region.amazonaws.com | 
| Amazon Elastic Block Store (Amazon EBS) | ec2.AWS\$1region.amazonaws.com (EBS のみ) | 
| Amazon Elastic Container Registry (Amazon ECR) | ecr.AWS\$1region.amazonaws.com | 
| Amazon Elastic File System (Amazon EFS) | elasticfilesystem.AWS\$1region.amazonaws.com | 
| Amazon ElastiCache |  条件キーバリューに両方の ViaService 名を含めます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/conditions-kms.html)  | 
| AWS Elemental MediaTailor | mediatailor.AWS\$1region.amazonaws.com | 
| AWS エンティティの解決 | entityresolution.AWS\$1region.amazonaws.com | 
| Amazon EventBridge | events.AWS\$1region.amazonaws.com | 
| Amazon FinSpace | finspace.AWS\$1region.amazonaws.com | 
| Amazon Forecast | forecast.AWS\$1region.amazonaws.com | 
| Amazon FSx | fsx.AWS\$1region.amazonaws.com | 
| AWS Glue | glue.AWS\$1region.amazonaws.com | 
| AWS Ground Station | groundstation.AWS\$1region.amazonaws.com | 
| Amazon GuardDuty | malware-protection.AWS\$1region.amazonaws.com | 
| AWS HealthLake | healthlake.AWS\$1region.amazonaws.com | 
| AWS IoT SiteWise | iotsitewise.AWS\$1region.amazonaws.com | 
| Amazon Kendra | kendra.AWS\$1region.amazonaws.com | 
| Amazon Keyspaces (Apache Cassandra 向け) | cassandra.AWS\$1region.amazonaws.com | 
| Amazon Kinesis | kinesis.AWS\$1region.amazonaws.com | 
| Amazon Data Firehose | firehose.AWS\$1region.amazonaws.com | 
| Amazon Kinesis Video Streams | kinesisvideo.AWS\$1region.amazonaws.com | 
| AWS Lambda | lambda.AWS\$1region.amazonaws.com | 
| Amazon Lex | lex.AWS\$1region.amazonaws.com | 
| AWS License Manager | license-manager.AWS\$1region.amazonaws.com | 
| Amazon Location Service | geo.AWS\$1region.amazonaws.com | 
| Amazon Lookout for Equipment | lookoutequipment.AWS\$1region.amazonaws.com | 
| Amazon Lookout for Metrics | lookoutmetrics.AWS\$1region.amazonaws.com | 
| Amazon Lookout for Vision | lookoutvision.AWS\$1region.amazonaws.com | 
| Amazon Macie | macie.AWS\$1region.amazonaws.com | 
| AWS Mainframe Modernization | m2.AWS\$1region.amazonaws.com | 
| AWS Mainframe Modernization アプリケーションテスト | apptest.AWS\$1region.amazonaws.com | 
| Amazon Managed Blockchain | managedblockchain.AWS\$1region.amazonaws.com | 
| Amazon Managed Streaming for Apache Kafka (Amazon MSK) | kafka.AWS\$1region.amazonaws.com | 
| Amazon Managed Workflows for Apache Airflow (MWAA) | airflow.AWS\$1region.amazonaws.com | 
| Amazon MemoryDB | memorydb.AWS\$1region.amazonaws.com | 
| Amazon Monitron | monitron.AWS\$1region.amazonaws.com | 
| Amazon MQ | mq.AWS\$1region.amazonaws.com | 
| Amazon Neptune | rds.AWS\$1region.amazonaws.com | 
| Amazon Nimble Studio | nimble.AWS\$1region.amazonaws.com | 
| AWS HealthOmics | omics.AWS\$1region.amazonaws.com | 
| Amazon OpenSearch Service | es.AWS\$1region.amazonaws.com, aoss.AWS\$1region.amazonaws.com | 
| Amazon OpenSearch カスタムパッケージ | custom-packages.AWS\$1region.amazonaws.com | 
| AWS Proton | proton.AWS\$1region.amazonaws.com | 
| Amazon Quantum Ledger Database (Amazon QLDB) | qldb.AWS\$1region.amazonaws.com | 
| Amazon RDS Performance Insights | rds.AWS\$1region.amazonaws.com | 
| Amazon Redshift | redshift.AWS\$1region.amazonaws.com | 
| Amazon Redshift クエリエディタ V2 | sqlworkbench.AWS\$1region.amazonaws.com | 
| Amazon Redshift Serverless | redshift-serverless.AWS\$1region.amazonaws.com | 
| Amazon Rekognition | rekognition.AWS\$1region.amazonaws.com | 
| Amazon Relational Database Service (Amazon RDS) | rds.AWS\$1region.amazonaws.com | 
| Amazon 複製データストア | ards.AWS\$1region.amazonaws.com | 
| Amazon SageMaker AI | sagemaker.AWS\$1region.amazonaws.com | 
| AWS Secrets Manager | secretsmanager.AWS\$1region.amazonaws.com | 
| Amazon Security Lake | securitylake.AWS\$1region.amazonaws.com | 
| Amazon Simple Email Service (Amazon SES) | ses.AWS\$1region.amazonaws.com | 
| Amazon Simple Notiﬁcation Service (Amazon SNS) | sns.AWS\$1region.amazonaws.com | 
| Amazon Simple Queue Service (Amazon SQS) | sqs.AWS\$1region.amazonaws.com | 
| Amazon Simple Storage Service (Amazon S3) | s3.AWS\$1region.amazonaws.com | 
| Amazon S3 Tables | s3tables.AWS\$1region.amazonaws.com | 
| AWS Snowball Edge | importexport.AWS\$1region.amazonaws.com | 
| AWS Step Functions | states.AWS\$1region.amazonaws.com | 
| AWS Storage Gateway | storagegateway.AWS\$1region.amazonaws.com | 
| AWS Systems Manager Incident Manager | ssm-incidents.AWS\$1region.amazonaws.com | 
| AWS Systems Manager Incident Manager 連絡先 | ssm-contacts.AWS\$1region.amazonaws.com | 
| Amazon Timestream | timestream.AWS\$1region.amazonaws.com | 
| Amazon Translate | translate.AWS\$1region.amazonaws.com | 
| AWS Verified Access | verified-access.AWS\$1region.amazonaws.com | 
| Amazon WorkMail | workmail.AWS\$1region.amazonaws.com | 
| Amazon WorkSpaces | workspaces.AWS\$1region.amazonaws.com | 
| Amazon WorkSpaces Thin Client | thinclient.AWS\$1region.amazonaws.com | 
| Amazon WorkSpaces Web | workspaces-web.AWS\$1region.amazonaws.com | 
| AWS X-Ray | xray.AWS\$1region.amazonaws.com | 

## kms:WrappingAlgorithm
<a name="conditions-kms-wrapping-algorithm"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:WrappingAlgorithm`  |  String  | 単一値 |  `GetParametersForImport`  |  キーポリシーと IAM ポリシー  | 

この条件キーは、リクエストの [WrappingAlgorithm](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html#KMS-GetParametersForImport-request-WrappingAlgorithm) パラメータ値に基づいて、[GetParametersForImport](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html) オペレーションへのアクセスを制御します。この条件を使用して、インポートプロセス時にプリンシパルが特定のアルゴリズムを使用してキーマテリアルを暗号化するよう要求できます。異なるラップアルゴリズムを指定すると必要なパブリックキーとインポートトークンのリクエストが失敗します。

次のキーポリシーステートメントの例では、`kms:WrappingAlgorithm` 条件キーを使用して、`GetParametersForImport` オペレーションを呼び出すアクセス許可をサンプルユーザーに付与しますが、`RSAES_OAEP_SHA_1` ラップアルゴリズムの使用を阻止します。`WrappingAlgorithm` リクエストの `GetParametersForImport` が `RSAES_OAEP_SHA_1` の場合、オペレーションは失敗します。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:GetParametersForImport",
  "Resource": "*",
  "Condition": {
    "StringNotEquals": {
      "kms:WrappingAlgorithm": "RSAES_OAEP_SHA_1"
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:ExpirationModel](#conditions-kms-expiration-model)
+ [kms:ValidTo](#conditions-kms-valid-to)
+ [kms:WrappingKeySpec](#conditions-kms-wrapping-key-spec)

## kms:WrappingKeySpec
<a name="conditions-kms-wrapping-key-spec"></a>


| AWS KMS 条件キー | 条件の種類 | 値の型 | API オペレーション | ポリシータイプ | 
| --- | --- | --- | --- | --- | 
|  `kms:WrappingKeySpec`  |  String  | 単一値 |  `GetParametersForImport`  |  キーポリシーと IAM ポリシー  | 

この条件キーが、リクエストの [WrappingKeySpec](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html#KMS-GetParametersForImport-request-WrappingKeySpec) パラメータ値に基づいて、[GetParametersForImport](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html) オペレーションへのアクセスを制御します。この条件を使用して、インポートプロセス時にプリンシパルが特定のタイプのパブリックキーを使用するよう要求できます。リクエストで別のキータイプを指定すると、エラーになります。

`WrappingKeySpec` パラメータ値の有効な値は `RSA_2048` のみであるため、ユーザーによるこの値の使用を無効にすることで、`GetParametersForImport` オペレーションを効率的に無効にすることができます。

次のポリシーステートメントの例では、`kms:WrappingAlgorithm` 条件キーを使用してリクエストの `WrappingKeySpec` が `RSA_4096` になるようにします。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:GetParametersForImport",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:WrappingKeySpec": "RSA_4096"
    }
  }
}
```

**以下の資料も参照してください。**
+ [kms:ExpirationModel](#conditions-kms-expiration-model)
+ [kms:ValidTo](#conditions-kms-valid-to)
+ [kms:WrappingAlgorithm](#conditions-kms-wrapping-algorithm)