기동 중인 EC2 인스턴스의 EBS 암호화를 변경할 수 있는 방법을 찾아봤습니다.

기동 중인 EC2 인스턴스의 EBS 암호화를 변경할 수 있는 방법을 찾아봤습니다.
2023.12.16

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 기동 중인 EC2 인스턴스의 EBS 암호화를 변경할 수 있는 방법을 찾아봤습니다.

볼륨 암호화 확인

EBS에서 볼륨을 선택했더니「암호화되지 않음」문구를 확인했습니다.

볼륨 수정으로 변경하고자 했지만, 암호화 관련 옵션은 확인할 수 없었습니다.

CloudFormation으로 수정 가능할까?

BlockDeviceMappings:
        - DeviceName: /dev/xvda
          Ebs:
            VolumeSize: 8
            VolumeType: gp2
            Encrypted: true

테스트를 위해 Encrypted: true 를 넣고 CloudFormation 스택을 업데이트해 봤습니다.

결과적으로는 암호화가 된 상태의 볼륨을 확인할 수 있었지만, 문제가 하나 발생했습니다.

CloudFormation 스택 이벤트를 확인해 보면, 기존 EC2 인스턴스를 삭제하고, 새로운 인스턴스를 생성하는 것을 확인할 수 있습니다.

즉 볼륨 암호화 설정을 위해 EC2 인스턴스를 재구축한다는 의미입니다.

만약 실제로 배포되고 있는 프로덕션 환경이라고 하면 엄청난 문제가 발생할 수 있기 때문에 CloudFormation 스택 업데이트를 통한 방법은 아직 배포되기 전 단계 혹은 이제 막 구축을 시작한 단계에서 EC2 인스턴스를 재구축해도 문제가 없는 환경에서 사용하는 것을 권장합니다.

AWS CLI로는 가능할까?

아쉽게도 AWS CLI에서는 기동 중인 EC2 인스턴스의 볼륨의 암호화 변경을 지원하지 않습니다.

CLI로 가능한 작업은 다음과 같습니다.

  • 볼륨 크기 증가
  • 성능 변경
  • 볼륨 유형 변경

자세한 내용은 아래 공식 문서를 확인해 주세요.

현재 EBS 볼륨의 암호화는 false가 디폴트 설정으로 되어있지만, AWS CLI를 통해 암호화 설정의 디폴트 값을 true로 변경할 수는 있습니다.

자세한 내용은 아래 문서를 참고해 주세요.

스냅샷을 이용해 EBS를 복원

그렇다면 남은 방법은 스냅샷을 이용하여, EBS를 복원할 때 암호화를 설정하는 방법 밖에 없습니다.

루트 볼륨을 교체할 경우 EC2 인스턴스를 중지할 필요가 있습니다.

스냅샷이 존재하지 않는 상태라면, EBS 볼륨으로 들어와 스냅샷을 생성합니다.

스냅샷 생성에 특별한 설정은 없습니다.

설명 혹은 태그를 추가하고 스냅샷 생성을 진행합니다.

스냅샷 생성이 진행되는 동안, 기존 볼륨을 분리합니다.

※ 볼륨을 분리하고 바로 삭제를 진행해도 상관은 없지만, 스냅샷을 통해 볼륨을 교체하기 전까지는 만약을 위해 남겨둡니다. 그리고 볼륨을 교체할 시, 디바이스 이름을 물어보기 때문에 기존 볼륨의 디바이스 이름을 확인할 필요가 있습니다.

이어서 스냅샷에서 볼륨을 생성합니다.

암호화에서「이 볼륨을 암호화」를 체크하고, 볼륨을 생성합니다.

생성된 볼륨을 확인해 보면, 암호화가 된 상태임을 확인할 수 있습니다.

이제 암호화된 볼륨을 기존 EC2 인스턴스에 연결합니다.

  • 연결할 대상 EC2 인스턴스를 선택합니다.
  • 디바이스 이름을 입력합니다.
  • 「볼륨 연결」을 클릭합니다.

마지막으로 EC2 인스턴스에서 볼륨을 확인해 보면, 암호화된 볼륨이 연결된 것을 확인할 수 있습니다.

※ 남겨둔 이전 볼륨의 경우 필요가 없다면 삭제를 진행합니다.

현재 볼륨 암호화의 경우 기동 중인 EC2 인스턴스에서 변경을 하고자 한다면, 스냅샷을 통해 새로 생성하는 방법밖에 없으므로 EC2 인스턴스를 생성할 때 꼼꼼하게 확인할 필요가 있겠습니다.

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 kim.jaewook@classmethod.jp 로 연락 주시면 회신 드릴 수 있도록 하겠습니다 !