

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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` 값을 찾습니다. [ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)와 같이 특정 KMS 키 리소스에 대해 권한이 부여되지 않은 작업과 함께 이 유형의 조건 키를 사용하면 조건을 만족시킬 수 없으므로 권한이 적용되지 않습니다. `ListKeys` 작업 권한 부여와 관련된 KMS 키 리소스가 없고 `KeySpec` 속성이 없기 때문입니다.

다음 주제에서는 각 AWS KMS 조건 키를 설명하고 정책 구문을 보여주는 예제 정책 문을 포함합니다.

**조건 키와 함께 집합 연산자 사용**

정책 조건이 요청의 태그 세트와 정책의 태그 세트와 같은 두 값 세트를 비교하는 경우 세트를 비교하는 AWS 방법을 알려주어야 합니다. IAM은 이를 위해 두 개의 세트 연산자 `ForAnyValue`와 `ForAllValues`를 정의합니다. 세트 연산자는 세트 연산자를 필요로 하는 *다중값 조건 키(multi-valued condition keys)*에만 사용합니다. *단일 값 조건 키(single-valued condition keys)*에는 집합 연산자를 사용하지 마세요. 항상 정책문을 프로덕션 환경에서 사용하기 전에 철저히 테스트합니다.

조건 키는 단일 값이거나 다중 값입니다. AWS KMS 조건 키가 단일 값인지 다중 값인지 확인하려면 조건 키 설명의 **값 유형** 열을 참조하세요.
+ *단일 값* 조건 키는 권한 부여 컨텍스트(요청 또는 리소스)에서 최대 하나의 값을 갖습니다. 예를 들어 각 API 호출은 하나에서만 시작될 수 있으므로 AWS 계정[kms:CallerAccount](#conditions-kms-caller-account)는 단일 값 조건 키입니다. 단일 값 조건 키(single-valued condition keys)에는 집합 연산자를 사용하지 마세요.
+ *다중 값* 조건 키는 권한 부여 컨텍스트(요청 또는 리소스)에서 여러 값을 갖습니다. 예를 들어, 각 KMS 키에는 여러 개의 별칭이 있을 수 있으므로 [kms:ResourceAliases](#conditions-kms-resource-aliases)에는 여러 개의 값이 있을 수 있습니다. 다중값 조건 키에는 집합 연산자가 필요합니다.

단일 값 조건 키와 다중값 조건 키의 차이는 정책 조건의 값 수가 아니라 권한 부여 컨텍스트의 값 수에 따라 달라집니다.

**주의**  
단일 값 조건 키와 함께 집합 연산자를 사용하면 지나치게 허용 (또는 지나치게 제한적인) 정책문을 만들 수 있습니다. 집합 연산자는 다중값 조건 키(multi-valued condition keys)에만 사용합니다.  
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 작업 | 정책 유형 | 
| --- | --- | --- | --- | --- | 
| `kms:BypassPolicyLockoutSafetyCheck` | 부울 | 단일 값 | `CreateKey`<br />`PutKeyPolicy` | IAM 정책만<br />키 정책 및 IAM 정책 | 

`kms:BypassPolicyLockoutSafetyCheck` 조건 키는 요청의 `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`를 사용하는 대신에, 이 정책문에서는 [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` | 문자열 | 단일 값 | KMS 키 리소스 작업<br />사용자 지정 키 스토어 작업 | 키 정책 및 IAM 정책 | 

이 조건 키를 사용해 AWS 계정의 모든 ID(사용자와 역할)에 대한 액세스를 허용하거나 거부할 수 있습니다. 키 정책에서 `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의 모든 자격 증명에 대한 액세스를 효과적으로 허용합니다. 여기에는 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` | 문자열 | 단일 값 | `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 작업 | 정책 유형 | 
| --- | --- | --- | --- | --- | 
| `kms:EncryptionAlgorithm` | 문자열 | 단일 값 | `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) 파라미터의 값에 따라 액세스를 제어합니다. 데이터 키 및 데이터 키 페어를 생성하는 작업의 경우 데이터 키를 암호화하는 데 사용되는 암호화 알고리즘을 기반으로 액세스를 제어합니다.

이 조건 키는 외부의 비대칭 KMS 키 페어에서 퍼블릭 키로 암호화하는 AWS KMS등 외부에서 수행되는 작업에 영향을 주지 않습니다 AWS KMS.

**요청의 EncryptionAlgorithm 파라미터**

사용자가 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\_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 작업 | 정책 유형 | 
| --- | --- | --- | --- | --- | 
| `kms:EncryptionContext:context-key` | 문자열 | 단일 값 | `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` 집합 연산자를 사용하여 정책문을 생성하는 경우 조건은 암호화 컨텍스트가 없는 요청과 정책 조건에 지정되지 않은 암호화 컨텍스트 페어가 있는 요청을 허용합니다.

**주의**  
단일 값 조건 키(single-valued condition keys)에는 `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>

여러 암호화 컨텍스트 페어를 요구하거나 금지할 수 있습니다. 여러 암호화 컨텍스트 페어 중 하나를 요구할 수도 있습니다. 이러한 조건을 해석하는 데 사용되는 논리에 대한 자세한 내용은 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"
    }
  }
}
```

하나의 암호화 컨텍스트 쌍 또는 다른 쌍을 요구하려면 각 조건 키를 별도의 정책문에 배치합니다. 다음 예제 키 정책은 `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 사용 설명서*의 [여러 키 또는 값이 있는 조건에 대한 평가 논리](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>

해독 작업에 지정된 암호화 컨텍스트는 암호화 작업에 지정된 암호화 컨텍스트에 대해 대소문자가 정확히 일치해야 합니다. 여러 쌍이 있는 암호화 컨텍스트에서 쌍의 순서만 다를 수 있습니다.

그러나 정책 조건에서 조건 키는 대소문자를 구분하지 않습니다. 조건 값의 대소문자 구분은 `StringEquals` 또는 `StringEqualsIgnoreCase`와 같이 사용하는 [정책 조건 연산자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)에 의해 결정됩니다.

이와 같이 `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) 정책 변수를 사용합니다.

요청이 평가될 때 호출자의 사용자 이름이 조건의 변수를 대체합니다. 따라서 조건은 "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 에 로그인한 사용자를 고유하게 식별합니다.

다른 모든 변수와 마찬가지로 이러한 변수도 실제 암호화 컨텍스트가 아니라 `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 작업 | 정책 유형 | 
| --- | --- | --- | --- | --- | 
| `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` 집합 연산자와 함께 사용합니다. 이 정책문은 지정된 작업에 대해 KMS 키를 사용할 수 있도록 허용하지만 값에 관계없이 요청의 암호화 컨텍스트 페어 중 하나 이상이 `AppName` 키를 포함하는 경우에만 가능합니다.

예를 들어, 이 키 정책문은 첫 번째 암호화 컨텍스트 페어가 조건을 충족하기 때문에 두 개의 암호화 컨텍스트 페어(`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` 조건 키와 함께 [를 사용하여 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) 조건 키에서 API 요청에 존재할 때만(null 아님) CMK에 대한 액세스를 허용합니다. 이 조건은 암호화 컨텍스트의 키나 값을 확인하지 않습니다. 암호화 컨텍스트가 존재하는지 확인합니다.

```
{
  "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` | 문자열 | 단일 값 | `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) 파라미터의 값에 따라 결정됩니다. `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` | 문자열 | 단일 값 | `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 작업 | 정책 유형 | 
| --- | --- | --- | --- | --- | 
| `kms:GrantIsForAWSResource` | 부울 | 단일 값 | `CreateGrant`<br />`ListGrants`<br />`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` 조건 키를 사용합니다. Amazon EBS AWS KMS와 같이와 통합된 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` | 문자열 | 다중 값 | `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` 파라미터가 없거나 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`로 변경하면 정책문에서 권한 부여의 권한 부여 작업 중 하나 이상이 `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` | 문자열 | 단일 값 | `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 리소스 이름(ARN)을 사용합니다. 유효한 보안 주체에는 IAM 사용자 AWS 계정, 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` | 문자열 | 단일 값 | `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` | 문자열 | 단일 값 | `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`, `AWS_CLOUDHSM`, `EXTERNAL_KEY_STORE` 및 `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` 조건 키를 사용하여가 키 구성 요소를 생성할 때만 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` | 문자열 | 단일 값 | `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 작업 | 정책 유형 | 
| --- | --- | --- | --- | --- | 
| `kms:KeyUsage` | 문자열 | 단일 값 | `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`, `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` | 문자열 | 단일 값 | `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) 작업에 대한 액세스를 제어할 수 있습니다.

다음 예제 키 정책은 요청의 MAC 알고리즘이 `HMAC_SHA_384` 또는 `HMAC_SHA_512`인 경우에만 `testers` 역할을 수임할 수 있는 사용자가 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 작업 | 정책 유형 | 
| --- | --- | --- | --- | --- | 
| `kms:MessageType` | 문자열 | 단일 값 | `Sign`<br />`Verify` | 키 정책 및 IAM 정책 | 

`kms:MessageType` 조건 키는 요청의 `MessageType` 파라미터 값을 기반으로 [서명](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html) 및 [확인](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html) 작업에 대한 액세스를 제어합니다. 에 유효한 값은 `RAW`, `DIGEST` 및 `MessageType`입니다`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 작업 | 정책 유형 | 
| --- | --- | --- | --- | --- | 
| `kms:MultiRegion` | 부울 | 단일 값 | `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 작업 | 정책 유형 | 
| --- | --- | --- | --- | --- | 
| `kms:MultiRegionKeyType` | 문자열 | 단일 값 | `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"
    }
  }
}
```

모든 다중 지역 키에 대한 액세스를 허용하거나 거부하려면 `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` 파라미터는 기본으로 승격되는 [다중 리전 복제본 키](multi-region-keys-overview.md#mrk-replica-key) AWS 리전 의를 지정합니다. 조건의 값은 또는와 같은 하나 이상의 AWS 리전 이름 `ap-southeast-2`또는 `us-east-1`와 같은 리전 이름 패턴입니다. `eu-*` 

예를 들어 다음 키 정책 문은 `kms:PrimaryRegion` 조건 키를 사용하여 보안 주체가 다중 리전 키의 기본 리전을 지정된 4개의 리전 중 하나로 업데이트할 수 있습니다.

```
{
  "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)<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)을 기반으로 암호화 작업에 사용되는 KMS 키 `GetPublicKey` 또는 `DescribeKey`에 대한 액세스를 제어합니다. (이 정책 조건은 [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:aws:kms:us-west-2:111122223333:alias/finance-key`)이 있는 별칭 ARN인 경우에만 허용됩니다.

```
{
  "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`비교 연산자 사용) 또는 각 계정마다 다른 여러 KMS 키에 대한 액세스를 제어할 AWS 리전 수 있습니다.

**참고**  
[kms:ResourceAliases](#conditions-kms-resource-aliases) 조건은 KMS 키가 [KMS 키당 별칭](resource-limits.md#aliases-per-key) 할당량을 준수하는 경우에만 유효합니다. 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 계정 가 `finance-key`별칭과 연결된 지정된의 모든 KMS 키에 대해 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 작업을 호출하도록 허용합니다. (영향을 받는 KMS 키의 키 정책도 보안 주체의 계정에서 이 작업에 사용할 수 있도록 허용해야 합니다.) KMS 키와 연결될 수 있는 여러 별칭 중 하나가`alias/finance-key`인 경우 조건이 충족되었음을 나타내기 위해 조건은 `ForAnyValue` 집합 연산자를 사용합니다.

`kms:ResourceAliases` 조건은 요청이 아닌 리소스를 기반으로 하기 때문에 요청이 [키 ID](concepts.md#key-id-key-id) 또는 [키 ARN](concepts.md#key-id-key-ARN)을 사용하여 KMS 키를 식별하는 경우에도 `finance-key` 별칭과 연결된 KMS 키에 대해 `GenerateDataKey` 직접 호출이 성공합니다.

```
{
  "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 키와 연결된 모든 별칭에 "Test"가 포함되어야 합니다. `ForAnyValue` 집합 연산자가 있는 조건에서는 KMS 키에 "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) 작업에 대한 액세스를 제어합니다. 이 파라미터는 새 [복제본 키](multi-region-keys-overview.md#mrk-replica-key)에 대한 AWS 리전 을 지정합니다.

조건의 값은 또는와 같은 하나 이상의 AWS 리전 이름 `ap-southeast-2`또는 `us-east-1`와 같은 이름 패턴입니다`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 작업 | 정책 유형 | 
| --- | --- | --- | --- | --- | 
| `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 리소스 이름(ARN)을 사용합니다. 유효한 보안 주체에는 IAM 사용자 AWS 계정, IAM 역할, 페더레이션 사용자 및 수임된 역할 사용자가 포함됩니다. 위탁자의 ARN 구문에 대한 도움말은 *IAM 사용 설명서*의 [IAM ARN](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 작업 | 정책 유형 | 
| --- | --- | --- | --- | --- | 
| `kms:RotationPeriodInDays` | Numeric | 단일 값 | `EnableKeyRotation` | 키 정책 및 IAM 정책 | 

이 조건 키를 사용하여 위탁자가 [EnableKeyRotation](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKeyRotation.html) 요청의 `RotationPeriodInDays` 파라미터에 지정할 수 있는 값을 제한할 수 있습니다.

는 각 자동 키 교체 날짜 사이의 일수를 `RotationPeriodInDays` 지정합니다.를 AWS KMS 사용하면 90\~2,560일의 교체 기간을 지정할 수 있지만 조건 `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` | Numeric | 단일 값 | `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` | 문자열 | 단일 값 | `Sign` <br />`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_PSS_SHA512` 같은 RSASSA\_PSS 알고리즘인 경우에만 `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:TrailingDaysWithoutKeyUsage
<a name="conditions-kms-trailing-days-without-key-usage"></a>


| AWS KMS 조건 키 | 조건 유형 | 값 유형 | API 작업 | 정책 유형 | 
| --- | --- | --- | --- | --- | 
| `kms:TrailingDaysWithoutKeyUsage` | Numeric | 단일 값 | `DisableKey`<br />`ScheduleKeyDeletion` | 키 정책 및 IAM 정책 | 

`kms:TrailingDaysWithoutKeyUsage` 조건 키는 마지막으로 성공한 암호화 작업 또는 KMS 키의 생성 날짜 또는 키가 사용된 적이 없는 `TrackingStartDate` 경우 계산된 KMS 키에 대한 암호화 작업이 없는 후행 일수를 나타냅니다. 추적 시작 날짜에 대한 자세한 내용은 섹션을 참조하세요[사용량 추적 기간 이해](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`이 시작된 이후 *사용되지 않은* *또는 이후에* 생성된 키의 경우:

  공식: *현재 날짜* - `KeyCreationDate`

  예를 들어 *현재 날짜가* 2026년 4월 30일이고 키가 2026년 4월 20일에 생성된 경우 값은 10입니다.
+ 추적`TrackingStartDate`이 시작된 이후 *사용되지 않은* *이전에* 생성된 키의 경우:

  공식: *현재 날짜* - `TrackingStartDate`

  예를 들어 *현재 날짜가* 2026년 4월 30일이고 `TrackingStartDate`가 2026년 4월 15일인 경우 키 생성 시기에 관계없이 값은 15입니다.
+ 키 생성 시기에 관계없이 추적이 시작된 이후 *사용된* 키의 경우:

  공식: *현재 날짜* - `Timestamp`/ `KeyLastUsage`

다음 예제 키 정책 문은 지난 90일 이내에 키를 사용한 경우 또는 키에 기록된 사용량이 없고 90일 이내에 생성되었거나 90일 이내에 추적이 시작된 경우 `ScheduleKeyDeletion` 및 `DisableKey` 작업을 거부합니다. 이렇게 하면 활성 상태이거나 최근에 생성된 키가 실수로 삭제되거나 비활성화되는 것을 방지할 수 있습니다.

```
{
  "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 작업 | 정책 유형 | 
| --- | --- | --- | --- | --- | 
| `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)으로 표현됩니다.

기본적으로 `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` 조건 키는 `ValidTo` 값이 `1546257599.0` (2018년 12월 31일 11:59:59 PM)보다 작거나 같은 `ImportKeyMaterial` 요청에 대한 권한을 제한합니다.

```
{
  "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` | 문자열 | 단일 값 | 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` 조건 키를 사용하여 요청이 AWS Lambda 에서 `ExampleRole` 대신 이루어지는 경우 고객 관리형 키를 `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 키를 사용하도록 허용합니다. 에 대한 키 정책을 보려면 [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html) 작업을 AWS 관리형 키사용합니다.

`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\_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/ko_kr/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(QLDB) | qldb.{{AWS\_region}}.amazonaws.com | 
| Amazon RDS Performance Insights | rds.{{AWS\_region}}.amazonaws.com | 
| Amazon Redshift | redshift.{{AWS\_region}}.amazonaws.com | 
| Amazon Redshift 쿼리 편집기 V2 | 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 복제 데이터 스토어 | 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 Thin Client | 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 작업 | 정책 유형 | 
| --- | --- | --- | --- | --- | 
| `kms:WrappingAlgorithm` | 문자열 | 단일 값 | `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 작업 | 정책 유형 | 
| --- | --- | --- | --- | --- | 
| `kms:WrappingKeySpec` | 문자열 | 단일 값 | `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)