AWS Key Management Service로 사용자의 키를 가져오려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 8월 21일

AWS 서비스에 256비트 대칭 키를 사용하려고 합니다. AWS Key Management Service(AWS KMS)에서 키 구성 요소를 가져오려면 어떻게 해야 합니까?

해결 방법

AWS KMS를 사용하면 AWS KMS에서 지원하는 AWS 서비스에 사용할 CMK(고객 마스터 키)로 키 구성 요소를 가져올 수 있습니다.

다음 단계에 따라 AWS KMS에서 키 구성 요소를 가져옵니다.

1.    키 구성 요소 없이 CMK를 생성합니다. CMK의 키 ID를 기록합니다.

참고: 키 관리 권한 정의키 사용 권한 정의의 경우 키 관리자와 키 역할을 구분하여 자격 증명 중 하나가 노출될 경우 영향을 제한하는 것이 좋습니다.

2.    OpenSSL이 설치된 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스나 로컬 시스템에서 터미널을 엽니다.

3.    다음 명령을 실행하여 256비트 대칭 키를 생성합니다.  

openssl rand -out PlaintextKeyMaterial.bin 32

4.    다음 AWS 명령줄 인터페이스(AWS CLI) 명령을 실행하여 키를 설명하고 가져오기에 대한 파라미터를 구합니다.

참고: 명령이 퍼블릭 키를 저장하고 토큰 파라미터를 변수로 가져옵니다.  

export KEY=`aws kms --region eu-west-2 get-parameters-for-import --key-id example1-2345-67ab-9123-456789abcdef --wrapping-algorithm RSAES_OAEP_SHA_256 --wrapping-key-spec RSA_2048 --query '{Key:PublicKey,Token:ImportToken}' --output text`

5.    다음 명령을 실행하여 퍼블릭 키와 가져오기 토큰을 별개의 base64로 인코딩된 파일에 저장합니다.

echo $KEY | awk '{print $1}' > PublicKey.b64
echo $KEY | awk '{print $2}' > ImportToken.b64

6.    다음 명령을 실행하여 base64로 인코딩된 파일을 가져올 이진 파일로 변환합니다.  

openssl enc -d -base64 -A -in PublicKey.b64 -out PublicKey.bin
openssl enc -d -base64 -A -in ImportToken.b64 -out ImportToken.bin

7.    다음 명령을 실행하여 이진 파일로 변환된 퍼블릭 키로 키 구성 요소를 암호화합니다.

openssl pkeyutl -in PlaintextKeyMaterial.bin -out EncryptedKeyMaterial.bin -inkey PublicKey.bin -keyform DER -pubin -encrypt -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256

8.    다음 명령을 실행하여 AWS KMS에서 암호화된 키 구성 요소를 가져옵니다.

참고: 이 예에서는 키 구성 요소가 만료되지 않도록 지정하지만 사용자가 키 구성 요소의 만료 날짜를 설정할 수 있습니다. 자세한 내용은 ExpirationModel을 참조하십시오.

aws kms --region eu-west-2 import-key-material --key-id example1-2345-67ab-9123-456789abcdef --encrypted-key-material fileb://EncryptedKeyMaterial.bin --import-token fileb://ImportToken.bin --expiration-model KEY_MATERIAL_DOES_NOT_EXPIRE

9.    IAM 콘솔에서 키를 검토하거나 DescribeKey API 작업을 실행하여 가져온 키 상태가 활성(Enabled)으로 설정되어 있는지 확인합니다.

키를 가져올 수 없는 경우 원인에 따라 다음 중 하나를 수행합니다.

  • 24시간 넘게 대기하여 가져오기 토큰이 만료되었습니다. 래핑 키를 다운로드하여 이를 해결하고 토큰을 다시 가져와서 키 구성 요소를 다시 암호화합니다.
  • 키 구성 요소는 256비트 대칭 키가 아닙니다. 암호화된 키 구성 요소의 파일 크기가 32바이트인지 확인합니다. 다음 명령 중 하나를 실행하여 파일 크기를 확인합니다.

Linux

wc -c <filename>.bin

Windows

dir <filename>.bin