[라이프스토리] AWS 환불 후기
안녕하세요? 정리하는 개발자 워니즈입니다. 이번 포스팅은 정말… 기억하고 싶지 않지만 기억을 해야만 하는 다시는 발생하지 않게 해야되는 사건(?)을 포스팅 하고자 합니다. 처음 겪는 일이기도하고, 바로바로 해결을 보고 싶은 마음에 굉장히 노심초사했던 일화였습니다.
1. 사건의 발단
필자가 가족을 데리고 운전을 해서 집으로 향하던 길이였습니다. 애기와 함께 뒤에 앉아있던 와이프로부터 청천벽력 같은 이야기를 듣게 됩니다.
AWS…? 여기서 뭐 구매했어? 270만원이 결재 됐어.
이거 뭐야..?
제가 AWS를 이용해서 토이 프로젝트등 여러가지를 하고 있었고 계정도 여러개를 보유하고있었습니다. 분명이 어디선가 문제가 생긴것이라는 것을 직감하게 됐습니다. 하지만, 270만원..? 🤦 이것은 해도 해도 너무 한것이 아닌가 하는 생각이 들었습니다.
고작 일개 개발자로 AWS조금 이용하려고 했던 마음이였는데 AWS가 이런 개미들의 마음을 후벼파는것인가..? 하는 생각이 갑자기 들었습니다.
운전대를 잡고, 머릿속으로는 복잡한 연산이 시작되었습니다. 도저히 어디서 무엇이 잘못되었는지 감이 잡히지가 않아, 당장 집으로 향해서 해결을 보기로 했습니다.
2. 사건의 전개
비인가자에 의해 생성된 서비스 삭제
컴퓨터 앞에 서자마자, 불현듯 여러개의 계정중에서 어떤것이 문제인지 차근차근 확인을 하기 시작했습니다. 제일 의심스럽던 계정에서는 다행히 별일이 없었습니다. 최신의 계정순서로 하나씩 뒤져보다가 결국 2년전에 AWS 자격증을 취득하기 위해 만들었던 계정에서 문제가 발생을 했다는 것을 알았습니다.
후…어떤 녀석인지…5개의 Region에 ECS(Elastic Container Service)를 생성해두었습니다. 여기서 과금이 제일 크게 발생을 했고, 나머지는 Lightsail쪽에서 소규모로 발생을 했습니다.
우선 현재도 요금이 발생을 하고있어서 서비스를 모두 삭제하기로했습니다.
각 Region별로 접속해서 ECS서비스를 삭제하면서도, 한편으로는 다행인것은 어떻게 보면 탈취한 계정에서 막무가내로 좀더 크게 한탕을 쳤을수도있었을텐데 고작 270만원이구나…하면서도 긍정적으로 생각하기로 했습니다.
AWS Support 문의
서비스는 삭제가 되어 더이상 과금이 안되는 상황까진 되었고, AWS Support에 문의를 통해서 과금에 대한 환불을 요청하기로했습니다.
엇..? 그런데 AWS Support Center 로 접속을 하니, 이미 AWS에서 비인가 사용자로 의심이 된다면서 제 계정에 대해서 차단 작업을 하는 내용의 글이 있었습니다. 뒤늦게 알았지만, 해당 내용이 메일로 왔음에도 불구하고 제가 놓쳤던 것 같습니다.
2022년 6월 29일
AWS 계정이 손상될 수 있습니다. 다음 통지를 검토하고 계정을 보호하기 위해 즉시 조치를 취하십시오.
이 계정 손상으로 인해 사용자 계정(다른 계정 사용자 포함)에 보안 위험이 발생하며, 무단 작업으로 인해 과도한 요금이 부과될 수 있습니다. 과도한 요금으로부터 계정을 보호하기 위해 일부 AWS 서비스를 사용할 수 있는 기능을 일시적으로 제한했습니다. 제한을 제거하려면 아래 지침을 따르십시오.
무단 사용이 중지되지 않으면 AWS 계정을 정지할 수 있습니다. 또한 5일 이내에 AWS에 연락하지 않을 경우 무단 사용 및 요금 청구로부터 사용자를 보호하기 위해 계정이 정지되고 AWS 서비스가 중단될 수 있습니다. 귀하의 계정을 과도한 요금으로부터 더욱 보호하기 위해 당사는 귀하의 계정에서 의심되는 무단 리소스를 종료할 수 있습니다.
계정이 보호되고 무단 액세스 또는 사용이 없다고 생각되는 경우 지원 사례를 통해 즉시 문의하십시오.
어떻게 보면, 정말 친절하게도 먼저 탐지를 하고나서 사용자에게 고지를 했음에도 불구하고 제가 놓쳤기때문에 책임이 저한테 있기도 했습니다. 😭
그리고 다음의 지침을 알려주었습니다.
1단계: AWS 루트 계정 암호를 변경합니다.
2단계: CloudTrail 로그에서 허가되지 않은 IAM 사용자, 정책, 역할 또는 임시 보안 자격 증명 생성과 같은 허가되지 않은 활동이 있는지 확인합니다.
3단계. 다음 작업을 수행하여 무단 AWS 사용 여부를 확인합니다.
– CloudTrail 로그 확인
– “청구서” 페이지를 확인하십시오. https://console.aws.amazon.com/billing/home#/bill
– 비용 탐색기 확인: https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/ce-what-is.html
우선 root pw를 빠르게 변경했고, 이후에 IAM 사용자도 모두 삭제 했습니다. 계정이 탈취된것은 맞으므로 이부분을 차단하고나서 AWS 측에 다시 환불 요청을 했습니다.
2022년 7월 4일
저는 여러번 AWS측에 환불 요청과 비인가 사용자에 대해 이후 조치에 대해서 지속적으로 물었고, 다음과 같은 답변을 받았습니다.
귀하의 AWS 계정의 보안과 이 무단 액세스로 인해 발생하는 요금에 대해 우려하신 것으로 알고 있습니다.
안심하십시오. 계정을 보안으로 설정한 후 청구 관련 문제를 해결하기 위해 귀하를 대신하여 청구 팀을 내부적으로 참여시키겠습니다.
서비스 팀에서 연락이 오는 대로 업데이트해 드리겠습니다.
이와 관련하여 지속적인 인내와 이해를 부탁드립니다.
너무 심했나 싶을정도로 여러차례 요청을 보냈고, 그때마다 AWS측에서는 기다려달라는 답변을 보냈습니다.
2022년 7월 7일
기다림의 연속이던 와중에 AWS측으로부터 추가적인 조치 사항에 대해서 가이드를 안내해주었습니다.
AWS 계정을 보호해주셔서 감사합니다.
저희 청구서 조정 팀이 승인하지 않은 사용량에 대한 요금을 검토할 것입니다. 이렇게 하려면 먼저 다음 단계를 수행하여 유사한 문제가 다시 발생하지 않도록 해야 합니다.
- 비용 및 사용량을 모니터링하려면 다음 서비스 중 두 개 이상을 설정해야 합니다.
- (권장) 비용 예산: https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-managing-costs.html
- (권장) CloudWatch 청구 경보: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/gs_monitor_estimated_charges_with_cloudwatch.html#gs_creating_billing_alarm
- 다음 보안 모범 사례 중 하나 이상을 설정해야 합니다.
- (권장) MFA: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_enable.html
- AWS 고객 계약 및 공유 책임 모델을 읽었는지 확인합니다.
https://aws.amazon.com/agreement/
https://aws.amazon.com/compliance/shared-responsibility-model/
- 지원 사례에 응답하고 어떤 두 가지 비용 및 사용량 모니터링 서비스를 설정했는지 확인합니다. 계정에 대해 설정된 보안 모범 사례도 포함합니다.
비용에 대한 모니터링, 계정에 대한 보호(MFA), 공동 책임 모델 숙지 이후 응답을 하는 방식으로 답변을 다시 달았습니다. 그런데 여기서 찜찜한것은 공동 책임 모델이 이상하게 느껴졌습니다. 혹시자 책임이 나한테도 있으니 일부만 환불해준다던지…그런생각들이 들기 시작했습니다.
이후 추가적인 답변이 바로 왔습니다.
계정을 다시 보호하기 위해 필요한 조치를 취했는지 확인했습니다. 계정에 대한 모든 제한이 해제되었습니다.아래의 액세스 키 관리 모범 사례를 따르는 것이 좋습니다.
- http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html
당신의 편의를 위해, 저는 이 case을 해결했습니다. 추가 조치는 필요하지 않습니다.
응????? 이 case를 resolve(해결)처리 하겠다고??? 야야야….안돼!!! 😵💫
바로 환불에 대한 이야기를 다시 꺼냈더니, 다음의 답장이 바로 왔습니다.
이전 답변에서 누락되어 죄송합니다.
우리는 이미 승인되지 않은 리소스와 관련된 청구 문제를 검토하기 위해 청구 팀을 고용했습니다.이 시점에서 귀사에서 추가 조치가 필요하지 않습니다.
청구 팀에서 업데이트되는 대로 계속 알려 드리겠습니다.
이와 관련하여 지속적인 인내와 이해를 부탁드립니다.
휴…이제 기다리기만 하면 알아서 환불이 되겠구나….하고 생각하고 기다리기로 했습니다.
3. 사건의 절정
자자, 이제 환불 메일만 받으면 끝이다! 하는 생각에 기다림도 잠시, 금요일인데도 계속해서 조치하라는 내용의 메일이 왔습니다.
2022년 7월 8일
보류 중인 청구 검토 요청과 관련하여 청구 팀에서 업데이트한 내용을 추적하고 있습니다. 아래 피드백을 확인하십시오.
- 경보 설정이 “INSUFFECT_DATA” 상태임을 알 수 있습니다. 이 알람은 이벤트 발생 시 경고하지 않습니다. 다음과 같이 구성하십시오.
1) 콘솔에 로그인합니다. https://us-east-1.console.aws.amazon.com/cloudwatch/home?region=us-east-1#
2) 경보 > 모든 경보를 선택합니다.
3) 생성된 경보를 선택합니다.
4) 오른쪽 상단 모서리에서 “액션”을 클릭합니다. 드롭다운 메뉴가 나타나면 “편집”을 클릭합니다.
5) 편집 옵션에 도달하면 아래로 스크롤하여 “기간”을 6시간으로 변경합니다.
- 여기서 경보(2)를 삭제하십시오. https://ap-northeast-2.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-2#alarmsV2:
다음을 검토하고 확인하십시오.
로그인: https://us-east-1.console.aws.amazon.com/ec2/v2/home?region=us-east-1#Home:
a) 계정에 활성 상태로 남아 있는 모든 EC2(기본값이 아닌) Security Group이 인증됩니까? 권한이 없는 경우 삭제하십시오.
b) 계정에 활성 상태로 남아 있는 모든 EC2 키 쌍이 승인되었습니까? 권한이 없는 경우 삭제하십시오.
경보에 대한 설정 및 삭제, 남아있는 세팅의 삭제(VPC, Key pair, Security Group etc)에 대해서 있었고, 하면서도 현재 비용발생하고는 무관하다는 생각과 동시에 지시하는 말에 대해서 잘들어야 환불해줄거 같은 느낌…도 들고 일주일때 지속되는 이감정의 싸움에 얼른 끝내고 싶었습니다.
권장 작업을 완료해 주셔서 감사합니다.
청구 팀에 통보했으며 업데이트되는 대로 계속 알려 드리겠습니다.
이와 관련하여 지속적인 인내와 이해를 부탁드립니다.
계속해서 기다리라는 답변을 받은 채, 주말을 맞이하게 되었습니다. 어쨋든 뭔가 계속 지침에 대해서 이행을 했으니, 환불을 해주겠거니 생각하며 주말을 보내기로 했습니다.
4. 사건의 결말
월요일이 되었고, AWS Support 직원들도 근무를 시작할것이라고 생각했습니다. 이토록 누군가의 답장을 기다린적이 최근들어 거의 처음인 것 같았습니다.
오후가 되어서야 다음 답장을 받게 되었습니다.
2022년 7월 12일
AWS 고객 계약의 일부로, 고객은 자신의 계정에서 발생하는 모든 활동에 대해 책임을 집니다. 여기에는 AWS 서비스 사용에 대한 모든 해당 수수료 및 요금이 포함됩니다.
예외적으로 2,139.53달러를 환불해 드렸습니다.
환불은 결제 시 사용한 카드 또는 은행 계좌로 반환됩니다. 환불은 영업일 기준 최대 7일이 소요될 수 있습니다. 은행별로 처리 시간이 다르기 때문에 환불이 예상되는 날짜는 알려드릴 수 없습니다.
콘솔에서 환불을 확인할 수 있습니다.
우리는 또한 24.04 USD의 크레딧을 승인했고 당신의 AWS 계정에 적용했습니다. 크레딧은 적용되는 서비스 요금을 자동으로 흡수합니다. 크레딧으로 인해 서비스 요금이 줄어들기 때문에 총 세금 금액이 업데이트됩니다.
와!!! 6월분에 대해서 결재 되었던 금액은 환불 처리를 해주었고, 7월분에 대해서는 credit을 통해서 과금 결제가 안되도록 해결을 해주었습니다.
그리고 제 메일로 들어가서 보니, 취소되었다는 전표 메일이 있었습니다.
5. 결론
결론적으로, 계정에 대해서 탈취 당하거나 혹은 본인의 실수로 일부 서버로 부터 과금이 되는 것은 1회성에 대해서는 이해를 해주고 AWS측에서 해결을 해준다는 것을 알았습니다.
하지만, 이번일을 계기고 무엇보다도 계정의 보안에 대해서 다시한번 생각하게 되었고, 웬만하면 MFA를 설정하거나 접속 이력에 대해서 알 수 있게끔 조치만 해두어도 지금과 같은 일들은 안당할 거 같습니다.
좋은 경험이였고, 다시한번 AWS를 Respect 하게 되었습니다. 덕분에 서버도 열심히 잘쓰고있는데 이렇게 이해하고 넘어가주는 모습이 너무 멋졌습니다. 😄