[새싹] 현대IT&E 231218 기록 - AWS
1. AWS 시작하기
- AWS: 아마존 닷컴의 자회사인 아마존 웹 서비스 사가 제공하는 클라우드 플랫폼
1.2 클라우드
- 클라우드는 인터넷 등 네트워크를 통해 서버, 스토리지, 네트워크와 같은 컴퓨터 리소스를 서비스로 제공하는 비즈니스
1.2.1 컴퓨터 리소스로서의 클라우드
소유
- 소유는 모든 리소스를 기업 안에서 관리하는 방식이다.
- 온프레미스라 부르기도 한다.
- 초기 비용이 많이 든다.
임대
- 컴퓨터 리소스를 빌려주는 기업과 계약을 맺고 필요한 만큼 컴퓨터 리소스를 빌리는 형태다.
- 하드웨어 및 네트워크 인프라스트럭처 구축과 운용을 입대기업에 일임할 수 있다.
- 초기 비용을 비교적 저렴하게 제한할 수 있다.
- 임대 기간이 보통 1개월 단위 또는 그 이상이라 컴퓨터 리소스의 증감을 즉시 이용해야 할 때 대응이 어렵다는 단점이 있다.
- 안프라스트럭처 장애가 발생했을 때도 임대 기업에 의뢰할 수밖에 없어 복구가 지연되기도 한다.
클라우드
- 클라우드를 이용하면 컴퓨터 리소스를 시간 단위 또는 분 단위로 임대할 수 있다.
- 대부분의 경우 브라우저 기반의 관리 화면을 제공하므로, 관리 화면에서의 조작만으로 직접 필요한 컴퓨터 리소슬를 준비할 수 있다.
- 그러나 인프라스트럭처 장애가 발생하는 경우 직접 해결하기가 어렵고 클라우드 제공자에게 지시를 내기리도 어려워 그저 대응을 기다려야 한다는 단점이 있다.
1.2.2 클라우드의 장점
- 고정 비용 -> 변동비용
- 규모의 경제
- 성장을 고려한 용량 예측 불필요
- 검증 및 개발 기간 단축
- 데이터센터 유지 보수 불필요
- 글로벌 전개 가능
1.2.3 IaaS, PaaS, SaaS
1.2.4 AWS에서 제공하는 클라우드 형태
- AWS가 처음 출시한 서비스는 IaaS 유형에 해당하는 시간제 서버 임대였다.
- 클라우드 이용자가 서버를 의식하지 않아도 되는 서버리스 시스템의 서비스를 출시했으며, AI나 머신러닝 분야에서 프로그래밍할 필요 없이 제공되는 기능을 간단히 이용할 수 있는 서비스도 출시했다.
1.3 AWS 제공 솔루션
- AWS 서비스를 이용하면 전 세계의 많은 IT 시스템을 구축할 수 있다.
- AWS가 제공하는 문서에서는 IT 시스템의 종류를 솔루션이라 정의하고, 몇 가지 대표적인 솔루션을 AWS를 이용해 어떻게 구현하는지 설명한다.
1.3.1 엔터프라이즈 애플리케이션 구축
- 엔터프라이즈 애플리케이션이란 서버, 데이터베이스, 네트워크 자이 등을 조합해서 만든 하나의 대규모 시스템이다.
- 이런 시스템은 과거 소유 또는 임대의 형태로 구축했던 인프라스트럭처에서 운용했지만, 이러한 인프라스트럭처 부분을 AWS 서비스를 이용해 운용한다.
1.3.2 서버리스 애플리케이션 구축
- 서버리스 애플리케이션은 애플리케이션을 움직이는 인프라스트럭처를 AWS 기능으로 모두 관리하는 시스템이다.
- 서버의 안전된 가동이나 갑작스러운 부하에 대한 성능 향상 등이 자동으로 수행되며, 애플리케이션 개발자는 단순히 사용한 부분에 대한 비용만 지불한다.
1.3.3 AI와 머신러닝
- AI나 머신러닝에서는 대량의 데이터를 고성능 서버로 분석하고 특정한 문제를 해결하는 모델을 만든다.
- AWS는 클라우드이므로, 모델을 구축하기 위해 짧은 기간동안 막대한 컴퓨터 리소스를 이용하는 용도에 적합하다.
1.3.4 기타 제공 솔루션
- 분석, 데이터 레이크
- IoT
- 스토리지
- 게임 개발
2. AWS 계정 만들기
2.1 AWS 계정이란?
- 하나의 AWS 계정으로 다른 AWS 계정에서 생성한 환경의 서버를 조작할 수 없음
- AWS의 이용료는 AWS 계정 단위로 부과됨
- AWS의 지원 유형은 AWS 계정 단위로 계약함
2.1.1 AWS 계정 생성 시 준비물
2.1.2 루트 사용자
- AWS 서비스는 브라우저에서 조작할 수 있다.
- 조작할 때는 어느 AWS 계정에 관한 서비스를 사용할지 지정해야 한다.
- AWS 계정을 처음에 생성하면 사용자도 자동으로 만들어진다. (루트사용자)
- 루트 사용자는 AWS 계정에 관한 모든 AWS 서비스를 조작할 수 있는 강력한 권한을 가진다.
- 일반적으로 AWS 계정 안에 개발자에게 필요한 권한만 가지는 별도 사용자를 만들고, 이 상요자로 개발을 진행한다.
3. 안전한 조작 준비하기
3.1 IAM
- IAM은 AWS의 리소스 접근을 안전하게 관리하는 시스템으로, 주로 인증과 접근 허가 기능을 구현한다.
3.1.1 인증
- 인증이란 현재 이용하는 사용자가 누구인지에 관한 정보를 AWS에 전달하는 과정이다.
- 사용자에게는 각각 고유한ID가 제공된다.
- 이 ID와 진짜 사용자만 알 수 있는 정보를 함께 로그인 정보로 입력한다.
3.1.2 접근 허가
- 접근 허가란 AWS 사용자가 어떤 기능을 사용할 수 있는가를 관리하고 허가하는 것이다.
3.1.3 루트 사용자
- 루트 사용자는 AWS의 모든 리소스에 접근할 수 있는 매우 강력한 접근 권한을 가진 계정이다.
- 루트 사용자는 AWS의 계약 해지나 사용자 관리 등 특수한 작업 이외에는 이용하지 않고, 대신 통상적인 개발에 사용하는 일반 사용자(IAM 사용자)를 만들고 권한을 부여한다.
3.1.4 사용자와 그룹
- 사용자별로 접근 허가를 설정할 수도 있다.
- 사용자 수가 적다면 큰 문제가 되지 않지만 사용자가 늘어나면 개별 접근 허가를 설정하기란 어렵다.
- 설정 누락이 발생하기도 한다.
- 그룹을 이용한 접근 허가 관리 방법도 제공한다.
- 그룹을 이용하면 접근 허가를 사용자가 아닌 그룹에 부여한다.
- 해당 그룹에 포함된 사용자는 그룹에 부여된 접근 권한을 가진 것으로 간주한다.
- 사용자가 아무리 많아도 접근 허가는 그룹에 대해서만 수행할 수 있어 편리하다.
- 새로운 사용자를 생성했을 때는 대상 그룹에 포함하기만 하면 되므로 설정 누락도 발생하지 않는다.
- 사용자 수가 적더라도 사용자와 그룹을 이용해서 관리할 것을 권장한다.
3.2 IAM 대시보드를 이용해 안전성 확인하기
- IAM에서 AWS를 안전하게 이용하기 위한 기능을 제공한다.
- 인증이나 접근 허가를 수행하는 설정이 올바르지 않으면 부정 이용이 발생하거나 의도치 않게 높은 비용이 청구될 수도 있다.
- AWS 계정 루트 사용자의 액세스 키 잠금
- MFA 활성화
- 개별 IAM 사용자 생성
- 사용자 그룹을 이용한 접근 권한 할당
- 사용자에 대한 강력한 암호 정책 구성
3.2.1 AWS 계정 루트 사용자의 액세스 키 잠금
- AWS에서는 사용자가 대시보드 등을 이용해 대화형으로 조작하는 방법 외에 프로그램을 통해 리소스를 조작하는 시스템도 제공한다.
- 사용자가 조작할 때 ID와 비밀번호를 이용하지만 프로그램 등으로 조작할 때 액세스 키라는 정보를 이용한다.
- AWS의 리소스를 조작하는 것은 권장하지 않기 때문에 루트 사용자의 액세스 키는 없는 상태로 둬야 한다.
3.2.2 MFA 활성화
- 초기 상태 루트 사용자는 메일 주소와 비밀번호의 조합만으로 로그인할 수 있다.
- 이것은 루트 사용자가 가진 권한의 강력함에 비해 상대적으로 안전한 인증 방법이 아니기 때문에 더 안전한 방법이 필요하다. -> AWS에서는 이를 위해 MFA를 이용한다.
- AWS에서는 비밀번호 + 인증 디바이스 두 가지로 MFA를 수행한다.
- 인증 디바이스에는 USB를 이용해 접속하는 유형과 소형 기기와 같은 전용 하드웨어를 이용하는 유형도 있다.
- 현재는 널리 보급된 스마트폰을 가상 MFA 디바이스로 이용하는 방법이 많이 쓰인다.