베하 안녕하세요 팀 비티시보이즈입니다.
해당 포스팅에서는 AWS KMS를 활용해서 파일의 내용을 암, 복호화 하는 방법에 대해서 알아 보겠습니다.
AWS KMS 개념과 특징에 대해서는 앞서 작성한 KMS 개념, 동작방식 글을 참고해주세요https://btcd.tistory.com/1071
우선 사용할 aws kms 키들을 생성 해보겠습니다.
콘솔에서 kms를 검색합니다.
이번 글에서는 고객관리형키(CMK)를 사용하기 때문에 고객 관리형 키를 생성하도록 하겠습니다.
키유형은 "대칭" 키사용은 "암호화 및 해독"의 옵션을 선택하겠습니다.
키 관리자와, 키사용자를 선택 할 수도 있습니다.
키를 생성하게 되면 콘솔에서 Key ID를 확인할 수 있는데 이 Key ID를 이용해서 AWS CLI에서 암, 복호화 및 KMS를 사용 할 수 있습니다.
KMS를 테스트할 EC2에 접속하여 aws cli최신버전을 설치 합니다.
aws cli 설치에 필요한 스크립트는 밑에 스크립트를 사용 하시면 됩니다.
sudo rm /usr/bin/aws
sudo rm /usr/bin/aws_completer
sudo rm -rf /usr/local/aws-cli
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
./aws/install -i /usr/local/aws-cli -b /usr/local/bin
#재접속 exit
aws cli를 사용하기 위해 사용자의 엑세스키와 시크릿 키를 aws configure로 등록합니다.
액세스키와 시크릿 키는 중요한 정보이니 절대 외부에 노출 되지 않도록 조심 해주세요.
KMS 테스트에 사용할 Hello BTC!! 내용을 가진 kms-test.txt 파일을 생성합니다.
암호화 작업
aws kms encrypt \
--key-id <key ID> \
--plaintext fileb://<암호화 할 파일> \
--output text \
--query CiphertextBlob | base64 \
--decode > <암호화한 내용을 저장 할 파일명>
aws cli를 이용해 암호화 하는 작업입니다.
<Key ID> 부분은 콘솔에서 앞서 만든 Key의 ID값을 입력하시면 됩니다.
모든 정보들을 입력하고 aws cli를 사용하면 ExampleEncryptedFile이 생성됩니다.
그 파일의 내용을 vi명령어로 확인 하게 되면 kms-test.txt 파일 내용이 암호화 돼 있는 것을 볼 수 있습니다.
복호화 작업
aws kms decrypt \
--ciphertext-blob fileb://<암호화 돼있는 파일명> \
--key-id <Key ID> \
--output text \
--query Plaintext | base64 \
--decode > <복호화 내용을 저장할 파일명>
복호화 작업도 마찬가지로 aws cli에 필요한 정보들을 입력한뒤 명령어를 실행 시키면 됩니다.
복호화 aws cli 명령어를 실행한후 ExamplePlaintextFile이 생성 된것을 확인 할 수 있습니다.
복호화된 ExamplePlaintextFile의 내용을 확인 해보면 kms-test.txt파일의 내용인 Hello BTC!!와 동일 한 것을 확인 할 수 있습니다.
하지만 CMK만으로 암, 복호화 하는 것은 간단하지만 4KB까지만 암, 복호화 가능 하다는 단점이 있습니다.
5KB크기를 가진 파일을 생성한뒤
5KB크기의 파일을 암호화 하는 명령어를 실행시 4KB이상은 사용할 수 없다는 에러 문구가 뜨게 됩니다.
그럼 지금까지 KMS 활용편 이었습니다.
감사합니다.
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
[EFS를 활용한 WEB/WAS 서비스 (1) | 2023.05.21 |
---|---|
[AWS] EKS Service Type 4가지 (0) | 2023.05.21 |
S3 로그를 Lambda를 통해 CLoud watch로 전송 (0) | 2023.05.19 |
[AWS] System Manager Patch Manager을 통한 인스턴스 자동업데이트 구성 (1) | 2023.05.19 |
[AWS] DataSync (0) | 2023.05.19 |
댓글