

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

# Amazon SES에서 저장 데이터 암호화
<a name="encryption-rest"></a>

기본적으로 Amazon SES는 모든 저장 데이터를 암호화합니다. 기본적으로 암호화를 사용하면 데이터를 보호하는 데 수반되는 운영 오버헤드와 복잡성을 줄이는 데 도움이 됩니다. 또한 암호화를 사용하면 엄격한 암호화 규정 준수 및 규제 요구 사항을 충족하는 Mail Manager 아카이브를 만들 수 있습니다.

SES는 다음의 암호화 옵션을 제공합니다.
+ **AWS 소유 키** - SES는 기본적으로 이를 사용합니다. AWS 소유 키를 보거나 관리하거나 사용하거나 사용을 감사할 수 없습니다. 하지만 데이터를 암호화하는 키를 보호하기 위해 어떤 작업을 수행하거나 어떤 프로그램을 변경할 필요가 없습니다. 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [AWS 소유 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)를 참조하세요.
+ **고객 관리형 키** – SES는 사용자가 만들고 소유하고 관리하는 대칭형 고객 관리형 키를 사용하도록 지원합니다. 암호화를 완전히 제어할 수 있으므로 다음과 같은 태스크를 수행할 수 있습니다.
  + 키 정책 수립 및 유지
  + IAM 정책 및 권한 부여 수립 및 유지
  + 키 정책 활성화 및 비활성화
  + 키 암호화 자료 교체
  +  태그 추가
  + 키 별칭 만들기
  + 삭제를 위한 스케줄 키

  자체 키를 사용하려면 SES 리소스 생성 시 고객 관리형 키를 선택합니다.

  자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)를 참조하세요.

**참고**  
SES는 AWS 소유 키를 사용하여 저장 시 암호화를 무료로 자동으로 활성화합니다.  
그러나 고객 관리형 키 사용에는 AWS KMS 요금이 적용됩니다. 요금에 대한 자세한 내용은 [AWS Key Management Service 요금](https://aws.amazon.com/kms/pricing/)을 참조하십시오.

## 고객 관리형 키 만들기
<a name="create-key"></a>

 AWS Management Console또는 AWS KMS APIs.

**대칭 고객 관리형 키를 만들려면**

*AWS Key Management Service 개발자 안내서*의 [대칭 암호화 KMS 키 만들기](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)의 단계를 따르세요.

**참고**  
아카이빙하려면 키에서 다음 요구 사항을 충족해야 합니다.  
키는 대칭이어야 합니다.
키 구성 요소 오리진은 `AWS_KMS`여야 합니다.
키 사용은 `ENCRYPT_DECRYPT`여야 합니다.

**키 정책**

키 정책에서는 고객 관리형 키에 대한 액세스를 제어합니다. 모든 고객 관리형 키에는 키를 사용할 수 있는 사람과 키를 사용하는 방법을 결정하는 문장이 포함된 정확히 하나의 키 정책이 있어야 합니다. 고객 관리형 키를 만들 때 키 정책을 지정할 수 있습니다. 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [고객 관리형 키에 대한 액세스 관리](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html#managing-access)를 참조하세요.

Mail Manager 아카이빙에서 고객 관리형 키를 사용하려면 키 정책에서 다음 API 작업을 허용해야 합니다.
+ [kms:DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) - SES가 키를 검증할 수 있도록 고객 관리형 키 세부 정보를 제공합니다.
+ [kms:GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) – SES가 저장 데이터를 암호화하기 위한 데이터 키를 만들 수 있도록 허용합니다.
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) – SES가 저장된 데이터를 API 클라이언트로 반환하기 전에 복호화할 수 있도록 허용합니다.

다음 예제는 일반적인 키 정책을 보여줍니다.

```
{
            "Sid": "Allow SES to encrypt/decrypt",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
```

자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [정책에서의 권한 지정](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html#overview-policy-elements)을 참조하세요.

문제 해결에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [키 액세스 문제 해결](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html#example-no-iam)을 참조하세요.

## Mail Manager에 대한 고객 관리형 키 지정
<a name="enable-custom-encryption"></a>

 AWS 소유 키를 사용하는 대신 고객 관리형 키를 지정할 수 있습니다. 아카이브를 생성하거나 상호 TLS(mTLS) 인증으로 수신 엔드포인트를 구성할 때 **KMS 키 ARN을 입력하여 데이터 키를** 지정할 수 있습니다. 보관을 위해 Mail Manager는 키를 사용하여 아카이브의 모든 고객 데이터를 암호화합니다. mTLS 수신 엔드포인트의 경우 Mail Manager는 키를 사용하여 저장된 트러스트 스토어 콘텐츠를 암호화합니다.
+ **KMS 키 ARN** - AWS KMS 고객 관리형 [키의 키 식별자](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id)입니다. 키 ID, 키 ARN, 별칭 이름 또는 별칭 ARN을 입력합니다.

## Amazon SES 암호화 컨텍스트
<a name="location-encryption-context"></a>

[암호화 컨텍스트](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)는 데이터에 대한 추가 컨텍스트 정보를 포함하는 선택적 키-값 페어 세트입니다.

AWS KMS 는 암호화 컨텍스트를 추가 인증 데이터로 사용하여 인증된 암호화를 지원합니다. 데이터 암호화 요청에 암호화 컨텍스트를 포함하면는 암호화 컨텍스트를 암호화된 데이터에 AWS KMS 바인딩합니다. 요청에 동일한 암호화 컨텍스트를 포함해야 이 데이터를 해독할 수 있습니다.

**참고**  
Amazon SES는 아카이브를 만들기 위한 암호화 컨텍스트를 지원하지 않습니다. 대신 IAM 또는 KMS 정책을 사용할 수 있습니다. 예제 정책을 확인하려면 이 섹션 후반부의 [아카이브 만들기 정책](#archive-creation-policies)의 내용을 참조하세요.

**Amazon SES 암호화 컨텍스트**

SES는 모든 암호화 작업에서 동일한 암호화 컨텍스트를 사용합니다. 여기서 키는 AWS KMS `aws:ses:arn`이고 값은 리소스 [Amazon 리소스 이름](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)(ARN)입니다.

**Example**  

```
"encryptionContext": {
    "aws:ses:arn": "arn:aws:ses:us-west-2:111122223333:ExampleResourceName/ExampleResourceID"
}
```

**모니터링을 위한 암호화 컨텍스트 사용**

대칭형 고객 관리형 키를 사용하여 SES 리소스를 암호화하는 경우 감사 레코드 및 로그의 암호화 컨텍스트를 사용하여 고객 관리형 키가 사용되는 방식을 식별할 수도 있습니다. 암호화 컨텍스트는 [AWS CloudTrail 또는 Amazon CloudWatch Logs에서 생성된 로그](#example-custom-encryption)에도 표시됩니다.

**암호화 컨텍스트를 사용하여 고객 관리형 키에 대한 액세스 제어**

그러나 암호화 컨텍스트를 사용하여 키 정책 및 IAM 정책에서 대칭 `conditions`에 대한 액세스를 제어할 수도 있습니다. 또한 권한 부여에서 암호화 컨텍스트 제약 조건을 사용할 수 있습니다.

SES는 권한 부여에서 암호화 컨텍스트 제약 조건을 사용하여 계정 및 리전에서 고객 관리형 키에 대한 액세스를 제어합니다. 권한 부여 제약 조건에 따라 권한 부여가 허용하는 작업은 지정된 암호화 컨텍스트를 사용해야 합니다.

**Example**  
다음은 특정 암호화 컨텍스트에서 고객 관리형 키에 대한 액세스 권한을 부여하는 키 정책 설명의 예입니다. 이 정책 설명의 조건에 따라 권한 부여에는 암호화 컨텍스트를 지정하는 암호화 컨텍스트 제약 조건이 있어야 합니다.  

```
{
    "Sid": "Enable DescribeKey",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole"
     },
     "Action": "kms:DescribeKey",
     "Resource": "*"
},
{
     "Sid": "Enable CreateGrant",
     "Effect": "Allow",
     "Principal": {
         "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole"
     },
     "Action": "kms:CreateGrant",
     "Resource": "*",
     "Condition": {
         "StringEquals": {
             "kms:EncryptionContext:aws:ses:arn": "arn:aws:ses:us-west-2:111122223333:ExampleResourceName/ExampleResourceID"
          }
     }
}
```

## 아카이브 만들기 정책
<a name="archive-creation-policies"></a>

다음 예제 정책은 아카이브 만들기를 사용 설정하는 방법을 보여줍니다. 정책은 모든 자산에서 작동합니다.

**IAM 정책**

```
{
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "ses:CreateArchive",
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey",
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "ses.us-east-1.amazonaws.com",
                    "kms:CallerAccount": "012345678910"
                }
            }
        }
```

**AWS KMS 정책**

```
{
            "Sid": "Allow SES to encrypt/decrypt",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
```

## 수신 엔드포인트 mTLS 정책
<a name="ingress-endpoint-mtls-policies"></a>

다음 예제 정책은 고객 관리형 키를 사용하여 Mail Manager 수신 엔드포인트에서 상호 TLS(mTLS) 인증을 위한 트러스트 스토어 콘텐츠를 암호화할 수 있도록 합니다.

예제 정책의 범위를 특정 수신 엔드포인트로 지정하려면 조건의 와일드카드를 정확한 리소스 ARN(예: `arn:aws:ses:us-east-1:111122223333:mailmanager-ingress-point/inp-ab1c2defgh3ij4klmno5pq6rs`)으로 바꿉니다.

**IAM 정책**

```
{
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::111122223333:role/rolename"
    },
    "Action": [
      "kms:GenerateDataKey",
      "kms:Decrypt"
    ],
    "Resource": "*",
    "Condition": {
      "StringEquals": {
        "kms:ViaService": "ses.us-east-1.amazonaws.com"
      },
      "StringLike": {
        "kms:EncryptionContext:aws:ses:arn": [
          "arn:aws:ses:us-east-1:111122223333:mailmanager-ingress-point/*"
        ]
      }
    }
  },
  {
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::111122223333:role/rolename"
    },
    "Action": [
      "kms:DescribeKey"
    ],
    "Resource": "*",
    "Condition": {
      "StringEquals": {
        "kms:ViaService": "ses.us-east-1.amazonaws.com"
      }
    }
  }
```

**AWS KMS 정책**

```
{
    "Effect": "Allow",
    "Principal": {
      "Service": "ses.amazonaws.com"
    },
    "Action": [
      "kms:Decrypt"
    ],
    "Resource": "*",
    "Condition": {
      "StringLike": {
        "aws:SourceArn": [
          "arn:aws:ses:us-east-1:111122223333:mailmanager-ingress-point/*"
        ],
        "kms:EncryptionContext:aws:ses:arn": [
          "arn:aws:ses:us-east-1:111122223333:mailmanager-ingress-point/*"
        ]
      }
    }
  },
  {
    "Effect": "Allow",
    "Principal": {
      "Service": "ses.amazonaws.com"
    },
    "Action": [
      "kms:DescribeKey"
    ],
    "Resource": "*",
    "Condition": {
      "StringLike": {
        "aws:SourceArn": [
          "arn:aws:ses:us-east-1:111122223333:mailmanager-ingress-point/*"
        ]
      }
    }
  }
```

## Amazon SES에 대한 암호화 키 모니터링
<a name="example-custom-encryption"></a>

Amazon SES 리소스와 함께 AWS KMS 고객 관리형 키를 사용하는 경우 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 또는 [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)를 사용하여 SES가 보내는 요청을 추적할 수 있습니다 AWS KMS.

다음 예제는 고객 관리형 키로 암호화된 데이터에 액세스`DescribeKey`하기 위해 SES에서 호출한 KMS 작업을 모니터링하기 위한 `GenerateDataKey``Decrypt`, 및 AWS CloudTrail 이벤트입니다.

------
#### [ GenerateDataKey ]

리소스에 대해 AWS KMS 고객 관리형 키를 활성화하면 SES가 고유한 테이블 키를 생성합니다. 리소스에 대한 AWS KMS고객 관리 AWS KMS 형 키를 지정하는 `GenerateDataKey` 요청을에 보냅니다.

Mail Manager 아카이브 리소스에 대해 AWS KMS 고객 관리형 키를 활성화하면 저장된 아카이브 데이터를 암호화할 `GenerateDataKey` 때이 키를 사용합니다.

다음 예제 이벤트는 `GenerateDataKey` 작업을 기록합니다.

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "ses.amazonaws.com"
    },
    "eventTime": "2021-04-22T17:07:02Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "172.12.34.56",
    "userAgent": "ExampleDesktop/1.0 (V1; OS)",
    "requestParameters": {
        "encryptionContext": {
            "aws:ses:arn": "arn:aws:ses:us-west-2:111122223333:ExampleResourceName/ExampleResourceID"
        },
        "keySpec": "AES_256",
        "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
    },
    "responseElements": null,
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "recipientAccountId": "111122223333",
    "sharedEventID": "57f5dbee-16da-413e-979f-2c4c6663475e"
}
```

------
#### [ Decrypt ]

암호화된 리소스에 액세스하는 경우 SES는 저장된 암호화 데이터 키를 사용하여 암호화된 데이터에 액세스하는 `Decrypt` 작업을 직접적으로 호출합니다.

다음 예제 이벤트는 `Decrypt` 작업을 기록합니다.

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "ses.amazonaws.com"
    },
    "eventTime": "2021-04-22T17:10:51Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "172.12.34.56",
    "userAgent": "ExampleDesktop/1.0 (V1; OS)",
    "requestParameters": {
        "encryptionContext": {
            "aws:ses:arn": "arn:aws:ses:us-west-2:111122223333:ExampleResourceName/ExampleResourceID"
        },
        "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT"
    },
    "responseElements": null,
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "recipientAccountId": "111122223333",
    "sharedEventID": "dc129381-1d94-49bd-b522-f56a3482d088"
}
```

------
#### [ DescribeKey ]

SES는 `DescribeKey` 작업을 사용하여 리소스와 연결된 AWS KMS 고객 관리형 키가 계정 및 리전에 존재하는지 확인합니다.

다음 예제 이벤트는 `DescribeKey` 작업을 기록합니다.

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE3",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
                "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "webIdFederationData": {},
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "2021-04-22T17:02:00Z"
            }
        },
        "invokedBy": "ses.amazonaws.com"
    },
    "eventTime": "2021-04-22T17:07:02Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "DescribeKey",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "172.12.34.56",
    "userAgent": "ExampleDesktop/1.0 (V1; OS)",
    "requestParameters": {
        "keyId": "00dd0db0-0000-0000-ac00-b0c000SAMPLE"
    },
    "responseElements": null,
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "recipientAccountId": "111122223333"
}
```

------

## 자세히 알아보기
<a name="Learn-more-data-at-rest-encryption"></a>

다음 리소스에서 키에 대한 추가 정보를 확인할 수 있습니다.
+ [AWS Key Management Service 기본 개념](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*를 참조하세요.
+ [AWS Key Management Service의 보안 모범 사례](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html) 에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*를 참조하세요.