AWS 보안 가이드 ③ AWS 요금 폭탄을 피하는 법!

③ 비용 증가 알림 서비스 편

구글링하던 D씨는 충격적인 기사를 발견합니다 😵
’AWS 해킹 억 단위 청구’, ‘AWS 과금 피해’…

황급히 자신의 요금을 살펴본 D씨,
이렇게 조마조마하며 클라우드를 사용해야할까요?

AWS를 포함한 클라우드 서비스는 흔히 종량제라고 불리는 후불제 요금 체계를 갖추고 있습니다. 사용한 만큼만 지불하면 되기 때문에 정해진 예산 내에서 경제적으로 활용할 수 있죠.

하지만 이러한 클라우드의 장점이 단점으로 바뀌어 해커의 수익원이 되기도 합니다. 계정에 접근만 가능하다면 기존에 등록된 결제 정보를 악용해 무분별하게 리소스를 생성할 수 있기 때문입니다.

특히 최근에는 암호화폐 채굴에 타인의 클라우드를 불법적으로 사용하는 크립토재킹(Cryptojacking)이 성행하고 있습니다

해커는 클라우드 계정을 탈취하고 클라우드 서버를 무작위로 활성화해 암호화폐 채굴 자원으로 사용합니다. 채굴로 얻은 이익은 해커들이 취하고 클라우드 서버 비용은 피해자가 지불하게끔 하는 것이죠 ⛏

복잡한 프로세스를 가진 암호화폐 특성상 많은 리소스가 요구되므로, 클라우드 계정이 악용된다면 순식간에 억 단위 피해를 볼 수 있습니다.

CSP(클라우드 서비스 공급자)에서 피해 비용을 면제해주는 사례가 종종 있지만, 보안 설정과 관련해 사용자의 과실이 분명하다면 공동 책임 모델에 따라 사용자가 비용을 감당해야 합니다.

사용자 입장에서는 자신이 피해를 봤음에도 불구하고 막대한 비용을 고스란히 지급해야 하니 당황스러울 수밖에 없는 상황이죠. 이러한 요금 폭탄 문제를 피하기 위해서는 사전에 클라우드 계정 접근 보안을 강화하고 주기적으로 점검하는 것이 필수입니다.

그렇다면 AWS 계정에 접근할 방법에는 무엇이 있을까요?


AWS 계정에 접근할 수 있는 방식

AWS 계정에 접근하는 방법은 크게 2가지입니다.

  1. AWS 사용자 계정(Username)과 비밀번호(Password)를 사용하는 방법
  2. AWS 액세스 키 ID(Access Key ID)와 비밀 액세스 키(Secret Access Key)를 사용하는 방법

첫 번째는 AWS 관리 콘솔에 접속하기 위한 것으로 AWS 사용자 종류에 따라 요구되는 정보를 입력하는 방식입니다. 흔히 사용하는 아이디와 패스워드 개념과 똑같습니다.

AWS 사용자는 아래 이미지와 같이 로그인 페이지에서 루트 사용자 또는 IAM 사용자를 선택할 수 있습니다.

AWS 로그인 화면에서 선택할 수 있는 루트 사용자와 IAM 사용자

AWS 사용자 별 계정 로그인에 필요한 정보

사용자요구 정보
루트 사용자· AWS 계정을 생성하는데 사용된 이메일 주소
· 루트 사용자의 암호
IAM 사용자· 계정 ID(12자리) 또는 계정 별칭
· IAM 사용자의 암호

AWS 사용자 계정 접근 방식의 보안을 강화하는 방법은 1) 루트 사용자가 아닌 IAM 사용자로 일상적인 작업 수행, 2) 안전한 IAM 비밀번호 정책 생성입니다.

구체적인 내용은 지난 콘텐츠 “AWS 보안 가이드 ② 지금 사용하는 비밀번호, 얼마나 안전할까?”에서 확인하실 수 있습니다.


사실 AWS 사용자가 가장 흔하게 저지르는 보안 실수는 두 번째 접근 방식인 AWS 액세스 키(Access Key) 관리 소홀입니다🔑

  1. AWS 사용자 계정(Username)과 비밀번호(Password)를 사용하는 방법
  2. AWS 액세스 키 ID(Access Key ID)와 비밀 액세스 키(Secret Access Key)를 사용하는 방법

AWS 사용자가 액세스 키를 깃허브(GitHub)와 같은 외부 공간에 노출해서 클라우드 계정 정보가 탈취되는 사례가 많습니다. 해커는 깃허브에 올라온 프로젝트를 대상으로 빠르게 봇을 돌려 액세스 키를 자동으로 수집하고 계정을 악용합니다.


“아무리 그래도 그렇지… 액세스 키 같이 중요한 정보를 외부에 노출할 수가 있나…?”

이런 생각을 하셨다면 클라우드 계정을 안전하게 관리할 준비가 되셨습니다. 하지만 보안 사고는 방심에서 나오는 법! 😤

AWS 액세스 키가 무엇이고 얼마나 중요한지, 그리고 어떻게 관리해야 안전한지에 대해 자세히 알아보겠습니다.

AWS 액세스 키(Access Key)란?

AWS 액세스 키란 문자 그대로 AWS 계정에 접근할 수 있는 키로 AWS 루트 사용자 또는 IAM 사용자 자격을 증명합니다.


AWS 사용자 계정과 비밀번호가 관리 콘솔에 접근하기 위한 수단이었다면, AWS 액세스 키는 AWS API(Application Programming Interface), AWS CLI(Command Line Interface), AWS SDK(Software Development Kit) 등과 같이 프로그래밍 방식 액세스를 위한 키입니다.


AWS 액세스 키는 아래 예시와 같이 아이디 역할을 하는 ‘액세스 키 ID’와 패스워드 역할을 하는 ‘비밀 액세스 키’가 하나의 짝으로 생성됩니다.

aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY


AWS 액세스 키 안전하게 관리하기

액세스 키를 가지고 있다면 AWS의 모든 API 사용이 가능합니다. 액세스 키 관리를 잘못하는 경우 누구든 AWS 계정에 접속할 수 있도록 문을 활짝 열어두는 것과 다름없죠.

따라서 액세스 키를 생성하게 된다면 코드 안에 직접 입력하고 보관하는 것이 아닌 별도의 csv 파일 등의 형태로 안전하게 저장해둬야 합니다. 깃허브 리포지토리뿐만 아니라 개발 블로그, 페이스북 등 오픈된 커뮤니티에도 노출되지 않도록 주의해야 합니다.


액세스 키를 보유한 사람은 누구나 귀하와 동일한 수준으로 AWS 리소스에 액세스할 수 있습니다.

따라서, AWS는 귀하의 액세스 키를 보호하기 위해 상당한 노력을 기울이고 있으며, 당사의 공동 책임 모델에 따라 귀하도 그렇게 해야 합니다.

액세스 키를 안전하게 관리하세요. 

액세스 키를 권한 없는 당사자에게 제공하지 마세요. 이로 인해 다른 사람에게 계정에 대한 영구 액세스를 제공하게 될 수 있습니다.

출처: AWS 액세스 키 관리를 위한 모범 사례


무엇보다 가장 좋은 방법은 루트 사용자의 액세스 키를 생성하지 않는 것입니다.

가장 좋은 방법은 액세스 키와 같은 장기 보안 인증을 생성하는 대신 임시 보안 인증(IAM 역할)을 사용하고 AWS 계정 루트 사용자 액세스 키는 생성하지 않는 것입니다.

루트 사용자에 대한 액세스 키는 결제 정보를 비롯하여 모든 AWS 서비스에 대한 리소스 전체에 대한 액세스 권한을 부여하기 때문에 액세스 키 생성은 권장하지 않습니다.

출처: AWS IAM 사용자의 액세스 키 관리


루트 사용자 액세스 키가 이미 생성된 경우 AWS에서는 아래와 같은 방법을 권장하고 있습니다.

계정에 대한 액세스 키가 이미 있는 경우 다음을 권장합니다.

애플리케이션에서 현재 액세스 키를 사용하고 있는 위치를 찾아 루트 사용자 액세스 키를 IAM 사용자 액세스 키로 교체하십시오. 그런 다음 루트 사용자 액세스 키를 비활성화하고 제거합니다.

한 액세스 키를 다른 액세스 키로 대체하는 방법에 대한 자세한 내용은 AWS 보안 블로그에서 IAM 사용자의 액세스 키를 교체하는 방법을 참조하십시오.

출처: AWS 액세스 키 관리를 위한 모범 사례


AWS 액세스 키가 유출된 경우

액세스 키를 통해 AWS 계정 정보가 유출될 가능성이 있기 때문에 이런 상황에서는 빠른 조치가 필요합니다.

  1. 우선 유출 피해 상황을 파악하고 AWS Support Center에 이 사실을 보고합니다. AWS Support Center는 로그인 이후 접속할 수 있습니다.

  2. 액세스 키 유출 원인을 제거합니다. 공개된 프로젝트나 게시글에 액세스 키가 노출됬다면 해당 부분을 삭제해야 합니다. 유출 원인과 관련해서 AWS의 도움을 받을 수 있습니다.

  3. 무작위로 생성된 인스턴스가 없는지 확인하고 승인하지 않은 리소스는 삭제해야 합니다.

  4. 유출된 액세스 키를 포함해 모든 액세스 키를 삭제 및 교체하고 루트 사용자 계정 비밀번호 또한 변경하는 것이 안정합니다. (참고: 분실하거나 잊어버린 AWS 암호 또는 액세스 키 재설정)


보안을 위해서는 평소에 루트 사용자 액세스 키는 생성하지 않고 IAM 사용자 액세스 키를 주기적으로 교체하는 것이 좋습니다.

애플리케이션마다 서로 다른 액세스 키를 사용하는 것도 방법입니다. 사용자가 조직을 떠나는 경우, 더 이상 필요 없는 IAM 사용자와 액세스 키를 삭제해서 계정을 안전하게 보호하는 작업 또한 필요합니다.


이제까지 AWS 계정에 접근할 수 있는 수단인 액세스 키와 관리 방법에 대해서 알아보았습니다.

AWS 계정과 결제 정보를 안전하게 보호하는 방법 이외에도 AWS 자원 현황이 어떤지, 요금이 잘 청구되고 있는지 좀 더 적극적으로 관리하고 싶다면 어떻게 해야 할까요?

AWS의 국내 파트너이자 MSP인 가비아에서는 다음과 같은 AWS 요금 관리 방법을 제시하고 있습니다.

가비아 AWS의 요금 관리 3 STEP

① 가비아 AWS 빌링 콘솔 활용하기

가비아 AWS에서는 가비아와 연결된 AWS 계정을 한눈에 확인할 수 있는 빌링 콘솔 기능을 제공하고 있습니다. 콘솔을 통해 계정 목록, 이용 요금, 기술 지원 내역 등을 확인할 수 있습니다.

자세한 내용은 “빌링 콘솔 접속 방법” 매뉴얼을 참고하시면 가비아 AWS 빌링 접속 방법부터 기능 활용법까지 확인할 수 있습니다.

가비아 AWS 빌링 콘솔 예시 이미지

실시간으로 자원을 어떻게 쓰고 있는지 궁금할 때도 콘솔을 활용할 수 있는데요. AWS 액세스 키와 비밀 액세스 키 정보를 등록하면 AWS 자원 현황을 확인할 수 있습니다.

AWS 액세스 키 등록 예시 이미지

콘솔을 주기적으로 활용한다면 원하지 않는 자원이 생성된 경우 빠르게 원인을 파악할 수 있죠. AWS 액세스 키 발급과 AWS 자원 현황 확인 방법은 “API 키 발급 안내”에서 확인할 수 있습니다.


② 가비아 AWS 예산 초과 알림 설정하기

가비아 AWS에서는 이용 요금이 미리 등록해둔 예산을 초과했을 경우 이메일로 알림이 도착하는 서비스를 제공하고 있습니다. 매번 콘솔에 접속해서 확인하지 않아도 메일이 도착하기 때문에 간편하게 확인할 수 있습니다.

알림 서비스를 통해 초과 지출을 줄일 수 있을 뿐만 아니라 해커가 클라우드 계정을 탈취하고 악용하면서 의도치 않은 과금이 생길 경우 신속한 대응을 할 수 있습니다.

가비아 AWS 예산 초과 알림 메일 예시 이미지

구체적인 알림 설정 방법은 “AWS 예산 초과 알림 설정하기”와 “AWS 예 초과 알림 수정하기” 매뉴얼에서 확인할 수 있습니다.


③ 가비아 AWS의 비용 증가 알림 서비스 이용하기

비용 증가 알림은 클라우드 비용이 급격하게 상승하는 경우에 알림 이메일이 도착하는 서비스입니다. 예산 초과 알림 서비스에서 예산을 등록해야 하는 것과 달리 기존 이용 패턴을 분석하고 자동으로 감지하기 때문에 간편합니다.

비용 증가 알림을 통해서 의도된 비용인지 원치 않는 비용인지 판단할 수 있기 때문에 클라우드 계정을 더욱 안전하게 사용할 수 있습니다.

가비아 AWS 요금 상승 알림 메일 예시 이미지

자세한 내용은 “가비아 AWS 비용 증가 알림 서비스 출시 안내” 게시글에서 찾아보실 수 있습니다.

많은 기업에서 효율성과 경제성을 위해 클라우드 전환을 하고 있습니다. 클라우드가 많은 장점을 가지고 있지만 가장 기본적인 보안이 지켜지지 않는다면 원하지 않는 요금 청구, 데이터 유출 등의 피해를 볼 수 있습니다.

가비아는 AWS의 국내 파트너로서 고객이 안심하고 클라우드를 사용할 수 있도록 돕는 역할을 수행하고 있습니다.

클라우드 계정 정보를 안전하게 보호하고
주기적으로 요금 사용 패턴을 확인하고 싶으시다면
가비아 AWS와 함께하세요!

가비아 AWS 서비스 상담문의
가비아 AWS 사이트 방문하기


AWS 보안 가이드 시리즈 보러 가기

AWS 보안 가이드 ① AWS 계정이 해킹됐는데 AWS 책임이 아니라고요?

AWS 보안 가이드 ② 지금 사용하는 비밀번호, 과연 얼마나 안전할까?

AWS 보안 가이드 ③ AWS 요금 폭탄을 피하는 법! (현재글)


Summary

AWS 계정에 접근하는 방식은 무엇이 있나요?

크게 두 가지로 AWS 사용자 계정(Username)과 비밀번호(Password)를 사용하는 방법, AWS 액세스 키 ID(Access Key ID)와 비밀 액세스 키(Secret Access Key)를 사용하는 방법이 있습니다.

AWS 액세스 키란 무엇인가요?

AWS 액세스 키란 문자 그대로 AWS 계정에 접근할 수 있는 키로 AWS 루트 사용자 또는 IAM 사용자로서의 자격을 증명합니다. AWS 액세스 키는 AWS API, CLI, SDK 등과 같이 프로그래밍 방식 액세스를 위한 키입니다. 액세스 키 ID와 비밀 액세스 키가 하나의 짝으로 생성됩니다.

AWS 액세스 키를 안전하게 관리하는 방법이 있나요?

루트 사용자가 아닌 IAM 사용자 액세스 키를 생성하는 것이 권장됩니다. 액세스 키를 생성하게 된다면 코드 안에 직접 입력하면 유출 가능성이 있기 때문에 지양해야 합니다. 깃허브 리포지토리뿐만 아니라 개발 블로그, 페이스북 등 오픈된 커뮤니티에도 노출되지 않도록 주의해야 합니다.

AWS 액세스 키가 유출됐을 때 어떻게 해야 하나요?

유출 피해 상황을 파악하고 AWS Support Center에 이 사실을 보고합니다. 액세스 키 유출 원인을 제거하고 무작위로 생성된 자원을 삭제합니다. 유출된 액세스 키를 삭제하고 사용자 비밀번호 또한 변경합니다.

AWS 사용 중 과도한 요금 청구를 사전에 대비할 수 있나요?

가비아 AWS에서는 클라우드 비용이 급격하게 상승하는 경우에 이메일 알림이 도착하는 서비스를 제공하고 있습니다. 고객은 알림을 통해 의도된 비용인지 아닌지 판단할 수 있고, 클라우드를 더욱 안전하게 사용할 수 있습니다.