- RDS
- Database 서버를 클라우드에서 동작시키고, 이용자는 Database만 사용 → PaaS
- 장점 : DB 서버 관리 안 해도 됨 (DB 대용량으로 관리 전부 AWS에서 함)
- DB는 로드밸런서를 사용하기 어려움(★★★) : Master DB에서 수행하기 때문 (데이터 일관성) → 대용량 사용
Slave DB는 Master DB에서 정보를 받고 사용자들이 읽기 요청 시 처리
- Database에 대한 root권한 없음 (높은 권한 사용자만 권한 주어짐)
- Database가 설치된 서버에 대한 통제권 없음 (OS 권한 없음) (★★)
- 서버, 가상머신(EC2), 컨테이너, Lamda 부족 시 Auto Scaling 통해 자동 확장 가능, 로드 밸런서 사용
- 컴퓨팅 설비 운영 방식
- On-Premise : 사용자들이 직접 자신의 회사 내에 서버, 네트워크 등 구성해 운영하는 것
- Hybrid : On-Premise + Cloud
- All in Cloud : 모든 서버와 네트워크를 클라우드에 구성하는 것
- Multi-Cloud : 여러 회사 클라우드 사용
Hybrid Server 구축 실습)
web server only에 apache2, PHP 등 9개, vim, Gnuboard 설치
$ sudo apt update
$ sudo apt install vim
$ sudo apt install apache2
$ sudo apt install php php-mysql php-common php-gd php-fpm php-xml php-json php-curl git
$ cd /var/www/html
$ sudo git clone https://github.com/gnuboard/gnuboard5
$ cd gnuboard5
$ sudo mkdir data
$ sudo chmod 777 data
$ sudo service apache2 restart
-- rds 안넣음 --
- DB : RDS
- 사용 설정 : workbench
- IAM
- Identification (식별) : 다른 사용자와 구분되는 사용자의 정체성
- Authentication (인증) : 지식, 소유, 생체, 위치기반
- Authorization (인가=권한부여) : 읽기, 쓰기, 수정, 등 권한 업무에 맞게 부여
- 인증 (Authentication)
- 올바른 사용자임을 증명 (본인 인증)
① 지식기반 : 알고 있는 것으로 증명 (What You Know)
방법 : 패스워드, 패스프레이즈 등
② 소유기반 : 가지고 있는 것으로 증명 (What You Have)
방법 : 열쇠, 신분증, 카드, OTP 등
③ 생체기반 : 생체적 특징으로 증명 (What You Are)
방법 : 지문, 홍채, 망막, 손바닥 등
④ 위치기반 : 자신이 있는 위치로 증명 (What You Are)
방법 : GPS, Wi-Fi 등
→ 최소 2가지 이상 사용해야 안전
- 접근 (Access)
- Subject (주체) : 접근하는 쪽 ex) User, Program, Process, Cloud Service 등
- Object (객체) : 접근받는 쪽 ex) Data, File, Database 등
- 접근 권한 부여 : Subject가 Object 접근 통제 (Control)
- 클라우드 종류
- 클라우드 업체가 책임지는 범위 : laaS < Paas < SaaS
- SECaaS : Security as a Service (클라우드에서 보안 서비스 제공)
- 계정의 종류
- 사용자 (User) : 1인당 1개 부여
- 사용자 그룹 (User Group) : 사용자가 많을 때, 권한 일괄적으로 부여, 제거 가능
- 정책 (Policy) : 세부적인 권한 모아 정책으로 만듦
- 역할 (Role) : 정책 모아 역할 생성 → 다른 클라우드 서비스 부여 (★★★)
- 정책
- Root 계정 업무 사용X
- AdministratorAccess : 모든 서비스에 대해 모든 권한 → 최소한 인력에게만 부여
- 필요한 만큼만 제공
- Access Key
- Command Line만 사용해야 하는 상태에서 로그인 대신 사용할 수 있는 Access key(ID)와 Secret Key(PW) 부여
- Amazon의 EC2, S3을 Command Line으로 확인, 생성, 관리할 수 있는 방식
- API 연결 가능 : API를 통해 다른 Subject or Object 작업 가능
- 인터넷에 공개 X
AWS CLI 설치
$ sudo apt update
$ sudo apt install python-setuptools python3-pip -y
$ sudo apt install net-tools
$ sudo apt install vim
$ sudo pip install awscli
공개형 Bucket 생성)
① S3 목록 > 버킷 만들기
② 버킷 이름 적기
③ 객체 소유권 ACL 활성화됨 클릭
④ 모든 퍼블릭 액세스 차단을 풀기
⑤ [현재 설정으로 인해 이 버킷과 그 안에 포함된 객체가 퍼블릭 상태가 될 수 있음을 알고 있습니다] 클릭
⑥ 버킷 만들기
⑦ 생성된 버킷 클릭 > 업로드 > 파일 추가

⑧ 권한은 퍼블릭 읽기 액세스 권한 부여 클릭
- 로드 밸런싱 (Load Balance)
- 기기 여러 대에 분산하여 처리하는 방법
- 가용성(Availability) : 항상 사용 가능한 상태 유지
- 분산해 더 많은 클라이언트들 접속 가능
- 서버가 고장이 나더라도 다른 서버가 응답하기 때문에 가용성 향상
- 서버에 문제 발생을 확인(Health Check)하는 기능도 존재
※ Hot-Standby
1 | 2 | 3 | 4 |
Hot | Standby | ||
Down | Hot | Standby | |
Down | Down | Hot | Standby |
- 로드 밸런서 종류
① ALB (Application Load Balancer)
: 7계층 로드 밸런서, URL 등을 보고 부하를 분산
② NLB (Network Load Balancer)
: 4계층 로드 밸런서, Port번호를 보고 부하를 분산
※ 방화벽 로드밸런서 (Firewall Load balancing)
- 네트워크 중간에 있는 장비 앞뒤로 로드밸런서 배치
2대의 EC2 인스턴스 생성)
- 정상 동작하는 EC2 한 대 필요함
- Web Server 배경화면 레드, 블루로 설정
- Subnet 2개 이상 필요
: 여러 개 Subnet에 로드밸런싱 가능 (Public, Private 상관X)
: 가용영역 2개 지정 // ex) A에 4대 or C에 4대
: 모든 Subnet 라우팅 테이블에 명시적 등록
① 인스턴스 시작 설정
⑴ 이름: ksh_red
⑵ OS : Ubuntu Sever 22.04 LTS
⑶ 인스턴스 유형 : tr.micro
⑷ VPC : Sh_vpc
⑸ Subnet : Shho
⑹ 퍼블릭 IP 자동 활당 : 활성화
⑺ 방화벽(보안그룹) : web_server
② 생성 후 인스턴스 > 연결 > ssh 클라이언트를 눌러 예에 있는 걸 복사

③ ssh 연결 통해 ubuntu 접속

④ 명령어
$ sudo apt update
$ sudo apt install vim
$ sudo apt install apache2
$ cd /var/www/html
$ sudo mv index.html index.old
※ index.html 파일 수정
- img src에 버킷에 있는 사진 링크 복사 붙여넣기
- 전부 복사 ([ctrl]+[A]) 한 후 $ sudo vi index.html에 붙여 넣은 후 :wq

⑤ ksh_red에 부여된 Public IP 주소로 들어가기

⑥ ksh-blue도 똑같이 적용하여 생성하기
※ 템플릿으로 생성 시 번거롭게 다시 설정해줄 필요없음
⑴ ksh_red 인스턴스 ID 오른쪽 마우스 클릭
⑵ 이미지 및 탬플릿
⑶ 인스턴스에서 템플릿 생성
⑷ 이름 적고 시작 템플릿 생성 클릭

⑸ 템플릿으로 인스턴스 시작
⑹ ksh_temp 클릭
⑺ 인스턴스 시작
⑻ 이름 변경(ksh_blue)

※ ④의 명령어들은 다시 설정해야 함
ksh_red와 동일하게 index.html을 복사 붙여넣기한 후 'bgcolor=blue'로만 변경

⑼ 마찬가지로 ksh_blue에 부여된 Public IP 주소로 들어가기

⑦ 로드밸런싱 탭에 로드밸런서 경로로 이동 후 로드 밸런서 생성 클릭
⑧ 로드밸런서 유형 > Application Load Balancer > ALB 생성 클릭

⑨ 기본 구성
⑴ 이름 : web-alb
⑵ 체계 : 인터넷 경계, IP 주소 유형 : IPv4
⑶ vpc : ksh_vpc
⑷ subnet : 2a, 2c (Public, Private 상관X)


※ 명시적 서브넷 연결이 모두 되어있어야 하므로 설정
VPC > 라우팅 테이블 > 서브넷 연결 편집

⑸ 보안 그룹 : web_server
⑹ 리스너 HTTP : 80
※ 대상 그룹 생성해줘야 함
⑴ 대상 그룹 생성 > 인스턴스 > 대상그룹 이름(tg-web)
⑵ 프로토콜 : HTTP
⑶ 포트 : 80
⑷ vpc : ksh_vpc
⑸ 프로토콜 버전 : HTTP1
⑹ 서버 다운 여부를 HTTP 프로토콜로 확인
→ 서버 다운 시, 해당 서버로 트래픽 전송X
⑺ 생성 후, 타겟 등록을 위해 밖에 있는 인스턴스들을 체크해 '아래에 보류 중인 것으로 포함' 클릭
⑻ 대상 그룹 생성 클릭


⑼ 새로고침 후, 만든 타겟 (tg-web) 클릭

⑽ 로드 밸런서 생성 클릭

⑩ 생성된 로드밸런서의 DNS 이름의 URL 복사해 웹 사이트 접속 가능

⑪ 새로고침 시 Red와 Blue가 번갈아가면서 나타남
![]() |
![]() |
'SK shieldus Rookies 9기 > 클라우드 보안' 카테고리의 다른 글
클라우드 보안 수업 6일차 (22/10/05) (0) | 2022.10.05 |
---|---|
클라우드 보안 수업 5일차 (22/09/30) (0) | 2022.09.30 |
클라우드 보안 수업 3일차 (22/09/28) (0) | 2022.09.28 |
클라우드 보안 수업 2일차 (22/09/27) (0) | 2022.09.27 |
클라우드 보안 수업 1일차 (22/09/26) (0) | 2022.09.27 |