본문 바로가기

[AWS]

AWS Certified Solutions Architect #1

AWS (Amazon Web Service)

- 클라우드 공급자

- 온디맨드 방식

- 쉽게 확장할 수 있는 서버와 서비스를 제공

// 데이터 센터에서 서버를 사용하기 위해 물리적인 서버를 주문하고 설치해야 하는 온프레미스 방식과는 크게 다릅니다.

// 클라우드에서는 온디맨드 방식으로 원할 때 마다 원하는 만큼만 서버를 사용할 수 있어 쉽게 확장이 가능하다. 

// Netflix는 단 하나의 서버도 빠지지 않고 AWS를 사용하기 때문에 확장성이 높다.

 

AWS 계정 만들기

- 루트 이메일 주소를 지정해야 함, 기본 이메일 주소이다.

- 루트 패스워드를 잊어버렸다면 이메일로 복구할 수 있다.

- 신용카드에 1달라가 청구되어 거래 대기로 있다가 인증을 마치면 자동으로 취소된다.

- 무료 등급을 유지하는 동안은 요금이 부과되지 않지만, 무료 등급을 초과하면 비용이 부과된다.

 

AWS 시작하기

- 2004년에 첫 번째 서비스인 SQS를 출시하게 되고, 2006년에는 서비스를 확장하여 재출시했고 SQS, S3, EC2가 포함되었습니다.

AWS Rejions

- 리전이란 데이터 센터이다. 

- 어떤 리전이 좋냐를 판단할 때는 상황마다 다름.

 

Rujions을 선택할 때 미칠 수 있는 몇가지 요인들

1. 법률 준수

- 간혹 어떤 정부들은 애플리케이션을 배포하게 될 대상 국가 내에 데이터가 보관되기를 원합니다.

2. 지연 시간

- 만약 대부분의 사용자가 미국에 있는 경우 애플리케이션 역시 사용자랑 가까이 있도록 미국에서 출시하는 것이 바람직하다.

3. 서비스

- 모든 리전이 모든 서비스를 가지고 있지는 않다. 따라서 애플리케이션을 특정 서비스에 활용 중이라면 출시하려는 리전에 해당 서비스가 있는지를 당연히 확인해야 한다.

1. 요금

- 리전 간 요금의 차이를 확인하려면 서비스 요금 페이지를 참고하시면 됩니다. 가용 영역은 리전 내에 존재한다. 각각의 리전은 많은 가용 영역을 가지고 있는데 보통은 세 개씩 있고 최소는 둘, 최대는 여섯 이지만 대부분은 세 개이다.

- 각각의 가용 영역은 여분의 전원 네트워킹, 그리고 통신 기능을 

 

 

- 재난에 대비해 서로 단절되어 있습니다. 이런 데이터 센터나 가용영역들은 높은 대역폭의 초저지연 네트워킹으로 서로 연결되어 리전을 형성합니다. 

 

전송 지점, 엣지 로케이션

- AWS는 42개국 84개의 도시에 200개가 넘는 전송 지점을 가지고 있다. 

콘솔

- AWS는 IAM, Route 53, CloudFront 그리고 WAF 등의 글로벌 서비스를 제공하지만 Amazon EC2, Elastic Beanstalk Lambda 그리고 Rekognition과 같은 대부분의 AWS 서비스들은 특정 리전에 국한됩니다.

AWS의 콘솔 및 서비스 둘러보기

- 가장 가까운 리전을 선택하면 지연 시간이 가장 적다.

 

AWS는 새로운 디자인 지침에 맞춰 대대적인 인터페이스 변경 중에 있습니다. 

- 서비스에서 우측 상단의 스위치를 끄면 과거 UI를 볼 수 있다.


IAM(Identity and Access Management) : USER & GROUPS

- IAM에서는 사용자를 생성하고 그룹에 배치하기 때문에 글로벌 서비에 해당된다.

- 계정을 생성할 때 루트 계정을 만들었는데 이는 기본적으로 생성되는 것이다. 우리 계정의 루트 사용자가 되는 것이다.

- 그룹에는 오직 사용자만 배치할 수 있습니다. 

 

사용자와 그룹을 생성한느 이유는 무엇일까요? 

- 이들이 AWS계정을 사용하도록 허용하기 위해서입니다. 그리고 허용을 위해서는 이들에게 권한을 부여해야 합니다.

- 권한을 부여하기 위해서는 사용자 또는 그룹에게 정책, 또는 IAM 정책이라고 불리는 JSON 문서를 지정할 수 있습니다.

- 이와 같은 형태의 JSON 문서를 통해 사용자들이 AWS 서비스를 이용하도록 허용하는 것입니다. 이 정책들을 사용해 사용자들의 권한을 정의할 수 있게됩니다.

// 새로운 사용자가 너무 많은 서비스를 실행하여 큰 비용이 들거나 보안 문제를 야기할 수 있기 때문에 AWS에서는 최소 권한 원칙을 적용한다.

 

- IAM은 리전을 선택할 필요가 없습니다.  IAM은 글로벌 서비스이기 때문에 어디에 있던 모든 리전에서 동일한 사용자를 갖게 됩니다.

 

- AWS에서는 항상 태그가 있습니다. 태그는 데이터에 대한 추가 정볼르 포함시키는 거지만, 계정의 작동 방식에는 영향이 없습니다.

 

- 그리고 만약 Charles와 David가 감사팀에 속한다고 하면 감사팀에도 정책을 연결할 수 있는데요. Charles와 David는 감사팀의 정책도 상속하게 됩니다

 

- IAM 스트럭쳐는 버전 숫자를 포함하고 있다. 보통은 2012-10-17로 보입니다.

- 정책을 식별하는 ID도 있는데 선택사항이다.

- 문장들도 구성요소 이다. 

- Sid는 문장 ID로 문장의 식별자이고 선택사항이다.

- 정책이나 effect는 문장이 특정 API에 접근하는 걸 허용할지 거부할지에 대한 내용입니다. 

  // 사진에서는 'Allow'가 나와있지만 'Deny'가 뜰 수도 있습니다.

- Principal은 특정 정책이 적용될 사용자, 계정, 혹은 역활로 구성됩니다.

- Action은 effect에 기반해 허용 및 거부되는 API 호출의 목록입니다.

- Resource는 적용될 action의 리소스의 목록으로 이예시에서는 버킷입니다.

- 사진에는 없지만 Statement가 언제 적용될지를 결정하는 Condition이 있습니다.

 

IAM - Password Policy

두 가지 방어 메커니즘이 있다.

 

1. 비밀번호 정책의 정의 ( AWS에서는 다양한 옵션을 이용해 비밀번호 정책의 생성이 가능하다 ) 

- 비밀번호 최소 길이 설정, 특정 유형의 글자 사용을 요구할 수 있다.

- IAM 사용자들의 비밀번호 변경을 허용 또는 금지할 수도 있습니다.

- 일정 기간이 지나면 비밀번호를 만료시켜 새 비밀번호 설정을 요구할 수도 있다.

- 사용자가 비밀번호의 재사용을 막아 비밀번호 변경 시 동일한 비밀번호나 이전에 사용했던 비밀번호를 사용못하게 할 수 있다.

- IAM 콘솔에서 직접 편집할 수 있다.

 

2. 다요소 인증, MFA ( Multi Factor Authentication )  

- 루트 계정은 무슨 일이 있어도 반드시 보호해야 하며, 전체 IAM 사용자들도 보호를 해야 합니다.

- MFA란? 비밀번호와 가지고 있는 보안 장치를 함께 사용하는 것입니다.

 

 

AWS에서의 MFA 장치 옵션으로는 어떤 것들이 있을까요?

1. 가상 MFA 장치 ( Virtual MFA device ) 

2. Universal 2nd Factor (U2F) Security Key

3. Hardware Key Fob MFA Device

4. Hardware Key Fob MFA Device for AWS GovCloud(US)

 

 

 

AWS 계정에서 가장 중요한 루트 사용자를 보호하는 방법은 멀티팩터 인증입니다.

 

AWS에 엑세스하는 방법

1. 첫 번째는 사용해왔던 AWS 콘솔로 사용자 이름 및 비밀번호와 다요소 인증으로 보호되죠.

2. 명령줄 인터페이스인 CLI, 엑세스 키에 의해서 보호됩니다. 이 엑세스 키는 터미널에서 AWS를 가능하게 해줍니다.

3. AWS 소프트웨어 개발자 키트인 SDK가 있습니다. AWS로부터 애플리케이션 코드 내에서 API를 호출하고자 할 때 사용되는 방식이죠. 이 두 방식 모두 완전히 동일한 엑세스 키로 보호가 됩니다.

// 엑세스 키는 관리 콘솔을 사용해서 생성할 수 있습니다. 

// 사용자 측면에서 엑세스 키는 비밀번호와 같기 때문에 공유해서는 안 됩니다.

// 직장 내에서도 엑세스키는 절대 공유하면 안 됩니다.

 

Access Key ID ~= username

Secret Access Key ~= password

 

AWS CLI를 사용하는 이유는 모든 명령어가 aws로 시작하기 때문이다. CLI를 사용하면  AWS 서비스의 공용 API로 직접 엑세스가 가능합니다. 그리고 CLI를 통해 리소스를 관리하는 스크립트를 개발해 일부 작업을 자동화할 수 있죠. CLI는 오픈 소스로, GitHub에서 모든 소스 코드를 찾으실 수 있습니다. AWS 관리 콘솔 대신 사용되기도 합니다.

 

 

- SDK는 소프트웨어 개발 키트입니다. 특정 언어로 된 라이브러리의 집합

- 하지만 SDK는 터미널 내에서는 사용하는 것이 아니라 코딩을 통해 애플리케이션 내에 심어 두어야 하는 것이다.