반응형
0. 개요
KMS 키의 메타데이터에는 데이터를 암호화하고 해독하는 데 사용되는 키 자료의 ID가 포함됩니다. KMS 키를 생성할 때 기본적으로 AWS KMS는 해당 KMS 키에 대한 키 자료를 생성합니다. 그러나 키 자료 없이 KMS 키를 생성한 다음 자체 키 자료를 해당 KMS 키로 가져와 사용할 수 있습니다. CLI를 통해서 KMS key 생성 및 가져오기를 보여드리도록 하겠습니다.
1. 키 자료 없이 KMS 키 생성
aws kms create-key --origin EXTERNAL
2. 256 비트 대칭 키 생성
openssl rand -out PlaintextKeyMaterial.bin 32
3. wrapping public key and import token 가져오기
export KEY=`aws kms --region *region name* get-parameters-for-import --key-id *Key ID from KMS output* --wrapping-algorithm RSAES_OAEP_SHA_256 --wrapping-key-spec RSA_2048 --query '{Key:PublicKey, Token:ImportToken}' --output text`
echo $KEY | awk '{print $1}' > PublicKey.b64
echo $KEY | awk '{print $2}' > ImportToken.b64
4. Binary 파일로 변환
openssl을 사용하여 base64로 디코딩 후 binary 파일에 저장합니다.
openssl enc -d -base64 -A -in PublicKey.b64 -out PublicKey.bin
openssl enc -d -base64 -A -in ImportToken.b64 -out ImportToken.bin
5. wrapping public key를 사용하여 키 구성 요소 암호화
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
이 과정에서 MAC OS를 사용하시는 분은 아래 에러가 발생할 수 있습니다. 그러한 이유는 MAC이 SHA-1을 RSAES-OAEP 해시 함수로 설정하였기에 에러가 발생합니다. openssl 버전을 업그레이드 또는 MAC말고 다른 OS에서 실행하시면 됩니다.(저는 Linux에서 하였습니다.)
An error occurred (InvalidCiphertextException) when calling the ImportKeyMaterial operation:
6. 암호화된 키 구성 요소 가져오기
aws kms --region $REGION import-key-material --key-id $KEY_ID --encrypted-key-material fileb://EncryptedKeyMaterial.bin --import-token fileb://ImportToken.bin --expiration-model KEY_MATERIAL_DOES_NOT_EXPIRE
반응형
'AWS' 카테고리의 다른 글
[AWS] Springboot에 Secrets Manager 연동하기 (0) | 2023.06.21 |
---|---|
[AWS] Secrets Manager를 사용한 IAM Access keys 자동 교체 (0) | 2023.06.03 |
[AWS] AWS SSO SAML with Azure (AWS IAM Identity Center) (0) | 2023.05.30 |
[AWS] Secrets Manager 강제 삭제 (0) | 2023.02.01 |
[AWS] EC2 인스턴스 Tag-based 관리 방법 - 2 (0) | 2023.01.29 |