이두잉의 AWS 세상

AWS 사용 전 준비 사항

2015.11.18 12:45 - leedoing leedoing

안녕하세요. 이두잉입니다.


이번 블로깅은 AWS 사용 전 필수적으로 설정해야 할 사항입니다.


AWS를 사용하기 앞서 준비해야 될 사항이 있습니다.

계정에 대한 보안AWS 작업(API 호출)에 대한 로깅(CloudTrail)입니다.


1. 계정에 대한 보안

AWS Root 계정 유출은 IDC를 통째로 뚫린 것과 마찬가지입니다. 하지만 많은 사용자들은 계정에 대한 보안을 간과하고 있습니다. 

계정 보안을 위해서는 두 가지 방안이 필요합니다.




첫 번째는 Root 계정은 사용을 금지하고, 필요에 따라 AWS를 사용할 수 있는 Policy(권한)을 부여한 User 계정을 사용합니다.

AWS Console에서 Identity & Access Management(이하 IAM)를 클릭합니다.


그 뒤에 Groups 혹은 Users를 통해 계정을 생성합니다. Linux 계정 관리와 비슷합니다. 이번에는 Users를 생성하도록 하겠습니다.


이번에는 Users를 생성하도록 하겠습니다. Users->Enter User Names->Create 

Generate an access key for each user를 선택하여 각각 User가 Access Key를 갖도록 합니다.


User의 Access와 Secret Key가 발급되었습니다. 해당 Key를 이용해서 AWS 서비스들을 제어할 수 있습니다.


다시 IAM 화면으로 돌아가면 계정이 생성된 것을 확인할 수 있습니다. 생성한 User를 클릭하면 다음과 같은 화면을 볼 수 있습니다.

- Groups : Linux User Group으로 생각하시면 됩니다.

- Permissions : User가 사용할 Policy(정책)을 줄 수 있습니다.

- Security Credentials : User 보안 정책입니다. MFA나 패스워드 정책을 줄 수 있습니다.


Permissions로 오면 Managed Policies에 Attach Policy 부분이 있습니다. 이것을 통해 각 계정이 사용할 수 있는 Policy를 등록합니다.


Attach Policy를 클릭하면 다음과 같은 화면이 나옵니다. AWS에서 미리 규정한 Policy들입니다. AdministratorAccess의 경우 AWS 사용에 대한 모든 권한을 갖는 Policy입니다. 


Policy를 확인하면 다음과 같은 json 형식입니다. 해당 Policy 등록으로 AWS를 사용할 수 있는 계정 생성은 완료되었습니다.


다시 IAM 화면로 돌아와 User가 접근할 수 있는 Login Link를 생성합니다. 해당 페이지는 이미 생성한 상태입니다.


두 번째는 MFA 사용입니다. Root 계정이 아니더라도 각각 User들의 계정이 유출되면 부여된 Policy만큼 AWS을 남용할 수 있습니다. 따라서 전달받은 User들은 MFA를 등록합니다.


다시 IAM->User로 돌아와 Security Credentials를 클릭합니다. Manage Password를 클릭하여 auto 혹은 custom password를 설정할 수 있습니다. 설정 후 사용자에게 전달하면 됩니다. 사용자는 전달 받은 후에 MFA를 등록합니다.

- Manage Password : 패스워드 정책 설정

- Manage MFA Device : MFA 사용

- Manage Signing Certificates : 개인 인증서 key 생성(pem/ppk)


Manage MFA Device를 클릭하면 MFA 사용을 위한 Device를 선택할 수 있습니다. virtual MFA의 경우 모바일폰에서 사용할 수 있으며, hardware MFA Device의 경우 Amazon에 주문하여 사용할 수 있습니다. virtual MFA를 사용하도록 합니다.


다음과 같은 바코드가 생성됩니다. 모바일 OTP APP(Google OTP 등)를 이용하여 해당 바코드를 스캔합니다. 


OTP APP로 바코드를 스캔하면 다음과 같은 화면을 볼 수 있습니다. 해당 코드를 순차적으로 Authentication Code1/2 란에 입력합니다.


전달받은 접속 URL과 계정을 통해 AWS에 접속합니다. 접속 후에 MFA 코드를 입력받는 창이 나옵니다. APP를 실행시키고 받은 MFA코드를 입력하면 접속이 완료됩니다. 여기까지가 계정에 대한 보안 설정입니다.

2. AWS 작업(API 호출)에 대한 로깅(CloudTrail)

AWS의 가장 밑단은 API 호출을 통해 이루어집니다. 따라서 API 로깅을 통해 어느 사용자가 어떤 API를 호출했는지 확인이 가능합니다.

갑자기 예상하지 않은 인스턴스가 생성되어 요금이 많이 발생된 경우 등 API 원인 파악을 위해 사용합니다.

CloudTrail은 AWS의 서비스 중 하나로 API에 대한 로깅을 지원합니다. CloudTrail을 활성화 하면 API 로그가 S3에 저장됩니다.


AWS Console에서 CloudTrail을 클릭하고 다음 화면에서 Get Started Now를 클릭합니다.

다음과 같은 화면이 나타납니다.

- Create a new S3 bucket? : 로그가 저장될 S3 버킷을 생성할 지, 기존 버킷에 저장할 지 선택합니다.

- S3 bucket : 버킷명을 기입합니다.

- Log file prefix : 선택한 버킷 밑으로 AWS에서 정해진 규칙대로 CloudTrail 로그가 저장되는데, 임의로 변경할 경우 선택합니다.

- SNS notification for every log file delivery? : 해동 로그가 S3에 저장될 때마다 Noti를 받을지 정합니다.SNS topic을 먼저 생성해야 합니다.


설정이 완료되고 다시 CloudTrail을 클릭하면 History 내역을 볼 수 있습니다.


CloudTrail 로그 데이터를 ELK와 연동하여 Visualization이 가능한 서비스를 구축할 수도 있습니다.


이상으로 AWS 사용하기 앞서서 준비해야 할 사항에 대해 알아봤습니다.

첫 번째는 계정 관리이며 두 번째는 CloudTrail 활성화를 통한 AWS API 로깅입니다.


감사합니다.