[AWS] AWS EC2 380만원 과금... 그리고 해결

Coodori·2023년 4월 1일
0

CherishU

목록 보기
16/29

같은 문제가 발생한 분들이 작성한 글이 도움이 많이 되었고 참고가 되셨으면 좋겠습니다.

문제 발생

토이프로젝트에서 AWS SES 서비스를 구현하던 도중 테스트 코드에 ACCESS_KEY와 PRIVATE_KEY가 작성된 채로 자리를 옮겨 작업을 하다가 실수로 커밋을 해버렸다... (바로 다음 커밋에서 지웠지만....의미가 없지....ㅠㅠ 1주일 내내 스트레스 받는 최초의 시발점....)
바로 메일을 비정상적인 접속을 확인한 뒤 해당 IAM 발급 받은키를 비활성화 처리를 하였다.
그리고 새로운 키를 발급하여 개발 진행을 하였다.
추 후 3일동안 다른 업무를 끝낸뒤 다시 이어서 프로젝트의 AWS 연동 개발에 착수했다.
혹시 모를 불안감에 비용 탭을 눌러보았는데...

  • 비용

보자마자 식은땀이 나고 심장이 엄청나게 뛰고 멘탈이 와장창 부서졌다.
열심히 공부하여 AWS에 대한 지식과 활용 할 수 있는 능력을 키우려고 의욕적으로 공부한다는 것이
결과가 현재 당장 제출할 수도 없는 345만원이라니.....(세금 포함 380만원.....)

이미 AWS는 털린 상태였다...

문제 과정

다양한 사람들의 사례를 찾아보고 일주일동안 모든 사례를 거의 다 찾아본 것 같다.

나 같은 경우 해당 인증키로 우리나라를 포함 모든 AWS 서버가 있는 지역에 2개의 EC2를 자동 활성화(Auto Scaling) 옵션을 비인가 사용자가 심어 놓았다.

처음에 해당 서울 인스턴스를 보고 해당 인스턴스가 문제겠거니... 하고 비인가 인스턴스 하나를 지웠고 잘 대처했다고 생각했다.
하지만 모든 리전은 각각에 대한 보고 페이지를 가지고 있으며 직접 일일히 하나씩 들어가서 지워야했다.
뒤늦게 인지한 나는 각각 리전에 가서 모든 인스턴스를 종료했다.

(하지만 Auto Scaling 구성이 되어 있어서 내가 모두 지웠다고 생각한 EC2 인스턴스들이 다시 자동 생성이 되었다.)

나는 AWS를 공부하는 입장이고 미숙하여 계속 늘어나는 비용... 계속 생성되는 EC2 그리고 사용하지 않은 비용 에 대해 더이상 혼자 할 수없다고 판단해서 메일을 들어갔다.

해당 메일이 이미 AWS보안팀에 의해 나에게 왔던 것이였다.
비정상적인 인스턴스와 비용에 대해 확인을 하려고 연락이 온 것이다.

AWS 도움 요청 !!!!

처음에는 비용에 대해서 조정 요청을 부탁드렸지만 AWS EC2가 자동생성되는(그때 당시는 Auto Scaling을 몰랐다.)현상에 대해서 도움을 요청하고자 다시 한번 메일을 보냈다.

지금 보니 진짜 긴급하고 손이 떨렸던 기억이 있다...

또한 영어를 유창하게 구사는 못해서 해당 작업을 진행하려면 의사소통이 필요할 것 같아 한국인 직원을 정중히 부탁드렸다.

아래 두 메일에 대해서는 해당 CASE 오른쪽 위에있는 REPLY를 사용하여 답장하고 메일로 답장을 받는 옵션을 하였다.
하지만 맨 위에 메일은 급한 사안인 것 같아 전화로 요청을 부탁드렸다.

보통 해당 사안은 한국 시간으로 오후쯤 답변을 해도 급한 사안이라 그런지 답장이 빨리왔다.
미국이 출근할 시간에는 거의 30분내외로 걸렸고 아닌 시간에는 3시간 내외로 답변이 왔다.

메세지를 남긴후 우리나라로 오전 10시였는데 오전 10시 30분에 미국에서 연락이 왔다.

미국 AWS 보안팀과의 통화

1시간 30분동안의 영어 통화 전체적인 내용은 이러했다.

  1. 자동 생성되는 EC2는 Auto Scaling 구성에 따른 것이다. 해당 Auto Scaling 구성을 모든 리전에 가서 삭제해야한다. 그리고 인스턴스도 모든 리전에 가서 모두 삭제해아한다.
  2. 보안상 안전이 확인되면 결제 예정 금액 중에 너가 사용하지 않은 부분을 결제 팀에게 내가 설명해서 넘길 것이다.
  3. 혹시 모를 다른 보안 사안도 검사해주겠다.(내가 공부하기 위해 만든 사안들 말고 예상되지못한 요소가 있는지...)
  4. 아직도 한국인 직원이 필요한가? 대학생인가? 왜 이러한 불상사가 발생했냐?
  5. AWS는 다양한 컨퍼런스를 진행하고 있다. 참여하면 도움이 많이 될 거고 개발자 꿈 응원한다.

진짜 너무 친절하고 영어를 유창하게 구사하지 못하는 나를 위해 엄청 다정하게 말해준 미국 AWS 보안팀에게 감사의 말씀 다시 전한다. 서로의 따뜻한 주말을 인사하며 1시간 30분간의 통화를 마무리 했다.

지금이야 웃으면서 이야기하지만 함께 보안을 확인한 뒤 삭제된 것을 완벽하게 확인하니 그제서야 밤새 잠을 못이루던 잠이 한꺼번에 밀려오고 예민해져있던 신경이 풀리면서 몸에 힘이 풀렸다.

이때는 이제 AWS 계정에 내가 공부하고있던 RDS, Elastic Cache, EC2 Free-trier 세개가 남아 있다.

다음날 !!

어제 함께 이야기한 사안에 대해서 정리한 메일이 오고 해당 메일을 보면서 정말 AWS가 왜 대기업인지 알 것 같았다.

전날의 통화를 깔끔하게 정리를 하여서 이후에 진행되는 과정에 대해서 설명을 해주었다.

일단 감사하니 별 다섯개와 앞으로의 과정은 다른 글에서 본 것 처럼 계정이 안전한지 시간을 두고 살펴보고 결제 팀에게 해당 사안에 대해 논의하도록 하는 것 이였다.

그리고 계정이 안전한지 시간을 두고 볼 때는 계정관련된 모든 서비스가 멈춘다.
계정락이 걸린다고 생각하면 될듯하다.

지금부터는 기도하는 수 밖에 없었다....

3월 28일 오전

AWS 에서 메일을 받았고
다시 이러한 일이 일어나지 않도록 1번중 2개를 활성화 시키고 2번중 1개를 활성화 시키고 회신을 달라는 메일을 받았다.
예산 , Cloudtrail, MFA 를 활성화했다.

해당 과정들이 거친 후에 요금 조정이 들어간다고 하니 메일을 보자마자 최대한 빠르게 해당 요청을 처리하고 보안을 강화했다.

그만큼 그때는 마음이 너무 졸여졌다.

3월 28일 오후

계정 모니터링이 끝났고 예방 조치가 잘 된 것을 확인되었다고 메일이 왔다.

계정 모니터링이 끝났으니 공부하던 서버도 다시 열리고 사용 가능했다. 하지만 아직 결제팀의 조정 문제가 해결이 되지 않았으니 마음이 편하지도않고 불안했다....

더 좋은 실력 더 좋은 개발자가 되려고 노력하다가 발생했는데 한번만 도움을 주십셔....ㅠㅠ

해결

사용하지 않은 EC2 인스턴스에 대한 금액이 해결이 되었다!!!!
$2,617 크레딧을 승인받았다.
일주일동안 마음 졸이며 지금 여기서 개발을 할 때가 아니라 나가서 알바를 해야하나...? 라고 생각했는데 다행히 AWS의 배려에 해결이 가능했다.(감사합니다 AWS)

단 한번의 예외 상황으로 도움을 주는 것이니 절대 악용하지말고 차근차근 상황을 설명해야 하는 것이 중요할 듯했다.

크레딧

크레딧은 프로모션용으로 나온 것이 맞는데 이건 정보가 없어서 직접 적는다.

  • 자동적으로 사용한 분야에 대한 크레딧이 사용이 된다.
  • 오래된 크레딧부터 사용이 된다.
  • 세금은 결제가 되는 금액에 대해서 10% 측정이 되기 때문에 크레딧이 선 반영이되고 그 이후 결제 금액이 나오게된다.
  • 고로 크레딧이 사용이 되면 해당에 대한 세금도 함께 사라진다.
    • 이 부분을 몰라서 세금도 부담되는데 나가서 당일 알바라도 하고 와야하나 싶었다.
    • 그리고 보이는것보다 세금까지하면 은근 사용료가 크다.
    • 프리 티어 사용할 때도 주의할면 좋을 듯하다.

느낀점

상황에 대한 느낀점

결국은 나의 잘못이지만 AWS 측에서 최초에 한해 상황을 듣고 배려를 해주는 것이다
상황을 침착하게 설명하는것이 중요할 것 같다. 그리고 배려를 받는 입장이라는 것을 잊지말자
그리고 최대한 빠르게 답장을 하고 보안팀에서 연락이 오면 바로 문의를 하는 것이 좋다.
늦으면 내가 사용하지 않은 비용은 계속 늘어나고 AWS 입장에서도 더이상 해줄 수 있는것이 없다.

클라우드 서비스에 느낀점

클라우드가 서비스가 발전하고 사용성이 좋아짐에 따라 많은 개발자들이 사용을 하려고 한다.
중소 기업 입사 지원 요구사항에도 클라우드 서비스가 들어가고 있고 다양한 토이프로젝트에서 기본 역량에 클라우드 서비스가 최근 BE 파트는 필수적으로 들어가는 것 같다.
그 중 대표하는 AWS는 접근성이 쉬우니 더욱 많이 주니어 개발자들이 접하는 것 같다.

하지만 AWS도 기업이고 클라우드 서비스는 결국 원격으로 우리가 해당 리소스를 빌려쓰는 것이니 주의해서 사용을 해야한다. 그리고 AWS도 클라우드 서비스의 하나일뿐이고 다양한 클라우드 서비스가 있다는 것도 이번 상황을 겪으면서 알게되었다.

그리고 궁금한점이 예산, CloudTrail을 모두 해보고 다양한 예산과 과금 방지를 위해 방법을 찾아보았는데 AWS는 직접적으로 상한치를 정할 수 없다
모두 보고를 받는 형태이다.
한마디로 실수를 하게 될경우 나는 빠르게 발견한 케이스이지만 상한 차단점을 설정할 수가 없어서 무제한으로 사용이 가능하다는 것이다.

이 점을 꼭 생각하여 결국 나는 금액에 대한 보고를 받는 것 뿐이고 해당 메일을 봤을 때 내가 직접 대처를 해야한다는 점이 조금 아쉬우면서 AWS도 기업이구나 라고 생각이 들었다.

발전한 점

HashiCorp에서 만든 Vault 등 암호화 서비스의 감사함을 몸소 깨닫게 되었다.

비밀번호를 통합 관리해주고 중요한 설정 포인트를 환경변수나 직접 코드에 작성하는 것이 정말 위험하다는것을 알았다.

처음에는 Vault 암호화툴을 사용하면서 비밀번호 한줄 암호화를 하는데 프리티어 cpu를 25%나 차지하고 있어서 이거 배가 배꼽보다 큰거아닌가 라는 생각을 하였다.

하지만 해당 상황 이후 민감정보들을 암호화 툴이 통합관리하도록 설정하였다. 환경변수 역시 안전하지 않다는 점, 그리고 ShellScript 역시 탈취를 당할 경우 코드에 적는것과 다른점이 없다는 점을 인지하고 암호화 서비스를 잘 활용하였다.
민감 정보들은 말 그대로 민감한 정보라 쉽게 생각하면 안되는 것이였다.

그리고 AWS의 다양한 서비스들을 확인하게 되었고 비용관리 하는 법, 효율적으로 AWS를 사용하는법 등을 깨닫게 되었다.

암호화 툴은 선택이 아닌 필수라고 생각이 든다.
추가로 해당 상황 이후로 다양한 보안상황(HTTPS로 변경) 등 보안을 허투로 생각하지 않게 되었다.

보안은 백엔드 개발자의 기본이다...! 꼭 기억하자!!!

거의 일주일동안 AWS 콘솔을 100번은 들어갔다온 것 같다..... 잘 해결이 되었으니 AWS에게 다시 한번 감사의 말씀 남기며 해당 경험을 통해 발전하는 개발자가 되고 싶다.

profile
https://coodori.notion.site/0b6587977c104158be520995523b7640

0개의 댓글