

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS KMS 條件索引鍵
<a name="conditions-kms"></a>

AWS KMS 提供一組條件金鑰，您可以在金鑰政策和 IAM 政策中使用。這些條件索引鍵是特定的 AWS KMS。例如，在控制對稱加密 KMS 金鑰的存取權時，您可以使用 `kms:EncryptionContext:context-key` 條件金鑰來要求特定的[加密內容](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` 操作。此條件允許 `KeySpec` 參數值為 `SYMMETRIC_DEFAULT` 的請求，以及沒有 `KeySpec` 參數的請求。

**在 API 操作中使用 KMS 金鑰需滿足的條件**

有些 AWS KMS 條件金鑰可以根據操作中使用的 KMS 金鑰屬性來控制對操作的存取。例如，您可使用 [kms:KeyOrigin](#conditions-kms-key-origin) 條件，在僅當 KMS 金鑰的 `Origin` 為 `AWS_KMS` 時，才允許主體呼叫 KMS 金鑰的 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)。若要確定可否以這種方式使用條件金鑰，請參閱條件金鑰的描述。

操作必須是 *KMS 金鑰資源操作*，也就是授權特定 KMS 金鑰的操作。若要識別 KMS 金鑰資源操作，請在[動作與資源表](kms-api-permissions-reference.md#kms-api-permissions-reference-table)中尋找操作之 `Resources` 資料欄的 `KMS key` 值。如果對特定 KMS 金鑰資源使用此類型的條件索引鍵搭配未授權的操作，例如 [ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)，因為條件永遠無法滿足，所以許可無效。授權 `ListKeys` 操作中沒有相關的 KMS 金鑰資源，也沒有 `KeySpec` 屬性。

下列主題說明每個 AWS KMS 條件索引鍵，並包含示範政策語法的政策陳述式範例。

**使用帶有條件索引鍵的集合運算子**

當政策條件比較兩組值時，例如請求中的一組標籤和政策中的一組標籤時，您需要知道 AWS 如何比較組。IAM 為此定義了兩個集合的運算子，`ForAnyValue` 和 `ForAllValues`。使用僅具有所需*多重值條件索引鍵*的集合運算子。請勿將集合運算子與*單一值條件索引鍵*搭配使用。如往常一樣，在生產環境中使用之前，完整測試您的政策陳述式。

條件索引鍵是單一值或多重值。若要判斷 AWS KMS 條件索引鍵是單值還是多值，請參閱條件索引鍵描述中的**值類型**欄。
+ *單一值*條件索引鍵在授權內容 (請求或資源) 中最多有一個值。例如，因為每個 API 呼叫只能源自於一個 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 使用者指南*》中的[安全性警告 – 具有單一值索引鍵的 ForAllValues](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:TrailingDaysWithoutKeyUsage](#conditions-kms-trailing-days-without-key-usage)
+ [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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:BypassPolicyLockoutSafetyCheck` | Boolean | 單一值 | `CreateKey`<br />`PutKeyPolicy` | 僅限 IAM 政策<br />金鑰政策和 IAM 政策 | 

根據請求中的 `BypassPolicyLockoutSafetyCheck` 參數值，`kms:BypassPolicyLockoutSafetyCheck` 條件索引鍵會控制對 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 和 [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) 操作的存取。

以下範例 IAM 政策陳述式在 `CreateKey` 請求中的 `BypassPolicyLockoutSafetyCheck` 參數值是 `true.` 時，拒絕使用者建立 KMS 金鑰的許可，來防止使用者繞過政策鎖定安全檢查。

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

您也可以在 IAM 政策或金鑰政策中使用 `kms:BypassPolicyLockoutSafetyCheck` 條件索引鍵，以控制對 `PutKeyPolicy` 操作的存取。來自金鑰政策的以下範例政策陳述式防止使用者在變更 KMS 金鑰的政策時繞過政策鎖定安全檢查。

除了使用明確 `Deny`，此政策陳述式使用 `Allow` 搭配 [Null 條件運算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null)，只在請求不包含 `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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:CallerAccount` | String | 單一值 | KMS 金鑰資源操作<br />自訂金鑰存放操作 | 金鑰政策和 IAM 政策 | 

您可以使用此條件索引鍵，來允許或拒絕 AWS 帳戶中所有身分 (使用者和角色) 的存取。在金鑰政策中，您可以使用 `Principal` 元素來指定政策陳述式套用的身分。`Principal` 元素的語法不提供用來指定 AWS 帳戶中所有身分的方式。但是，您可以將此條件索引鍵與指定所有 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` 條件索引鍵。此政策陳述式位於 AWS 受管金鑰 適用於 Amazon EBS 的 金鑰政策中。它結合了指定所有 AWS 身分的 `Principal`元素與`kms:CallerAccount`條件索引鍵，以有效地允許存取 AWS 帳戶 111122223333 中的所有身分。它包含額外的 AWS KMS 條件金鑰 (`kms:ViaService`)，只允許透過 Amazon EBS 發出的請求，以進一步限制許可。如需詳細資訊，請參閱[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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:DataKeyPairSpec` | String | 單一值 | `GenerateDataKeyPair`<br />`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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:EncryptionAlgorithm` | String | 單一值 | `Decrypt`<br />`Encrypt`<br />`GenerateDataKey`<br />`GenerateDataKeyPair`<br />`GenerateDataKeyPairWithoutPlaintext`<br />`GenerateDataKeyWithoutPlaintext`<br />`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) 參數值控制存取。對於產生資料金鑰和資料金鑰對的操作，根據加密資料金鑰所用之加密演算法控制存取。

此條件金鑰不會影響在 外部執行的操作 AWS KMS，例如在 外部的非對稱 KMS 金鑰對中使用公有金鑰加密 AWS KMS。

**請求中的 EncryptionAlgorithm 參數**

若要允許使用者只使用特定加密演算法搭配 KMS 金鑰，請使用具有 `Deny` 效果的政策陳述式和 `StringNotEquals` 條件運算子。例如，下列範例金鑰政策陳述式禁止擔任 `ExampleRole` 角色的主體在指定的密碼編譯操作中使用此 KMS 金鑰，除非請求中的加密演算法是 `RSAES_OAEP_SHA_256` (即與 RSA 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\_DEFAULT，否則拒絕存取範例帳戶中密碼編譯操作的任何 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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:EncryptionContext:context-key` | String | 單一值 | `CreateGrant`<br />`Encrypt`<br />`Decrypt`<br />`GenerateDataKey`<br />`GenerateDataKeyPair`<br />`GenerateDataKeyPairWithoutPlaintext`<br />`GenerateDataKeyWithoutPlaintext`<br />`ReEncrypt`<br />`RetireGrant` | 金鑰政策和 IAM 政策 | 

您可以使用 `kms:EncryptionContext:context-key` 條件金鑰，依據[密碼編譯操作](kms-cryptography.md#cryptographic-operations)請求中的[加密內容](encrypt_context.md)，控制對[對稱加密 KMS 金鑰](symm-asymm-choose-key-spec.md#symmetric-cmks)的存取。使用此條件索引鍵可同時評估加密內容對中的金鑰和值。若只評估加密內容索引鍵，或需要加密內容，而不考慮金鑰或值，請使用 [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}} 預留位置。將 {{context-value}} 預留位置取代為加密內容值。

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

例如，以下條件索引鍵指定加密內容，其中金鑰是 `AppName`，值是 `ExampleApp` (`AppName = ExampleApp`)。

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

這是[單一值條件索引鍵](#set-operators)。條件索引鍵中的金鑰會指定特定的加密內容索引鍵 (*context-key*)。雖然您可以在每個 API 請求中包含多個加密內容對，但是與指定 *context-key* 對的加密內容只能有一個值。例如，`kms:EncryptionContext:Department` 條件索引鍵僅適用於與 `Department` 金鑰對的加密內容，以及任何與 `Department` 金鑰對的指定加密內容只能有一個值。

請勿將集合運算子與 `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.`

若要要求特定的加密內容對，請將 `kms:EncryptionContext:context-key` 條件索引鍵與 `StringEquals` 運算子搭配使用。

以下範例金鑰政策陳述式，僅當請求中的加密內容包含 `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` 加密內容對。它還會將 `kms:EncryptionContextKeys` 條件索引鍵與 `ForAllValues` 集合運算子搭配使用，以僅允許 `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>

您可以要求或禁止多個加密內容對。您也可以要求其中一個加密內容對。如需用來解譯這些條件之邏輯的詳細資訊，請參閱《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` 為例外狀況。若要解決錯誤，請刪除集合運算子。

若要要求多個加密內容對，請以相同的條件列出對。以下範例金鑰政策陳述式需要兩個加密內容對，`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"
    }
  }
}
```

若需要一個加密內容對 OR 另一個對，請將每個條件索引鍵放在個別的政策陳述式中。以下範例金鑰政策需要 `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` 對的加密內容。它會將 `kms:EncryptionContextKeys` 條件索引鍵與 `ForAllValues` 集合運算子搭配使用，以僅允許 `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 使用者指南*》中的[具有多個索引鍵或值之條件的評估邏輯](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 金鑰來加密和解密其資料。不過，您只想要允許他們解密由他們加密的資料。首先，要求每個請求都 AWS KMS 包含加密內容，其中金鑰為 `user`，而值為發起人的 AWS 使用者名稱，例如下列使用者名稱。

```
"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) 政策變數。

評估請求時，發起人的使用者名稱會取代條件中的變數。因此，條件需要 `"user": "bob"` 的「bob」和 `"user": "alice"` 的「alice」加密內容。

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

您只能在 `kms:EncryptionContext:context-key` 條件索引鍵的值中使用 IAM 政策變數。您不能在金鑰中使用變數。

您也可以在變數中使用[供應商特定的內容金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_user-id.html)。這些內容金鑰可唯一識別 AWS 使用 Web 聯合身分登入的使用者。

如同所有變數，這些變數只能用於 `kms:EncryptionContext:context-key` 政策條件，不能用於實際的加密內容。而且只能用於條件的值，不能用於金鑰。

例如，下列金鑰政策陳述式與前一個陳述式類似。不過，條件需要加密內容，其金鑰是 `sub` 而值是可唯一識別登入 Amazon Cognito 使用者集區的使用者。如需有關在 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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:EncryptionContextKeys` | 字串 (清單) | 多重值 | `CreateGrant`<br />`Decrypt`<br />`Encrypt`<br />`GenerateDataKey`<br />`GenerateDataKeyPair`<br />`GenerateDataKeyPairWithoutPlaintext`<br />`GenerateDataKeyWithoutPlaintext`<br />`ReEncrypt`<br />`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`：請求中至少有一個加密內容索引鍵必須符合政策條件中的加密內容索引鍵。允許使用其他加密內容索引鍵。如果請求沒有加密內容，則不符合條件。
+ `ForAllValues`：請求中每個加密內容索引鍵必須符合政策條件中的加密內容索引鍵。此集合運算子會將加密內容索引鍵限制為政策條件中的索引鍵。它不需要任何加密內容索引鍵，但它禁止未指定的加密內容索引鍵。

以下範例金鑰政策陳述式將 `kms:EncryptionContextKeys` 條件索引鍵與 `ForAnyValue` 集合運算子搭配使用。此政策陳述式僅在請求中的至少一個加密內容對包含 `AppName` 金鑰時 (無論其值為何)，才允許使用指定操作的 KMS 金鑰。

例如，此金鑰政策陳述式允許具有兩個加密內容對、`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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:ExpirationModel` | String | 單一值 | `ImportKeyMaterial` | 金鑰政策和 IAM 政策 | 

`kms:ExpirationModel` 條件索引鍵會根據請求中的 [ExpirationModel](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ExpirationModel) 參數值，控制對 [ImportKeyMaterial](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html) 操作的存取。

`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) 參數的值。除非 `ExpirationModel` 參數的值是 `KEY_MATERIAL_DOES_NOT_EXPIRE`，否則 `ValidTo` 參數為必要。您也可以使用 [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` 條件索引鍵，只在金鑰材料過期時才允許使用者匯入金鑰材料。以下範例金鑰政策陳述式使用 `kms:ExpirationModel` 條件索引鍵搭配 [Null 條件運算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null)，僅當請求沒有 `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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:GrantConstraintType` | String | 單一值 | `CreateGrant`<br />`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`。您可以使用此條件金鑰來檢查請求是否包含其中一個類型。

**重要**  
請勿在此欄位包含機密或敏感資訊。此欄位可能在 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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:GrantIsForAWSResource` | Boolean | 單一值 | `CreateGrant`<br />`ListGrants`<br />`RevokeGrant` | 金鑰政策和 IAM 政策 | 

只有在[AWS 與 整合的服務 AWS KMS](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 的服務 AWS KMS，例如 Amazon EBS，代表指定的委託人為此 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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `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`：請求中至少有一個授予操作必須符合政策條件中的其中一個授予操作。允許其他授予操作。
+ ForAllValues：請求中每個授予操作必須符合政策條件中的授予操作。此集合運算子會將授予操作限制為政策條件中指定的操作。它不需要任何授予操作，但它禁止未指定的授予操作。

  當請求中沒有授予操作時，ForAllValues 也會傳回 true，但 `CreateGrant` 不允許。如果 `Operations` 參數遺失或具有空值時，則 `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`，則政策陳述式會要求授予中至少有一個授予操作為 `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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:GranteePrincipal` | String | 單一值 | `CreateGrant` | IAM 和金鑰政策 | 

您可以使用此條件索引鍵，根據請求中的 [GranteePrincipal](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-GranteePrincipal) 參數值，控制對 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 操作的存取。例如，您可以只在 `CreateGrant` 請求中的承授者主體符合條件陳述式中指定的主體時，才可建立授予來使用 KMS 金鑰。

若要指定承授者委託人，請使用委託人的 AWS Amazon Resource Name (ARN)。有效主體包括 AWS 帳戶 IAM 使用者、IAM 角色、聯合身分使用者和擔任的角色使用者。如需主體 ARN 語法的說明，請參閱《[IAM 使用者指南》中的 IAM ARNs](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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:KeyAgreementAlgorithm` | String | 單一值 | `DeriveSharedSecret` | 金鑰政策和 IAM 政策 | 

您可以使用 `kms:KeyAgreementAlgorithm`條件金鑰，根據請求中的 `KeyAgreementAlgorithm` 參數值來控制對 [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html) 操作的存取。的唯一有效值`KeyAgreementAlgorithm`是 `ECDH`。

例如，下列金鑰政策陳述式使用 `kms:KeyAgreementAlgorithm` 條件金鑰拒絕對 DeriveSharedSecret 的所有存取，除非 `KeyAgreementAlgorithm`是 `ECDH`。

```
{
       "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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:KeyOrigin` | String | 單一值 | `CreateKey`<br />KMS 金鑰資源操作 | IAM 政策<br />金鑰政策和 IAM 政策 | 

`kms:KeyOrigin` 條件索引鍵會根據此操作建立或使用之 KMS 金鑰的 `Origin` 屬性值，控制對操作的存取。以資源條件或請求條件運作。

您可以使用此條件索引鍵，根據請求中的 [Origin](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-Origin) 參數值，控制對 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 操作的存取。的有效值`Origin`為 `AWS_KMS`、`EXTERNAL_KEY_STORE`、 `AWS_CLOUDHSM`和 `EXTERNAL`。

例如，只有在 AWS KMS (`AWS_KMS`) 中產生金鑰材料時、只有在與 [CloudHSM 自訂金鑰存放](key-store-overview.md#custom-key-store-overview)區相關聯的 AWS CloudHSM 叢集中產生金鑰材料時 (`AWS_CLOUDHSM`)、只有在[外部金鑰存放區中產生金鑰材料時 ](key-store-overview.md#custom-key-store-overview)(`EXTERNAL_KEY_STORE`)，或只有在從外部來源[匯入金鑰材料時 ](importing-keys.md)()，您才能建立 KMS 金鑰`EXTERNAL`。

下列範例金鑰政策陳述式使用 `kms:KeyOrigin` 條件金鑰，僅在 建立金鑰材料時 AWS KMS 建立 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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:KeySpec` | String | 單一值 | `CreateKey`<br />KMS 金鑰資源操作 | IAM 政策<br />金鑰政策和 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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:KeyUsage` | String | 單一值 | `CreateKey`<br />KMS 金鑰資源操作 | IAM 政策<br />金鑰政策和 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`、`GENERATE_VERIFY_MAC`、 `SIGN_VERIFY`和 `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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:MacAlgorithm` | String | 單一值 | `GenerateMac`<br />`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) 操作的存取。

以下範例金鑰政策允許可擔任 `testers` 角色的使用者，僅可在請求中的 MAC 演算法為 `HMAC_SHA_384` 或 `HMAC_SHA_512` 時，使用 HMAC KMS 金鑰來產生及驗證 HMAC 標籤。此政策會使用兩個不同的政策陳述式，每個陳述式都有各自的條件。若您在單一條件陳述式中指定多個 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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:MessageType` | String | 單一值 | `Sign`<br />`Verify` | 金鑰政策和 IAM 政策 | 

根據請求中的 `MessageType` 參數值，`kms: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`和 `EXTERNAL_MU`。

例如，下列金鑰政策陳述式使用 `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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:MultiRegion` | Boolean | 單一值 | `CreateKey`<br />KMS 金鑰資源操作 | 金鑰政策和 IAM 政策 | 

您可以使用此條件索引鍵，僅允許對單一區域金鑰的操作，或僅允許對[多區域金鑰](multi-region-keys-overview.md)的操作。`kms:MultiRegion` 條件金鑰會根據 KMS 金鑰的 `MultiRegion` 屬性值，控制對 KMS 金鑰上 AWS KMS 操作和 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 操作的存取。有效值為 `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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:MultiRegionKeyType` | String | 單一值 | `CreateKey`<br />KMS 金鑰資源操作 | 金鑰政策和 IAM 政策 | 

您可以使用此條件索引鍵，僅允許對[多區域主要金鑰](multi-region-keys-overview.md#mrk-primary-key)的操作，或僅允許對[多區域複本金鑰](multi-region-keys-overview.md#mrk-replica-key)的操作。`kms:MultiRegionKeyType` 條件金鑰會根據 KMS 金鑰的 `MultiRegionKeyType` 屬性，控制 AWS KMS 對 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"
    }
  }
}
```

若要允許或拒絕存取所有多區域金鑰，您可以將兩個值或 Null 值與 `kms:MultiRegionKeyType` 搭配使用。不過，會建議 [kms:MultiRegion](#conditions-kms-multiregion) 條件索引鍵用於此目的。

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


| AWS KMS 條件索引鍵 | 條件類型 | 值類型 | API 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `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)的 。條件的值是一或多個 AWS 區域 名稱，例如 `us-east-1`或 `ap-southeast-2`，或區域名稱模式，例如 `eu-*`

例如，以下金鑰政策陳述式使用 `kms:PrimaryRegion` 條件索引鍵，以允許主體將多重區域金鑰的主要區域更新為四個指定區域之一。

```
{
  "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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:ReEncryptOnSameKey` | Boolean | 單一值 | `ReEncrypt` | 金鑰政策和 IAM 政策 | 

您可以使用此條件索引鍵，根據請求指定的目的地 CMK 是否與原始加密所用的 KMS 金鑰相同，來控制對 [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) 操作的存取。

例如，下列金鑰政策陳述式使用 `kms:ReEncryptOnSameKey` 條件索引鍵，只在目的地 CMK 與原始加密所用的 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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:RequestAlias` | 字串 (清單) | 單一值 | [密碼編譯操作](kms-cryptography.md#cryptographic-operations)<br />[DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)<br />[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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `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`比較運算子），或對每個帳戶不同 中的多個 KMS 金鑰 AWS 區域 的存取。

**注意**  
僅當 KMS 金鑰符合[每個 KMS 金鑰的別名](resource-limits.md#aliases-per-key)配額時，[kms:ResourceAliases](#conditions-kms-resource-aliases) 條件才會有效。如果 KMS 金鑰超過此配額，則會拒絕透過 `kms:ResourceAliases` 條件授權使用 KMS 金鑰的主體存取 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 金鑰相關聯的別名必須與政策條件中的別名相符。允許使用其他別名。如果 KMS 金鑰沒有別名，則不符合條件。
+ ForAllValues：與 KMS 金鑰關聯的每個別名都必須與政策中的別名相符。此集合運算子會將與 KMS 金鑰相關聯的別名限制為政策條件中的別名。它不需要任何別名，但會禁止未指定的別名。

例如，下列 IAM 政策陳述式允許主體在與別名 AWS 帳戶 相關聯的指定 中的任何 KMS 金鑰上呼叫 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) `finance-key` 操作。(受影響的 KMS 金鑰的金鑰政策也必須允許主體的帳戶使用這些金鑰來進行此操作。) 若要在可能與 KMS 金鑰相關聯的許多別名之一為 `alias/finance-key` 時滿足該條件，條件會使用 `ForAnyValue` 集合運算子。

由於 `kms:ResourceAliases` 條件是根據資源，而非請求，對於任何與 `finance-key` 別名相關聯的 KMS 金鑰的 `GenerateDataKey` 呼叫會成功，即使請求使用[金鑰 ID](concepts.md#key-id-key-id) 或[金鑰 ARN](concepts.md#key-id-key-ARN) 來識別 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 金鑰，但僅當 KMS 金鑰的所有別名都包含 "`Test`" 時。此政策陳述式使用兩個條件。具有 `ForAllValues` 集合運算子的條件需要所有與 KMS 金鑰相關聯的別名都包含「測試」。具有 `ForAnyValue` 集合運算子的條件需要 KMS 金鑰至少有一個具有「測試」的別名。沒有 `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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:ReplicaRegion` | 字串 (清單) | 單一值 | `ReplicateKey` | 金鑰政策和 IAM 政策 | 

您可以使用此條件金鑰來限制委託人可以複寫[多區域金鑰](multi-region-keys-overview.md) AWS 區域 的 。根據請求中的 [ReplicaRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-RetiringPrincipal) 參數值，`kms:ReplicaRegion` 條件索引鍵可控制對 [ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 操作的存取。此參數指定為新[複本金鑰](multi-region-keys-overview.md#mrk-replica-key)指定 AWS 區域 。

條件的值是一或多個 AWS 區域 名稱，例如 `us-east-1`或 `ap-southeast-2`，或名稱模式，例如 `eu-*`。如需 AWS 區域 AWS KMS 支援的名稱清單，請參閱 中的[AWS Key Management Service 端點和配額](https://docs.aws.amazon.com/general/latest/gr/kms.html) AWS 一般參考。

例如，以下金鑰政策陳述式使用 `kms:ReplicaRegion` 條件索引鍵，僅在 `ReplicaRegion` 參數值為指定區域之一時，才允許主體呼叫 [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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:RetiringPrincipal` | 字串 (清單) | 單一值 | `CreateGrant` | 金鑰政策和 IAM 政策 | 

您可以使用此條件索引鍵，根據請求中的 [RetiringPrincipal](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-RetiringPrincipal) 參數值，控制對 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 操作的存取。例如，您可以只在 `CreateGrant` 請求中的 `RetiringPrincipal` 符合條件陳述式中的 `RetiringPrincipal` 時，才可建立授予來使用 KMS 金鑰。

若要指定淘汰委託人，請使用委託人的 AWS Amazon Resource Name (ARN)。有效主體包括 AWS 帳戶 IAM 使用者、IAM 角色、聯合身分使用者和擔任的角色使用者。如需主體 ARN 語法的說明，請參閱《[IAM 使用者指南》中的 IAM ARNs](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)。 **

下列範例金鑰政策陳述式允許使用者建立 KMS 金鑰的授予。`kms:RetiringPrincipal` 條件金鑰會將許可限制為`CreateGrant`請求，其中授予中的淘汰委託人是 `LimitedAdminRole`。

```
{
  "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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:ScheduleKeyDeletionPendingWindowInDays` | 數值 | 單一值 | `ScheduleKeyDeletion` | 金鑰政策和 IAM 政策 | 

您可利用此條件金鑰，針對主體對 [ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html) 請求指定的 `PendingWindowInDays` 參數值加以限制。

`PendingWindowInDays` 指定刪除金鑰之前 AWS KMS 要等待的天數。 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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:SigningAlgorithm` | String | 單一值 | `Sign` <br />`Verify` | 金鑰政策和 IAM 政策 | 

根據請求中的 [SigningAlgorithm](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-SigningAlgorithm) 參數值，您可以使用 `kms: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) 操作的存取。此條件金鑰不會影響在 外部執行的操作 AWS KMS，例如在 外部的非對稱 KMS 金鑰對中使用公有金鑰驗證簽章 AWS KMS。

下列範例金鑰政策允許可以擔任 `testers` 角色的使用者只有在請求所用的簽署演算法是 RSASSA\_PSS 演算法 (例如 `RSASSA_PSS_SHA512`) 時，才能使用 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:TrailingDaysWithoutKeyUsage
<a name="conditions-kms-trailing-days-without-key-usage"></a>


| AWS KMS 條件索引鍵 | 條件類型 | 值類型 | API 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:TrailingDaysWithoutKeyUsage` | 數值 | 單一值 | `DisableKey`<br />`ScheduleKeyDeletion` | 金鑰政策和 IAM 政策 | 

`kms:TrailingDaysWithoutKeyUsage` 條件金鑰代表 KMS 金鑰上沒有密碼編譯操作、從上次成功的密碼編譯操作計算，或從 KMS 金鑰的建立日期或`TrackingStartDate`從未使用金鑰的過去天數。如需追蹤開始日期的詳細資訊，請參閱 [了解用量追蹤期間](monitoring-keys-determining-usage.md#understanding-tracking-period)。您可以在金鑰政策和 IAM 政策中使用此條件金鑰，以控制對 [ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html) 和 [DisableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisableKey.html) 操作的存取。

此條件索引鍵是數值的單一值條件。結尾天數值一律會四捨五入。例如，如果上次使用的金鑰是在 89.9 天前，則值為 89。

`kms:TrailingDaysWithoutKeyUsage` 的計算方式如下：
+ 對於在 *上或之後*建立`TrackingStartDate`，但自追蹤開始以來*尚未使用的*金鑰：

  公式：*Present Date* - `KeyCreationDate`

  例如，如果*目前日期*是 2026 年 4 月 30 日，而金鑰是在 2026 年 4 月 20 日建立，則值為 10。
+ 對於在 *之前*建立`TrackingStartDate`的自追蹤開始以來*未使用的*金鑰：

  公式：*Present Date* - `TrackingStartDate`

  例如，如果*目前日期*是 2026 年 4 月 30 日，而 `TrackingStartDate`是 2026 年 4 月 15 日，則無論建立金鑰的時間為何，值為 15。
+ 對於自追蹤開始以來*已使用的*金鑰，無論金鑰的建立時間為何：

  公式：*目前日期* - 第 個，`Timestamp`共 個 `KeyLastUsage`

下列範例金鑰政策陳述式拒絕 `ScheduleKeyDeletion`和 `DisableKey`操作，前提是過去 90 天內曾使用過金鑰，或是當金鑰沒有記錄用量，而且是在 90 天或更少天前建立，或是追蹤在 90 天或更少天前開始。這可防止意外刪除或停用主動使用或最近建立的金鑰。

```
{
  "Effect": "Deny",
  "Action": [
    "kms:ScheduleKeyDeletion",
    "kms:DisableKey"
  ],
  "Principal": "*",
  "Resource": "*",
  "Condition": {
    "NumericLessThanEquals": {
      "kms:TrailingDaysWithoutKeyUsage": "90"
    }
  }
}
```

**另請參閱**
+ [檢查使用 KMS 金鑰執行的最後一個密碼編譯操作](monitoring-keys-determining-usage.md#examine-last-usage)
+ [kms:ScheduleKeyDeletionPendingWindowInDays](#conditions-kms-schedule-key-deletion-pending-window-in-days)

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


| AWS KMS 條件索引鍵 | 條件類型 | 值類型 | API 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:ValidTo` | 時間戳記 | 單一值 | `ImportKeyMaterial` | 金鑰政策和 IAM 政策 | 

`kms:ValidTo` 條件索引鍵會根據請求中的 [ValidTo](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ValidTo) 參數值 (其決定了匯入金鑰材料的過期時間)，控制對 [ImportKeyMaterial](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html) 操作的存取。這個值是以 [Unix 時間](https://en.wikipedia.org/wiki/Unix_time)表示。

在預設情況下，`ImportKeyMaterial` 請求需要 `ValidTo` 參數。不過，如果 [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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `kms:ViaService` | String | 單一值 | KMS 金鑰資源操作 | 金鑰政策和 IAM 政策 | 

`kms:ViaService` 條件金鑰會將 KMS 金鑰的使用限制為來自指定 的請求 AWS 服務。此條件金鑰僅適用於[轉送存取工作階段](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)。您可以在每個 `kms:ViaService` 條件金鑰中指定一或多個服務。操作必須是 *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 的服務， AWS KMS 並支援在客戶受管金鑰中使用 `kms:ViaService` 條件金鑰。此資料表中的 服務可能無法在所有區域中使用。在所有 AWS 分割區中使用 AWS KMS ViaService `.amazonaws.com` 名稱的尾碼。

**注意**  
您可能需要水平或垂直捲動，才能查看此資料表中的所有資料。


| 服務名稱 | AWS KMS ViaService 名稱 | 
| --- | --- | 
| Amazon AI 操作 | aiops.{{AWS\_region}}.amazonaws.com | 
| AWS App Runner | apprunner.{{AWS\_region}}.amazonaws.com | 
| AWS AppFabric | appfabric.{{AWS\_region}}.amazonaws.com | 
| Amazon AppFlow | appflow.{{AWS\_region}}.amazonaws.com | 
| AWS Application Migration Service | mgn.{{AWS\_region}}.amazonaws.com | 
| Amazon Athena | athena.{{AWS\_region}}.amazonaws.com | 
| AWS Audit Manager | auditmanager.{{AWS\_region}}.amazonaws.com | 
| Amazon Aurora | rds.{{AWS\_region}}.amazonaws.com | 
| AWS Backup | backup.{{AWS\_region}}.amazonaws.com | 
| AWS Backup 閘道 | backup-gateway.{{AWS\_region}}.amazonaws.com | 
| Amazon Bedrock 模型複製 | bedrock.{{AWS\_region}}.amazonaws.com | 
| Amazon Chime SDK | chimevoiceconnector.{{AWS\_region}}.amazonaws.com | 
| AWS Clean Rooms ML | cleanrooms-ml.{{AWS\_region}}.amazonaws.com | 
| AWS CodeArtifact | codeartifact.{{AWS\_region}}.amazonaws.com | 
| Amazon CodeGuru Reviewer | codeguru-reviewer.{{AWS\_region}}.amazonaws.com | 
| Amazon Comprehend | comprehend.{{AWS\_region}}.amazonaws.com | 
| Amazon Connect | connect.{{AWS\_region}}.amazonaws.com | 
| Amazon Connect Customer Profiles | profile.{{AWS\_region}}.amazonaws.com | 
| Amazon Q in Connect | wisdom.{{AWS\_region}}.amazonaws.com | 
| AWS Database Migration Service (AWS DMS) | dms.{{AWS\_region}}.amazonaws.com | 
| AWS DeepRacer | deepracer.{{AWS\_region}}.amazonaws.com | 
| AWS Directory Service | directoryservice.{{AWS\_region}}.amazonaws.com | 
| Amazon DocumentDB | docdb-elastic.{{AWS\_region}}.amazonaws.com | 
| Amazon DynamoDB | dynamodb.{{AWS\_region}}.amazonaws.com | 
| Amazon EC2 Systems Manager (SSM) | ssm.{{AWS\_region}}.amazonaws.com | 
| Amazon Elastic Block Store (Amazon EBS) | ec2.{{AWS\_region}}.amazonaws.com (僅 EBS) | 
| Amazon Elastic Container Registry (Amazon ECR) | ecr.{{AWS\_region}}.amazonaws.com | 
| Amazon Elastic File System (Amazon EFS) | elasticfilesystem.{{AWS\_region}}.amazonaws.com | 
| Amazon ElastiCache | 在條件索引鍵值中均包含 ViaService 名稱：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/kms/latest/developerguide/conditions-kms.html) | 
| AWS Elemental MediaTailor | mediatailor.{{AWS\_region}}.amazonaws.com | 
| AWS 實體解析 | entityresolution.{{AWS\_region}}.amazonaws.com | 
| Amazon EventBridge | events.{{AWS\_region}}.amazonaws.com | 
| Amazon FinSpace | finspace.{{AWS\_region}}.amazonaws.com | 
| Amazon Forecast | forecast.{{AWS\_region}}.amazonaws.com | 
| Amazon FSx | fsx.{{AWS\_region}}.amazonaws.com | 
| AWS Glue | glue.{{AWS\_region}}.amazonaws.com | 
| AWS Ground Station | groundstation.{{AWS\_region}}.amazonaws.com | 
| Amazon GuardDuty | malware-protection.{{AWS\_region}}.amazonaws.com | 
| AWS HealthLake | healthlake.{{AWS\_region}}.amazonaws.com | 
| AWS IoT SiteWise | iotsitewise.{{AWS\_region}}.amazonaws.com | 
| Amazon Kendra | kendra.{{AWS\_region}}.amazonaws.com | 
| Amazon Keyspaces (適用於 Apache Cassandra) | cassandra.{{AWS\_region}}.amazonaws.com | 
| Amazon Kinesis | kinesis.{{AWS\_region}}.amazonaws.com | 
| Amazon Data Firehose | firehose.{{AWS\_region}}.amazonaws.com | 
| Amazon Kinesis Video Streams | kinesisvideo.{{AWS\_region}}.amazonaws.com | 
| AWS Lambda | lambda.{{AWS\_region}}.amazonaws.com | 
| Amazon Lex | lex.{{AWS\_region}}.amazonaws.com | 
| AWS License Manager | license-manager.{{AWS\_region}}.amazonaws.com | 
| Amazon Location Service | geo.{{AWS\_region}}.amazonaws.com | 
| Amazon Lookout for Equipment | lookoutequipment.{{AWS\_region}}.amazonaws.com | 
| Amazon Lookout for Metrics | lookoutmetrics.{{AWS\_region}}.amazonaws.com | 
| Amazon Lookout for Vision | lookoutvision.{{AWS\_region}}.amazonaws.com | 
| Amazon Macie | macie.{{AWS\_region}}.amazonaws.com | 
| AWS Mainframe Modernization | m2.{{AWS\_region}}.amazonaws.com | 
| AWS Mainframe Modernization 應用程式測試 | apptest.{{AWS\_region}}.amazonaws.com | 
| Amazon Managed Blockchain | managedblockchain.{{AWS\_region}}.amazonaws.com | 
| Amazon Managed Streaming for Apache Kafka (Amazon MSK) | kafka.{{AWS\_region}}.amazonaws.com | 
| Amazon Managed Workflows for Apache Airflow (MWAA) | airflow.{{AWS\_region}}.amazonaws.com | 
| Amazon MemoryDB | memorydb.{{AWS\_region}}.amazonaws.com | 
| Amazon Monitron | monitron.{{AWS\_region}}.amazonaws.com | 
| Amazon MQ | mq.{{AWS\_region}}.amazonaws.com | 
| Amazon Neptune | rds.{{AWS\_region}}.amazonaws.com | 
| Amazon Nimble Studio | nimble.{{AWS\_region}}.amazonaws.com | 
| AWS HealthOmics | omics.{{AWS\_region}}.amazonaws.com | 
| Amazon OpenSearch Service | es.{{AWS\_region}}.amazonaws.com, aoss.{{AWS\_region}}.amazonaws.com | 
| Amazon OpenSearch 自訂套件 | custom-packages.{{AWS\_region}}.amazonaws.com | 
| AWS Proton | proton.{{AWS\_region}}.amazonaws.com | 
| Amazon Quantum Ledger Database (Amazon QLDB) | qldb.{{AWS\_region}}.amazonaws.com | 
| Amazon RDS Performance Insights | rds.{{AWS\_region}}.amazonaws.com | 
| Amazon Redshift | redshift.{{AWS\_region}}.amazonaws.com | 
| Amazon Redshift 查詢編輯器第 2 版 | sqlworkbench.{{AWS\_region}}.amazonaws.com | 
| Amazon Redshift Serverless | redshift-serverless.{{AWS\_region}}.amazonaws.com | 
| Amazon Rekognition | rekognition.{{AWS\_region}}.amazonaws.com | 
| Amazon Relational Database Service (Amazon RDS) | rds.{{AWS\_region}}.amazonaws.com | 
| Amazon Replicated Data Store | ards.{{AWS\_region}}.amazonaws.com | 
| Amazon SageMaker AI | sagemaker.{{AWS\_region}}.amazonaws.com | 
| AWS Secrets Manager | secretsmanager.{{AWS\_region}}.amazonaws.com | 
| Amazon Security Lake | securitylake.{{AWS\_region}}.amazonaws.com | 
| Amazon Simple Email Service (Amazon SES) | ses.{{AWS\_region}}.amazonaws.com | 
| Amazon Simple Notification Service (Amazon SNS) | sns.{{AWS\_region}}.amazonaws.com | 
| Amazon Simple Queue Service (Amazon SQS) | sqs.{{AWS\_region}}.amazonaws.com | 
| Amazon Simple Storage Service (Amazon S3) | s3.{{AWS\_region}}.amazonaws.com | 
| Amazon S3 Tables | s3tables.{{AWS\_region}}.amazonaws.com | 
| AWS Snowball Edge | importexport.{{AWS\_region}}.amazonaws.com | 
| AWS Step Functions | states.{{AWS\_region}}.amazonaws.com | 
| AWS Storage Gateway | storagegateway.{{AWS\_region}}.amazonaws.com | 
| AWS Systems Manager Incident Manager | ssm-incidents.{{AWS\_region}}.amazonaws.com | 
| AWS Systems Manager Incident Manager 聯絡人 | ssm-contacts.{{AWS\_region}}.amazonaws.com | 
| Amazon Timestream | timestream.{{AWS\_region}}.amazonaws.com | 
| Amazon Translate | translate.{{AWS\_region}}.amazonaws.com | 
| AWS Verified Access | verified-access.{{AWS\_region}}.amazonaws.com | 
| Amazon WorkMail | workmail.{{AWS\_region}}.amazonaws.com | 
| Amazon WorkSpaces | workspaces.{{AWS\_region}}.amazonaws.com | 
| Amazon WorkSpaces 精簡型客戶端 | thinclient.{{AWS\_region}}.amazonaws.com | 
| Amazon WorkSpaces Web | workspaces-web.{{AWS\_region}}.amazonaws.com | 
| AWS X-Ray | xray.{{AWS\_region}}.amazonaws.com | 

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


| AWS KMS 條件索引鍵 | 條件類型 | 值類型 | API 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `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` 包裝演算法。`GetParametersForImport` 請求中的 `WrappingAlgorithm` 是 `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 操作 | Policy type (政策類型) | 
| --- | --- | --- | --- | --- | 
| `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)