Amazon WorkMail에서 AWS KMS 사용 방법 - AWS Key Management Service

Amazon WorkMail에서 AWS KMS 사용 방법

이 주제는 Amazon WorkMail에서 AWS KMS를 이용해 이메일 메시지를 암호화하는 방식을 논의합니다.

Amazon WorkMail 개요

Amazon WorkMail은 기존 데스크톱 및 모바일 이메일 클라이언트를 지원하는 안전한 관리형 비즈니스 이메일 및 일정 서비스입니다. Amazon WorkMail 조직을 생성하고 여기에 현재 보유한 하나 이상의 이메일 도메인을 할당할 수 있습니다. 그런 다음 조직 내 이메일 사용자와 배포 그룹을 위해 사서함을 생성할 수 있습니다.

Amazon WorkMail은 모든 Amazon WorkMail 조직의 사서함에서 모든 메시지를 투명하게 암호화한 후 디스크에 메시지를 기록하고, 사용자가 메시지에 액세스하면 투명하게 메시지를 복호화합니다. 암호화를 비활성화할 수는 없습니다. 메시지를 보호하는 암호화 키를 보호하기 위해 Amazon WorkMail이 AWS Key Management Service(AWS KMS)와 통합됩니다.

또한 Amazon WorkMail은 사용자가 서명된 또는 암호화된 이메일을 전송할 수 있는 옵션을 제공합니다. 이 암호화 기능은 AWS KMS를 사용하지 않습니다.

Amazon WorkMail 암호화

Amazon WorkMail에서 각 조직은 조직 내 사용자마다 하나씩 여러 사서함을 포함할 수 있습니다. 이메일 및 일정 항목을 포함하여 모든 메시지는 사용자의 사서함에 저장됩니다.

Amazon WorkMail 조직 내 사서함의 내용을 보호하기 위해 Amazon WorkMail은 모든 사서함 메시지를 암호화한 후 디스크에 기록합니다. 고객이 제공하는 정보는 일반 텍스트로 저장되지 않습니다.

각 메시지는 고유한 데이터 암호화 키로 암호화됩니다. 메시지 키는 해당 사서함에서만 사용되는 고유한 암호화 키인 사서함 키로 보호됩니다. 사서함 키는 조직의 AWS KMS key로 암호화되며 이 키는 암호화되지 않은 상태에서 절대로 AWS KMS를 벗어나지 않습니다. 다음 다이어그램은 AWS KMS에서 암호화된 메시지, 암호화된 메시지 키, 조직 KMS 키 사이의 관계를 보여줍니다.


        Amazon WorkMail 사서함 암호화

조직에 대한 KMS 키

Amazon WorkMail 조직을 생성할 때 조직의 AWS KMS key를 선택할 수 있습니다. 이 KMS 키는 해당 조직의 모든 사서함 키를 보호합니다.

빠른 설정 절차를 사용하여 조직을 생성하는 경우 Amazon WorkMail은 AWS 계정에서Amazon WorkMail(aws/workmail)에 AWS 관리형 키를 사용합니다. 표준 설정을 사용하는 경우 Amazon WorkMail에 대해 AWS 관리형 키를 선택하거나 소유 및 관리하는 고객 관리형 키를 선택할 수 있습니다. 각 조직에 동일한 KMS 키 또는 다른 KMS 키를 선택할 수 있지만, 일단 선택한 KMS 키는 변경할 수 없습니다.

중요

Amazon WorkMail은 대칭 암호화 KMS 키만 지원합니다. 비대칭 KMS 키를 사용하여 Amazon WorkMail에서 데이터를 암호화할 수 없습니다. KMS 키가 대칭 또는 비대칭인지 여부를 확인하는 방법은 비대칭 KMS 키 식별 섹션을 참조하세요.

조직의 KMS 키를 찾으려면 AWS KMS에 대한 호출을 기록하는 AWS CloudTrail 로그 항목을 사용합니다.

각 사서함마다 고유한 암호화 키

새 사서함을 생성할 때 Amazon WorkMail은 AWS KMS 외부에서 사서함 키로 알려진 고유한 256비트 고급 암호화 표준(AES) 대칭 암호화 키를 생성합니다. Amazon WorkMail은 사서함 키를 사용하여 사서함에 있는 각 메시지에 대한 암호화 키를 보호합니다.

사서함 키를 보호하기 위해 Amazon WorkMail은 AWS KMS를 호출하여 조직 KMS 키로 사서함 키를 암호화합니다. 그런 다음 암호화된 사서함 키를 사서함 메타데이터에 저장합니다.

참고

Amazon WorkMail은 대칭 사서함 암호화 키를 사용하여 메시지 키를 보호합니다. 이전에는 Amazon WorkMail이 비대칭 키 페어를 사용하여 각 사서함을 보호했습니다. 즉, 퍼블릭 키를 사용하여 각 메시지 키를 보호하고 프라이빗 키를 사용하여 해독했습니다. 프라이빗 사서함 키는 조직 KMS 키로 보호되었습니다. 기존 사서함이 아직 비대칭 사서함 키 페어를 사용할 수 있습니다. 이 변경 사항은 사서함 또는 그 안의 메시지의 보안에 영향을 미치지 않습니다.

각 메시지마다 고유한 암호화 키

사서함에 메시지가 추가되면 Amazon WorkMail이 AWS KMS 외부의 메시지에 대해 고유한 256비트 AES 대칭 암호화 키를 생성합니다. 이 메시지 키를 사용하여 메시지를 암호화합니다. Amazon WorkMail은 사서함 키로 메시지 키를 암호화하여 암호화된 메시지 키를 메시지와 함께 저장합니다. 그런 다음 조직 KMS 키로 사서함 키를 암호화합니다.

새 사서함 생성

Amazon WorkMail은 새 사서함을 생성할 때 다음 프로세스를 사용하여 사서함이 암호화된 메시지를 보관할 수 있게 준비합니다.

  • Amazon WorkMail은 AWS KMS 외부의 사서함에 대해 고유한 256비트 AES 대칭 암호화 키를 생성합니다.

  • Amazon WorkMail은 AWS KMS Encrypt 작업을 사용합니다. 이 작업은 사서함 키와 조직의 AWS KMS key 식별자를 전달합니다. AWS KMS는 KMS 키로 암호화된 사서함 키의 암호화 텍스트를 반환합니다.

  • Amazon WorkMail은 암호화된 사서함 키를 사서함 메타데이터와 함께 저장합니다.

사서함 메시지 암호화

메시지를 암호화하기 위해 Amazon WorkMail은 다음 프로세스를 사용합니다.

  1. Amazon WorkMail은 메시지에 대해 고유한 256비트 AES 대칭 키를 생성합니다. 그런 다음 일반 텍스트 메시지 키와 고급 암호화 표준(AES) 알고리즘을 사용하여 AWS KMS 외부의 메시지를 암호화합니다.

  2. 사서함 키 아래의 메시지 키를 보호하기 위해 Amazon WorkMail은 항상 암호화된 형식으로 저장되는 사서함 키를 복호화해야 합니다.

    Amazon WorkMail은 AWS KMS Decrypt 작업을 호출하여 암호화된 사서함 키를 전달합니다. AWS KMS는 조직 KMS 키를 사용하여 사서함 키를 해제한 후 일반 텍스트 사서함 키를 Amazon WorkMail에 반환합니다.

  3. Amazon WorkMail은 일반 텍스트 사서함 키와 고급 암호화 표준(AES) 알고리즘을 사용하여 AWS KMS 외부의 메시지 키를 암호화합니다.

  4. Amazon WorkMail은 암호화된 메시지를 복호화할 때 사용할 수 있도록 암호화된 메시지 키를 암호화된 메시지의 메타데이터에 저장합니다.

사서함 메시지 해독

메시지를 암호화하기 위해 Amazon WorkMail은 다음 프로세스를 사용합니다.

  1. Amazon WorkMail은 AWS KMS Decrypt 작업을 호출하여 암호화된 사서함 키를 전달합니다. AWS KMS는 조직 KMS 키를 사용하여 사서함 키를 해제한 후 일반 텍스트 사서함 키를 Amazon WorkMail에 반환합니다.

  2. Amazon WorkMail은 일반 텍스트 사서함 키와 Advanced Encryption Standard(AES) 알고리즘을 사용하여 AWS KMS 외부에서 암호화된 메시지 키를 복호화합니다.

  3. Amazon WorkMail은 일반 텍스트 메시지 키를 사용하여 암호화된 메시지를 복호화합니다.

사서함 키 캐싱

성능을 개선하고 AWS KMS 호출을 최소화하기 위해, Amazon WorkMail은 각 클라이언트의 일반 텍스트 사서함 키를 각각 최대 1분 동안 로컬에 캐싱합니다. 캐싱 기간이 만료되면 사서함 키가 제거됩니다. 해당 클라이언트의 사서함 키가 캐싱 기간 도중 필요한 경우 Amazon WorkMail은 AWS KMS를 호출하는 대신 캐시에서 가져올 수 있습니다. 사서함 키는 캐시에서 보호되며 절대로 일반 텍스트로 디스크에 기록되지 않습니다.

KMS 키 사용 권한 부여

Amazon WorkMail은 암호화 작업에서 AWS KMS key를 사용할 때 사서함 관리자를 대신하여 작업을 수행합니다.

관리자를 대신하여 암호에 대해 AWS KMS key를 사용하려면 관리자에게 다음 권한이 있어야 합니다. IAM 정책이나 키 정책에서 이러한 필수 권한을 지정할 수 있습니다.

  • kms:Encrypt

  • kms:Decrypt

  • kms:CreateGrant

Amazon WorkMail에서 발생한 요청에 대해서만 KMS 키를 사용할 수 있도록 하려면 kms:ViaService 조건 키를 workmail.<region>.amazonaws.com 값과 함께 사용할 수 있습니다.

암호화 작업에 대한 KMS 키 사용 조건으로서 암호화 컨텍스트에서 키나 값을 사용할 수도 있습니다. 예를 들면 IAM 또는 키 정책 문서에서 문자열 조건 연산자를 사용하거나 권한 부여에서 권한 부여 제약을 사용할 수 있습니다.

AWS 관리형 키에 대한 키 정책

Amazon WorkMail용 AWS 관리형 키에 대한 키 정책은 Amazon WorkMail에서 사용자를 대신하여 요청할 때만 지정된 작업에 대해 KMS 키를 사용할 수 있는 권한을 사용자에게 부여합니다. 키 정책에서는 사용자가 KMS 키를 직접 사용하도록 허용하지 않습니다.

이 키 정책은 모든 AWS 관리형 키의 정책처럼 서비스에 의해 설정됩니다. 키 정책은 변경할 수 없지만 언제든지 볼 수 있습니다. 자세한 내용은 키 정책 보기 단원을 참조하세요.

키 정책의 정책 설명문은 다음 효과를 갖습니다.

  • 계정 및 리전 내 사용자가 Amazon WorkMail을 통해 대신 요청할 때만 암호화 작업에 대해 KMS 키를 사용하고 권한 부여를 생성할 수 있도록 합니다. kms:ViaService 조건 키는 이 제한을 강제 적용합니다.

  • AWS 계정에서 사용자가 KMS 키 속성을 보고 권한 부여를 취소하도록 허용하는 IAM 정책을 생성할 수 있도록 합니다.

다음은 Amazon WorkMail용 AWS 관리형 키 예제에 대한 키 정책입니다.

{ "Version" : "2012-10-17", "Id" : "auto-workmail-1", "Statement" : [ { "Sid" : "Allow access through WorkMail for all principals in the account that are authorized to use WorkMail", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:Decrypt", "kms:CreateGrant", "kms:ReEncrypt*", "kms:DescribeKey", "kms:Encrypt" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "workmail.us-east-1.amazonaws.com", "kms:CallerAccount" : "111122223333" } } }, { "Sid" : "Allow direct access to key metadata to the account", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:Describe*", "kms:List*", "kms:Get*", "kms:RevokeGrant" ], "Resource" : "*" } ] }

권한 부여를 사용하여 Amazon WorkMail 승인

키 정책 외에, Amazon WorkMail은 권한 부여를 사용하여 각 조직의 KMS 키에 권한을 추가합니다. 계정에서 KMS 키에 대한 권한 부여를 보려면 ListGrants 작업을 사용합니다.

Amazon WorkMail은 권한 부여를 사용하여 조직의 KMS 키에 권한을 추가합니다.

  • kms:Encrypt 권한을 추가하여 Amazon WorkMail이 사서함 키를 암호화하도록 허용합니다.

  • Amazon WorkMail이 KMS 키를 사용하여 사서함 키를 복호화할 수 있도록 kms:Decrypt 권한을 추가합니다. 사서함 메시지 읽기 요청은 메시지를 읽고 있는 사용자의 보안 컨텍스트를 사용하기 때문에 Amazon WorkMail은 이 권한을 부여해야 합니다. 요청은 AWS 계정의 자격 증명을 사용하지 않습니다. Amazon WorkMail은 사용자가 조직의 KMS 키를 선택할 때 이 권한 부여를 생성합니다.

권한 부여를 생성하기 위해 Amazon WorkMail은 조직을 생성한 사용자를 대신하여 CreateGrant를 호출합니다. 권한 부여 생성 권한은 키 정책에 의해 부여됩니다. 이 정책은 Amazon WorkMail이 승인된 사용자를 대신하여 요청할 때 계정 사용자가 조직의 KMS 키에서 CreateGrant를 호출하도록 허용합니다.

또한 키 정책은 계정 루트가 AWS 관리형 키에 대한 권한 부여를 취소하도록 허용합니다. 그러나 권한 부여를 취소할 경우 Amazon WorkMail이 사서함에서 암호화된 데이터를 복호화할 수 없습니다.

Amazon WorkMail 암호화 컨텍스트

암호화 컨텍스트는 보안되지 않은 임의의 데이터를 포함하는 키-값 페어 세트입니다. 데이터 암호화 요청에 암호화 컨텍스트를 포함하는 경우, AWS KMS는 암호화된 데이터에 암호화 컨텍스트를 암호 방식으로 바인딩합니다. 따라서 동일한 암호화 컨텍스트로 전달해야 이 데이터를 해독할 수 있습니다.

Amazon WorkMail은 모든 AWS KMS 암호화 작업에서 동일한 암호화 컨텍스트 형식을 사용합니다. 암호화 컨텍스트를 사용하여 AWS CloudTrail 같은 감사 레코드나 로그에서, 그리고 정책 및 권한 부여의 권한 부여 조건으로서, 암호화 작업을 식별할 수 있습니다.

AWS KMS에 대한 EncryptDecrypt 요청에서 Amazon WorkMail은 키가 aws:workmail:arn이고 값이 조직의 Amazon 리소스 이름(ARN)인 암호화 컨텍스트를 사용합니다.

"aws:workmail:arn":"arn:aws:workmail:region:account ID:organization/organization ID"

예를 들어 다음 암호화 컨텍스트에는 미국 동부(오하이오)(us-east-2) 리전의 예제 조직 ARN이 포함되어 있습니다.

"aws:workmail:arn":"arn:aws:workmail:us-east-2:111122223333:organization/m-68755160c4cb4e29a2b2f8fb58f359d7"

AWS KMS와 Amazon WorkMail의 상호 작용 모니터링

AWS CloudTrail 및 Amazon CloudWatch Logs를 사용하여 Amazon WorkMail이 사용자 대신 AWS KMS로 전송하는 요청을 추적할 수 있습니다.

Encrypt

새 사서함을 생성하면 Amazon WorkMail은 사서함 키를 생성하고 AWS KMS를 호출하여 사서함 키를 암호화합니다. Amazon WorkMail은 Amazon WorkMail 조직의 KMS 키 식별자와 일반 텍스트 사서함 키를 사용하여 AWS KMS에게 암호화 요청을 보냅니다.

Encrypt 작업을 기록하는 이벤트는 다음 예제 이벤트와 유사합니다. 사용자는 Amazon WorkMail 서비스입니다. 파라미터에는 Amazon WorkMail 조직에 대한 KMS 키 ID(keyId) 및 암호화 컨텍스트가 포함됩니다. Amazon WorkMail은 메일박스 키도 전달하지만 이것은 CloudTrail 로그에 기록되지 않습니다.

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSService", "invokedBy": "workmail.eu-west-1.amazonaws.com" }, "eventTime": "2019-02-19T10:01:09Z", "eventSource": "kms.amazonaws.com", "eventName": "Encrypt", "awsRegion": "eu-west-1", "sourceIPAddress": "workmail.eu-west-1.amazonaws.com", "userAgent": "workmail.eu-west-1.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:workmail:arn": "arn:aws:workmail:eu-west-1:111122223333:organization/m-c6981ff7642446fa8772ba99c690e455" }, "keyId": "arn:aws:kms:eu-west-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" }, "responseElements": null, "requestID": "76e96b96-7e24-4faf-a2d6-08ded2eaf63c", "eventID": "d5a59c18-128a-4082-aa5b-729f7734626a", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:eu-west-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333", "sharedEventID": "d08e60f1-097e-4a00-b7e9-10bc3872d50c" }

Decrypt

사서함 메시지를 추가, 확인 또는 삭제할 때 Amazon WorkMail은 AWS KMS에게 사서함 키의 암호를 복호화하도록 요청합니다. Amazon WorkMail은 암호화된 사서함 키와 Amazon WorkMail 조직의 KMS 키 식별자를 사용하여 AWS KMS에게 Decrypt 요청을 보냅니다.

Decrypt 작업을 기록하는 이벤트는 다음 예제 이벤트와 유사합니다. 사용자는 Amazon WorkMail 서비스입니다. 파라미터에는 암호화된 사서함 키(암호화 텍스트 미확인 개체)와 Amazon WorkMail 조직의 암호화 컨텍스트가 포함되며, 전자는 로그에 기록되지 않습니다. AWS KMS는 암호화 텍스트에서 KMS 키의 ID를 추출합니다.

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSService", "invokedBy": "workmail.eu-west-1.amazonaws.com" }, "eventTime": "2019-02-20T11:51:10Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "eu-west-1", "sourceIPAddress": "workmail.eu-west-1.amazonaws.com", "userAgent": "workmail.eu-west-1.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:workmail:arn": "arn:aws:workmail:eu-west-1:111122223333:organization/m-c6981ff7642446fa8772ba99c690e455" } }, "responseElements": null, "requestID": "4a32dda1-34d9-4100-9718-674b8e0782c9", "eventID": "ea9fd966-98e9-4b7b-b377-6e5a397a71de", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:eu-west-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333", "sharedEventID": "241e1e5b-ff64-427a-a5b3-7949164d0214" }