AWS DVA 자격증 취득을 위해 공부한 내용을 기록합니다.
IAM은 Identity and Access Management의 약자로 사용자를 생성하고 그룹을 생성하고 배치하는 글로벌 서비스다.
AWS를 처음 사용할 때는 회원가입한 ROOT 계정을 사용할 수도 있지만 보안상의 이슈로 권장하지 않는다. AWS를 사용할 사용자 추가와 그룹 그리고 권한으로 관리하는 것이 좋다.
그룹이란 사용자들을 묶을 수 있는 단위로 사용자에게 JSON으로 권한 및 정책을 연결할 수도 있다. 그룹에는 사용자만 배치할 수 있고 사용자가 여러개의 그룹에 속해있을 수도 있다.
사용자가 그룹에 배치가 안 되는 경우도 있으며 이 경우에는 인라인 정책을 이용하여 그룹이 아닌 사용자에게 정책을 연결 할 수도 있다.
정책은 위의 이미지와 같이 JSON 형태로 구성되는 데, 각 키가 의미하는 바는 VERSION은 정책에 대한 버전이고, ID는 정책을 식별할 수 있는 값이며, 정책은 여러개 문장으로 구성이 가능하다.
SID는 문장을 식별하는 ID, effect는 특정 API에 대해서 접근을 허용하는 지에 대한 설정이고, principal은 해당 정책에 연결될 사용자 혹은 계정을 의미한다.
Action은 effect에 기반되어 허용 혹은 거부되는 API 호출 목록이며 Resource는 action의 리소스 목록이다.
사용자에 대한 보안을 강화를 해야한다. 사용자들은 계정에 권한이 있고 구성을 변경하거나 리소스를 삭제하는 등의 많은 것을 할 수 있기에 보안에 많은 신경을 써야한다.
그를 위한 방법으로는 비밀번호 정책과 다요소 인증 MFA를 사용할 수 있다.
먼저 비밀번호 정책은 쉽게 생각하면 비밀번호를 복잡하게 설정하는 거다. IAM에서 사용자들의 비밀번호에 대한 정책(대문자 포함, 몇글자 이상 등.)을 정할 수 있고, 임의로의 비밀번호 변경 비허용, 비밀번호 재설정 주기, 비밀번호 재사용 금지 등의 규도 추가할 수도 있따.
다요소 인증 MFA는 비밀번호와 MFA 토큰을 이용한 로그인 방법으로 더욱 안전한 로그인을 제공하며, MFA를 사용하면 비밀번호가 노출되어도 MFA 토큰이 있어야하기에 보안에 안전하다.
AWS를 접근할 수 있는 방법은 3가지가 존재한다.
-
AWS console
AWS에서 제공하는 console로 구글에 AWS라고 검색하여 나오는 Web Site이다. 사용자의 이름 및 비밀번호와 MFA 등의 다요소 인증으로 보호된다.
-
AWS CLI
AWS CLI는 Command Line으로 컴퓨터에서 Access Key를 이용하여 실행하는 걸로 즉 터미널에서 AWS에 접근 가능하다.
-
AWS SDK
어플리케이션 내부에서 AWS에 API 등을 호출하여 접근하고자 할 때 사용되는 방식으로 AWS CLI와 마찬가지로 Access Key를 이용하여 접근한다.
AWS 공동 책임 모델이란 AWS를 사용함에 있어서 사용자와 AWS 둘 다 책임을 가진다는 것이다.
AWS에서는 인프라, 글로벌 네트워크 보안 등에 대해 책임지지만, IAM에 대해서는 사용자가 책임자가 된다. 즉 사용자 생성, 그룹, 역할, 정책 관리, MFA 활성화 등은 사용자의 책임이 된다.
EC2는 Elastic Computer Cloud의 약어로 AWS에서 제공하는 Infrastructure as a Service이며, AWS 서비스 중 가장 사용률이 높다.
EC2는 하나의 서비스가 아닌 여러가지 기능을 포괄한 개념이다.
- EC2 Instance : 가상 머신 대여
- EBS Volumn : 가상 드라이브
- ELB : 로드밸런서
- ASG : 오토 스케일링
EC2에는 다양한 유형의 인스턴스가 존재한다.
-
General Purpose(T로 시작)
웹 서버나 코드 저장소와 같은 다양한 작업에 적합하며, 컴퓨팅과 메모리, 네트워킹 간의 밸런스가 좋은 편이다.
-
Compute Optimized(C로 시작)
컴퓨터 집약적인 작업에 최적화된 인스턴스로, 데이터의 배치나 고성능 웹서버, 머신 러닝, 게임 서버 등의 높은 CPU와 컴퓨팅을 요구하는 작업에 사용한다.
-
Memory Optimized(R로 시작, X1, Z1도 있음.)
메모리에서 대규모 데이터를 처리하는 유형의 작업에 빠른 성능을 제공하며, 인메모리 데이터 베이스에 많이 사용되며 비정형 데이터나 실시간 처리를 위한 어플리케이션에서도 많이 사용된다.
-
Storage Optimized(I, G, H)
로컬 스토리지에서 대규모 데이터를 접근할 때 적합한 인스턴스로 OLTP, Redis나 NoSQL 데이터베이스에서 자주 사용된다.
보안그룹은 AWS 클라우드에서 네트워크 보안을 실현하는 가장 기본적 기능이며, 이를 이용하여 EC2의 인바운드 및 아웃바운드의 트래픽을 관리하며, 규칙을 이용하여 제어한다.
보안그룹에서는 IP와 포트를 기반으로 한 룰을 생성한다. 또한 다른 보안 그룹을 참조하는 것도 가능하다
EBS는 Elastic Block Store의 줄임말로 인스턴스가 실행 중인 동안 연결 가능한 네트워크 드라이브다. EBS를 이용하여 인스턴스가 죽어도 데이터는 사라지지 않는다.
1개의 EBS에는 여러개의 인스턴스가 연결될 수 없지만 1개의 인스턴스에는 여러개의 EBS를 연결할 수 있다. 또한 네트워크 드라이브이기에 같은 가용영역에 있어야한다.
EC2를 생성할 때 생성한 EBS 볼륨은 기본적으로 EC2가 삭제될 떄 같이 삭제되는 옵션이지만 생성할 때 수정가능하다.
EBS Snapshot은 특정 시점의 EBS Volume의 백업 파일이다. EBS 스냅샷을 이용하면 볼륨을 다른 가용영역이나 리전으로 옮길 수 있다.
-
gp2, gp3
범용성 SSD Volume
-
io1, io2
최고 성능에 사용하는 Volume으로 지연 시간이 낮고 대용량의 워크로드에서 사용한다.
-
st1
저비용의 HDD Volume으로 잦은 접근과 처리량이 많은 워크로드에서 사용한다.
-
sc1
sc1 볼륨은 가장 비용이 적게 드는 HDD 볼륨으로 접근 빈도가 낮은 워크로드를 위해서 설계되었다.
EBS 볼륨은 크기, 처리량과 IOPS 등을 가지고 어떤 것을 사용할 지 정해야한다. IOPS는 초당 I/O 처리수를 의미한다.
EC2에서는 gp2/gp3와 io1/io2만 boot volume으로 사용 가능하다
gp2는 지연 시간이 짧은 효율적인 비용의 스토리지다. System Boot Volume에서 사용되며 1GB - 16TB까지 지원된다.
gp3는 최신 세대의 볼륨으로 IOPS와 처리량을 독자적으로 설정이 가능하지만 gp2는 연결되어있다는 점이다.
Amazon Machine Image를 의미하는 AMI는 사용자 지정 EC2 인스턴스를 의미하는 데, AWS에서 생성한 AMI를 이용하거나 Custom AMI를 생성할 수도 있다.
AMI는 운영체제를 설정하거나 필요한 도구를 설치하는 것을 정의할 수 있는 데 이를 이용하면 부팅과 구성에 시간을 아낄 수 있다.
EC2는 생성을 할 때 스펙이 정해지지만 가끔 그보다 더 높은 성능이 요구될 때가 존재한다. 이럴 때는 EC2와 연결된 하드웨어 디스크 성능이 향상되어야하는 데 이 때 EC2 Instance Store를 이용할 수 있다.
Ec2 Instance Store는 I/O에 대한 성능을 높일 수 있기에 필요할 때 사용할 수 있도록 확보할 필요가 있지만 인스턴스 스토어를 중지하면 스토리지도 손실되기에 임시 스토리지라고도 불린다.
따라서 버퍼나 캐시 혹은 임시 콘텐츠를 저장할 용도의 스토리지로 적합하다 장기적인 저장을 위해서라면 EBS를 사용해야한다.