본문 바로가기

클라우드/AWS

[ 클라우드 ] 6일차 ( 로드밸런싱, route53 이론 )

* 로드밸런싱 (Load Balancing)
- 서버(EC2 instance)의 부하를 줄이기 위해서 서버 앞단에 배치하고, 여러 서버에 트래픽을 분산하는 방식
- 수많은 클라이언트가 접속하더라도 트래픽을 처리할 수 있게 됨
- 클라우드 환경에서는 L4스위치를 가상화한 장치를 사용해서 제공


* Load Balancing 방식
1) Round Robin (순차분배방식) : 순차적으로 트래픽을 배분하는 방식    A-->B-->C-->D-->A-->B-->.....
2) Weighted Round Robin (가중치를 부여한 순차분배방식) : 서버의 용량등을 고려해서 순차분배하는 방식
3) Least Response Time (응답시간이 짧은 서버에 우선분배) : Health Check를 할 때 가장 빠르게 응답하는 서버에 우선 분배
4) Least Connection (연결 개수가 적은 서버에 우선분배) : Client와의 연결 개수가 적은 쪽이 여유가 있기 때문에 우선 분배
5) Hash Function (출IP,목IP,출Port,목Port등을 해쉬값을 계산하는 방식) : 같은 Client와 같은 Server를 계속 연결하는 방식 (Sticky Session)

참고) Sticky Session(고정 세션) : 세션의 연결이 지속적으로 유지 -----> 고객에 대한 정보를 같은 서버에서 계속 보유할 수 있음

* ALB는 Round Robin,   NLB는 Hash Function이 지원됨

* NLB (Network Load Balancer)
- 리스너에 포트번호와 프로토콜 지정 -----> Port번호를 기반으로 로드밸런싱
- EIP(Elastic IP, 탄력적 IP ----> 퍼블릭 고정IP)를 NLB에 설정 가능 -----> 도메인 주소를 EIP와 연결 (DNS등록)


* DNS (Domain Name Service)
- 도메인 주소를 입력하면 그 주소에 해당하는 IP주소를 알려주는 서비스

* DNS 기록타입
- 정방향 조회 : A  ----> 도메인 주소를 입력하면 IPv4주소를 알려줌
                    AAAA   ----> 도메인 주소를 입력하면 IPv6주소를 알려줌  (AAAA=A6)
- 역방향 조회 : PTR (Pointer)  -----> IPv4/IPv6를 입력하면 도메인 주소를 알려줌     ex) E-mail 패킷을 처리할 때
- CNAME : 별칭
- NS : Name Server

* Route53
- AWS에서 제공하는 DNS 서비스
- 도메인 등록 대행, 도메인 관리(구입/반납/환불 등), 도메인을 IPv4/IPv6주소 또는 CNAME등과 연결
- AWS에서는 ~~.kr은 등록 안됨  

* 구입한 도메인을 EIP에 연결  ------> Route53에서 설정
  EIP를 NLB에 설정 
  NLB의 Target으로 Auto Scaling을 지정


* Route53에서 지원하는 라우팅 정책
- Weighted Round Robin : 가중치를 고려한 라운드 로빈 (관리자가 지정하기 나름)
- 지연 기반 라우팅 : 응답이 빠른쪽에 우선해서 IP를 알려줌 (그때 그때 다름)
- 장애 대응 라우팅 : 한쪽만 100% 사용하다가, 문제 발생시 다른 쪽으로 전환하는 방식 (100:0  ---> 0:100)
- 지역 DNS 라우팅 : 지역별로 다른 IP주소를 알려줌

* IAM (Identity and Access Managment)
- AWS 계정과 접근 관리하는 서비스

* 인증(Authentication)
- 올바른 사용자임을 증명하는 것
1) 지식기반 : 알고있는 것으로 증명하는 것
    ex) 비밀번호(현관,금고,웹사이트),  암구어,  패스프레이즈(문구)  등
2) 소유기반 : 가지고 있는 것으로 증명하는 것
    ex) 인증서, 열쇠, 카드(신용/체크/현금/스마트), 신분증, 마패/호패, 차량번호판, SSH키, 개인키, 토큰, 휴대폰 등
3) 생체기반 : 생체 특징으로 증명하는 것
    ex) 얼굴, 지문, 홍채/망막, 손바닥(골짜기/융기선), DNA, 정맥패턴(손등), 손모양, 
4) 위치기반 : 위치를 기반으로 인증하는 방식
    ex) GPS, WiFi, 통신사(3G/4G/5G)삼각측량 등
5) 행동기반 : 움직임 특성
    ex) 서명(싸인), 걸음걸이, 제스쳐 등

* Multi-Factor 인증을 해야 함
----> 2종류 이상의 인증을 통해서 인증을 해야 안전함

* AWS에서도 Root계정은 Multi-Factor 인증을 하도록 요구하고 있음 ★
- Root 계정은 이메일 사용(ID/PW:지식기반) -----> 로그인 관련 메일, 메일로 본인 확인 절차 사용(소유기반)
- 추가 인증으로 구글OTP 사용 (소유기반)
    (OTP : One Time Password)

* AWS의 일반 사용자 계정★
- 권한을 어떻게 부여해야 할까요?  최소 권한 (Least Privileges)을 부여해야 함. 
- 과도한 권한을 부여하면?  권한을 남용해서 부정행위 또는 불법행위의 가능성이 높아짐.

**skinfosec291!

* Root계정을 이메일로 등록하면★
- 바꿀수가 없음 ----> 이메일을 가진 사람이 퇴사하면? 
- 개인계정으로 root계정을 만들면 안됨,  회사 메일로 aws전용 계정을 생성해서 관리 (패스워드와 이메일 계정을 인수인계하도록)
- root계정의 패스워드를 바꾸면, 퇴사자가 메일로 패스워드 복구시도 가능하기 때문에 위험 -----> 추가 Multi-Factor인증으로 전환해야 함

* Role
- ec2에서 생성한 로그를 S3에 저장하는 경우
- Beanstalk등을 사용하면 자동으로 EC2, S3, RDS 등을 생성함 ----> Role을 부여해야 함
- 주체(Subject) : 객체를 조작하거나 통제하는 능동적인 개체      ex) 사용자, 프로그램, 프로세스 등
- 객체(Object) : 주체에 의해서 조작이나 통제되는 수동적인 개체    ex) 파일, 디렉토리, 스토리지 등
------> 주체와 객체는 상대적임
- Role : 주체가 객체에 접근할 수 있도록 사전에 정의된 권한
- Role은 AWS의 서비스에 할당하도록 되어 있음, PaaS 서비스에서 Role을 많이 사용
    ex) PaaS : 개발자를 위한 플랫폼, 개발자들이 infra에 대한 관리를 최소화하고 개발에 초점을 맞출 수 있도록 하는 서비스
         ----> Beanstalk, Cloud9, CodeDeploy 등등

* 정책(Policy)
- 정책 이름 앞에 주황색 정육면체 아이콘이 있으면 AWS에서 만든 기본 정책임 (삭제 불가 및 삭제하면 안됨)
- 주황색 정육면체 아이콘이 없으면 개인적으로 만든 것 또는 PaaS 설정 과정에서 만든 것임
- 사용자에게 부여할 수 있음