

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

# 암호화 컨텍스트
<a name="encrypt_context"></a>

**참고**  
[비대칭 KMS 키](symmetric-asymmetric.md) 또는 [HMAC KMS 키](hmac.md)를 사용하여 암호화 작업에서 암호화 컨텍스트를 지정할 수 없습니다. 비대칭 알고리즘 및 MAC 알고리즘은 암호화 컨텍스트를 지원하지 않습니다.

[대칭 암호화 KMS 키를](symm-asymm-choose-key-spec.md#symmetric-cmks) 사용하는 모든 AWS KMS [암호화 작업은](kms-cryptography.md#cryptographic-operations) 데이터에 대한 추가 컨텍스트 정보를 포함할 수 있는 비밀이 아닌 키-값 페어의 선택적 세트인 *암호화* 컨텍스트를 수락합니다. 의 `Encrypt` 작업에 암호화 컨텍스트를 삽입 AWS KMS 하여 AWS KMS API 복호화 호출의 권한 부여 및 감사 가능성을 향상시킬 수 있습니다.는 암호화 컨텍스트를 추가 인증 데이터(AAD)로 AWS KMS 사용하여 인증된 암호화를 지원합니다. 암호화 컨텍스트는 사이퍼텍스트에 암호적으로 바인딩되므로 데이터를 복호화하는 데 동일한 암호화 컨텍스트가 필요합니다.

암호화 컨텍스트는 암호가 아니며 암호화되지 않습니다. [AWS CloudTrail 로그](logging-using-cloudtrail.md)에 일반 텍스트로 표시되므로 암호화 작업을 식별하고 분류하는 데 사용할 수 있습니다. 암호화 컨텍스트에 민감한 정보가 포함되어서는 안 됩니다. 암호화 컨텍스트가 암호화 또는 해독되는 데이터를 설명하는 것이 좋습니다. 예를 들어 파일을 암호화하는 경우, 파일 경로의 일부를 암호화 컨텍스트로 사용할 수 있습니다.

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

예를 들어 [Amazon Elastic Block Store](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)(Amazon EBS) [CreateSnapshot](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSnapshot.html) 작업으로 생성된 볼륨 및 스냅샷을 암호화할 때 Amazon EBS는 볼륨 ID를 암호화 컨텍스트 값으로 사용합니다.

```
"encryptionContext": {
  "aws:ebs:id": "vol-abcde12345abc1234"
}
```

암호화 컨텍스트를 사용하여 계정 AWS KMS keys 의에 대한 액세스를 구체화하거나 제한할 수도 있습니다. 암호화 컨텍스트를 [권한 부여의 제약 조건으로](grants.md) 그리고 *[정책문의 조건](policy-conditions.md)*으로 사용할 수 있습니다. 암호화 컨텍스트 키와 그 값은 `aws`를 포함하는 임의의 문자열이 될 수 있습니다. 이 값들은 [aws:cloudformation:stack-name](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-resource-tags.html) 같은 [AWS 생성 태그](https://docs.aws.amazon.com/tag-editor/latest/userguide/best-practices-and-strats.html#tag-conventions)와 대조됩니다. 자세한 내용은 [kms:EncryptionContext:*context-key*](conditions-kms.md#conditions-kms-encryption-context) 섹션을 참조하세요.

암호화 컨텍스트를 사용하여 암호화된 데이터의 무결성을 보호하는 방법을 알아보려면 AWS 보안 블로그[의 AWS Key Management Service 및 EncryptionContext를 사용하여 암호화된 데이터의 무결성을 보호하는 방법 게시물](https://aws.amazon.com/blogs/security/how-to-protect-the-integrity-of-your-encrypted-data-by-using-aws-key-management-service-and-encryptioncontext/)을 참조하세요.

## 암호화 컨텍스트 규칙
<a name="encryption-context-rules"></a>

AWS KMS 는 암호화 컨텍스트 키 및 값에 대해 다음 규칙을 적용합니다.
+ 암호화 컨텍스트 쌍의 키와 값은 단순 리터럴 문자열이어야 합니다. 정수 또는 부동 소수점과 같은 다른 형식을 사용할 경우 AWS KMS 는 이를 문자열로 해석합니다.
+ 암호화 컨텍스트의 키와 값에는 유니코드 문자가 포함될 수 있습니다. 암호화 컨텍스트에 키 정책 또는 IAM 정책에서 허용되지 않는 문자가 포함된 경우 [`kms:EncryptionContext:context-key`](conditions-kms.md#conditions-kms-encryption-context) 및 [`kms:EncryptionContextKeys`](conditions-kms.md#conditions-kms-encryption-context-keys)와 같은 정책 조건 키에 암호화 컨텍스트를 지정할 수 없습니다. 키 정책 문서 규칙에 대한 자세한 내용은 [키 정책 형식](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) 섹션을 참조하세요.

## 정책의 암호화 컨텍스트
<a name="encryption-context-authorization"></a>

암호화 컨텍스트는 주로 무결성 및 신뢰성을 확인하는 데 사용됩니다. 그러나 암호화 컨텍스트를 사용하여 키 정책 및 IAM 정책에서 대칭 암호화 AWS KMS keys 에 대한 액세스를 제어할 수도 있습니다.

[kms:EncryptionContext:](conditions-kms.md#conditions-kms-encryption-context) 및 [kms:EncryptionContextKeys](conditions-kms.md#conditions-kms-encryption-context) 조건 키는 요청에 특정 암호화 컨텍스트 키 또는 키-값 페어가 포함된 경우에만 권한을 허용(또는 거부)합니다.

예를 들어 다음 키 정책 문은 `RoleForExampleApp` 역할이 `Decrypt` 작업에 KMS 키를 사용하도록 허용합니다. 이 정책 문은 `kms:EncryptionContext:context-key` 조건 키를 사용하여 요청의 암호화 컨텍스트가 `AppName:ExampleApp` 암호화 컨텍스트 쌍을 포함하는 경우에만 이 권한을 허용합니다.

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

이러한 암호화 컨텍스트 키에 대한 자세한 내용은 [에 대한 조건 키 AWS KMS](policy-conditions.md) 섹션을 참조하세요.

## 권한 부여의 암호화 컨텍스트
<a name="encryption-context-grants"></a>

[권한 부여를 생성할](grants.md) 때 [권한 부여 권한에 대한 조건을 설정하는 권한 부여 제약 조건을](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html) 포함할 수 있습니다.는 두 개의 권한 부여 제약 조건인 `EncryptionContextEquals` 및를 AWS KMS 지원하며`EncryptionContextSubset`, 둘 다 암호화 작업에 대한 요청에 [암호화 컨텍스트](#encrypt_context)를 포함합니다. 이러한 권한 부여 제약 조건을 사용할 때 암호화 작업에 대한 요청의 암호화 컨텍스트가 권한 부여 제약 조건의 요구 사항을 충족하는 경우에만 권한이 유효합니다.

예를 들어, [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 작업을 허용하는 권한 부여에 `EncryptionContextEquals` 권한 부여 제약 조건을 추가할 수 있습니다. 이 제약 조건에서 권한 부여는 요청의 암호화 컨텍스트가 권한 부여 제약 조건의 암호화 컨텍스트와 대소문자 구분이 일치하는 경우에만 작업을 허용합니다.

```
$ aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:user/exampleUser \
    --retiring-principal arn:aws:iam::111122223333:role/adminRole \
    --operations GenerateDataKey \
    --constraints EncryptionContextEquals={Purpose=Test}
```

피부여자 보안 주체의 다음과 같은 요청은 `EncryptionContextEquals` 제약 조건을 충족합니다.

```
$ aws kms generate-data-key \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --key-spec AES_256 \
    --encryption-context Purpose=Test
```

권한 부여 제약 조건에 대한 자세한 내용은 [권한 부여 제약 사용](create-grant-overview.md#grant-constraints) 섹션을 참조하세요. 권한 부여에 대한 자세한 내용은 [의 권한 부여 AWS KMS](grants.md) 섹션을 참조하세요.

## 암호화 컨텍스트 로깅
<a name="encryption-context-auditing"></a>

AWS KMS 는 AWS CloudTrail 를 사용하여 암호화 컨텍스트를 로깅하므로 액세스한 KMS 키와 데이터를 확인할 수 있습니다. 이 로그 항목은 로그 항목에서 암호화 컨텍스트에서 참조한 특정 데이터를 암호화하거나 해독하기 위해 정확히 어떤 KMS 키가 사용되었는지 보여줍니다.

**중요**  
암호화 컨텍스트가 로깅되기 때문에 민감한 정보가 포함될 수 없습니다.

## 암호화 컨텍스트 저장
<a name="encryption-context-storing"></a>

[https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 또는 [https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) 작업 호출 시 암호화 컨텍스트 사용을 간소화하기 위해 암호화된 데이터와 함께 암호화 컨텍스트를 저장할 수 있습니다. 암호화 또는 해독을 위해 필요할 때 전체 암호화 컨텍스트를 만드는 데 도움이 되는 암호화 컨텍스트만 저장하는 것이 좋습니다.

예를 들어 암호화 컨텍스트가 파일의 정규화된 경로인 경우 해당 경로의 일부만 암호화된 파일 내용과 함께 저장합니다. 그런 다음 전체 암호화 컨텍스트가 필요할 때 저장된 조각으로부터 다시 구성합니다. 파일 이름을 변경하거나 다른 위치로 이동하는 등 파일을 변조하면 암호화 컨텍스트 값이 변경되고 해독 요청이 실패합니다.