AWS EC2로 홈페이지 배포하기(2) EC2 보안설정하기

Mingtorr·2021년 1월 22일
1
post-thumbnail

TL;DR

ROOT 사용자는 모든 계정에 접근할 수 있다. 보안을 유지하기 위해 루트 사용자를 안전하게 보관해 두고 몇 가지 계정 및 서비스 관리 작업을 수행할 때만 자격 증명을 사용한다. 대신 IAM 계정을 생성하여 서비스에 접근한다.

시작하며


클라우드 서비스는 네트워크 환경을 구축하기 위한 모든 구성요소를 가상화된 형태로 제공합니다. 그리고 이러한 구성요소에 대한 접근권한을 관리할 수 있는 서비스인 IAM을 지원합니다.

IAM(AWS Identity and Access Management)은 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다. IAM을 사용하여 리소스를 사용하도록 인증 및 권한 부여된 대상을 제어합니다. AWS에서는 루트 사용자 대신 IAM을 사용하는 것을 적극적으로 권장합니다. 이제 그 이유를 알아보겠습니다.

IAM 서비스가 필요한 이유


AWS에 가입하게 되면 하나의 계정이 만들어지는데 이를 루트 사용자라고 부릅니다. 이 루트 사용자는 마스터 카드처럼 AWS에서 제공하는 모든 서비스에 무제한적인 접근 권한을 가지고 있습니다. 즉, 이 계정의 권한이 탈취되면 계정의 모든 정보가 유출되는 참사가 벌어질 수 있습니다.

아마존에서는 리소스들에 대한 접근 권한을 제어하는 AWS IAM 서비스를 제공하고 있습니다.
루트 사용자는 모든 리소스에 대해서 모든 행동이 허용되어 있습니다. 따라서 루트 사용자는 AWS IAM으로 권한을 제어하는 대상이 아닙니다. IAM은 단순히 권한을 제어하는 기능을 제공할 뿐 아니라, IAM User라는 어떤 행동을 하는 주체를 정의하는 기능을 제공합니다. 루트 사용자의 권한은 제어할 수 없지만, 이 IAM 사용자의 권한을 제어할 수 있습니다. IAM 사용자는 루트 사용자와 마찬가지로 웹 콘솔에서 로그인할 수 있습니다.

따라서 하나의 AWS 계정은 하나의 루트 사용자와 다수의 IAM 사용자를 가질 수 있습니다. 이 기능을 사용해 하나의 계정을 다수의 관리자가 공유해서 사용하는 대신 각각의 IAM 사용자를 생성해서 관리하는 것이 가능해집니다. 이를 이용하여 루트 사용자를 안전하게 보관해 두고 몇 가지 계정 및 서비스 관리 작업을 수행할 때만 자격 증명을 사용합니다

또한 AWS는 GITHUB에서 COMMIT한 내용을 확인하는 것처럼 "클라우드 트레일" 이라는 서비스를 통해 어떤 관리자가 어떤 API를 호출했는지 모두 추적이 가능합니다. 하지만 모든 관리자들이 ROOT 계정을 사용하게 되면 누가 어떤 작업을 했는지 구분하는 것이 불가능합니다. 이는 문제가 발생했을 경우 추적이나 해결을 어렵게 만듭니다.

IAM 설정하기


이제 IAM 유저를 생생해 보겠습니다.
먼저 상단바의 내 이름을 클릭하여 드롭다운 메뉴를 펼친후 내 보안 자격 증명을 클릭합니다.
이후 왼쪽 엑세스 관리의 사용자를 클릭합니다.
또는 AWS 콘솔에서 [서비스] -> [IAM]으로도 접속할 수 있습니다.

다음으로 사용자 추가를 선택합니다.

신규사용자의 이름을 입력합니다. 이는 AWS 로그인에 사용하는 이름입니다.
신규 사용자는 한번에 최대 10명 까지 추가할 수 있습니다.
액세스 유형은 AWS Management Console 액세스로 설정합니다.

권한설정에서 그룹을 생성할 수 있습니다. 그룹에 권한을 설정하고 사용자를 추가할 경우 일괄적인 관리가 가능합니다. 그룹생성을 클릭합니다.

그룹이름을 입력하고 ‘AdministratorAccess’ 를 체크합니다. 이는 관리자 권한을 해당 그룹에 부여하는 것입니다. 그룹 생성을 클릭하여 작업을 완료합니다.

입력된 정보를 확인하고 사용자 만들기를 클릭하세요

빨간색 네모 속의 링크가 사용자의 콘솔 액세스 주소입니다. 해당 주소를 통해 IAM 유저로 로그인 할 수 있습니다. 사용자의 액세스 키(액세스 키 ID와 보안 액세스 키)를 보려면 보고 싶은 각 암호와 액세스 키 옆에 있는 표시를 선택합니다. [.csv 다운로드]를 선택하여 저장할 수 있습니다.

AWS API를 사용하도록 하려면 액세스 키 ID와 보안 액세스 키가 필요합니다. 이 키를 확인할 수 있는 마지막 기회입니다. 사용자의 새 액세스 키 ID와 보안 액세스 키를 안전한 장소에 보관하십시오. 이 단계가 지난 후에는 보안 키에 다시 액세스할 수 없습니다.

ROOT 계정에 MFA 추가하기


MFA(Multi-factor Authentication)는 로그인 과정에서 진행되는 절차로 OTP 코드를 통해 인증이 진행됩니다.
MFA를 할당할 디바이스 종류가 3가지 있는데 이 중 저는 휴대폰 앱을 이용하겠습니다.

안드로이드 앱 이름 "GOOGLE OTP"
IOS 앱 이름 "Google Authenticator"

MFA 등록을 위해 상단바의 내 이름을 클릭하여 드롭다운 메뉴를 펼친후 내 보안 자격 증명을 클릭합니다.
이동 후 MFA 활성화를 클릭합니다.

활성화 버튼을 클릭할 경우 할당할 MFA 유형이 나옵니다. 우리는 모바일 앱을 이용하기 때문에 가상 MFA 디바이스를 클릭합니다.

위에서 설명한 앱을 이용하여 QR코드를 인식합니다.
인식 후 모바일 앱에서 표시되는 6자리 숫자 2개를 입력합니다.
앱에서 표기되는 숫자 6자리는 몇초 후 자동으로 갱신됩니다.
모든 절차를 완료후 MFA 할당을 클릭합니다.

MFA 등록 확인

MFA등록을 위한 모든 절차가 끝났습니다. 정상적으로 MFA가 등록되었는지 확인하기 위해 로그아웃 이후 다시 로그인을 진행합니다. 비밀번호 입력 이후 아래 화면처럼 MFA 코드를 추가로 물어보게 됩니다.

!주의
MFA는 휴대폰을 분실하거나 초기화할 경우 되돌릴 수 없습니다.
이를 복구하기 위해서는 AWS 상담원과 영어로 깊은 대화를 나누어야 합니다.
실제 경험담입니다 ㅜㅜ

다음 강좌에서는 EC2 인스턴스를 생성하는 방법에 대해 알아보겠습니다.

profile
츄르 값 벌기 위해 코딩하는 아키텍쳐

0개의 댓글