• RDS 실습
- Database 서버를 클라우드에서 동작시키고, 이용자는 Database를 사용하기만 함 --> PaaS
- 장점 : DB서버 관리를 하지 않아도 됨(DB 대용량으로 교체, 백업, 관리 등을 AWS에서 관리해준다.)
- DB는 로드밸런서를 사용하기 어려움⭐⭐⭐ : Master DB에서 쓰기를 수행하기 때문(데이터 일관성) ---> 대용량을 사용
‣ Slave DB는 Master DB에서 정보를 받고 사용자들이 읽기 요청을 할 때 처리해줌
- Database에 대한 root 권한이 없음(권한이 높은 사용자 권한만 주어짐)
- Database가 설치된 서버에 대한 통제권이 없음(OS에 대한 권한 없음)⭐⭐
• 서버, 가상 머신(EC2), 컨테이너(ECS), Lambda들이 부족하면?
⇒ Auto Scaling을 통해서 자동으로 확장 가능, 로드 밸런서(부하 분산장치) 사용
• 컴퓨팅 설비 운영 방식
- On-Premise : 사용자들이 직접 자신의 회사 내에 서버, 네트워크, 등을 구성해서 운영하는 것
- Hybrid : On-Premise와 Cloud를 섞어서 사용하는 방식
- All in Cloud : 모든 서버와 네트워크를 클라우드에 구성하는 것
- Multi-Cloud : 여러 회사의 클라우드를 사용하는 것 AWS과 Azure, GCP, NCP 등을 사용하는 것
• Hybrid Server 구축하기
- Ubuntu Web Server에는 Apache2,PHP등 9개, Vim, Gnuboard 설치 - DB는 RDS를 사용 DB에 대한 설정은 Workbench를 활용 |
1) 데이터베이스 만들기
Workbench에서 RDS에 연결을 하기 위해서는 퍼블릭 액세스가 활성화되어있어야 한다.
hcmdb 데이터 베이스를 생성하였다.
hcmdb를 눌러보면 연결&보안을 볼 수 있다.(엔드포인트 및 포트 확인)
2) 그누보드 설치
sudo apt update를 해준 후 아파치 설치를 해준다.
PHP 언어에 사용할 것들을 설치해준다.
github에서 있는 그누보드를 가져와 설치를 해준다.
아파치 서버를 재시작해준다.
ifconfig를 사용하기 위해서는 net-tools를 설치해줘야 한다.
3) Workbench 연결 및 데이터베이스 생성
RDS의 엔드포인트와 마스터 ID, PW를 넣어준다.
DB를 만들어 board 계정을 만들면서 gnuboard의 모든 테이블의 권한을 부여해줬다.
4) 실행
RDS의 엔드 포이트:3306를 호스트에 넣어준다.
잘 동작이 되는지 사진 업로드를 해보았다.
* RDS에 접속이 안되는 경유 - VPC를 여러분이 마든 VPC로 선택해야함(EC2와 연결하는 VPC를 선택한 경우) - 보안 그룹 설정할 때 db_server로 선택(3306번 포트를 오픈하도록 설정한 보안 그룹) - 퍼블릭 IP 활성화 |
•IAM
- Identification(식별) : 다른 사용자와 구부 되는 사용자의 정체성 ex) ID, ID카드, 학번, 주민등록번호 등
- Authentication(인증) : 지식기반, 소유 기반, 생체기반, 위치기반 ----> 본인임을 인증하는 방식
- Authorization(인가=권한 부여) : 읽기, 쓰기, 수정, 복사, 삭제, 출력 권한을 업무에 맞게 부여하는 것
•인증(Authentication)
- 올바른 사용자임을 증명하는 것(본인 인증)
‣ 지식기반 : 알고 있는 것을 증명하는 것
- 대표적인 방법 : 패스워드(=암호), 패스프레이즈(패스워드보다 긴 문구), 암구호, 야구에서 사인 등
‣ 소유 기반 : 가지고 있는 것으로 증명하는 것
- 대표적인 방법 : 열쇠, 신분증, 카드, OTP, 공인인증서, 휴대폰 인증(SNS), 마패/호패
‣ 생체기반 : 생채적 특징으로 증명하는 것
지문, 홍채, 망막, 손바닥, 손 모양, 손등(정맥), 얼굴, 목소리, 제스처 등
‣ 위치기반 : 자신이 있는 위치로 증명하는 것
GPS, Wi-Fi(IP주소), 통신사, 기지국 삼각측량
• 인증에서 중요한 것은 Multi-Factor 인증을 사용해야 함
⇒ 네 가지 방식 중에 최소한 2가지 이상을 사용해야 안전함
‣ AWS에서는 Multi-Factor 인증을 권장 : 비밀번호 + 구글 OTP, Root계정의 경우 Email로 인증을 추가해서 사용
• Root계정을 개인 메일로 등록한 사람이 퇴사하면?이메일 회사에 반납 안하면? ⇒구글OTP를 사용해서 Multi-Factor 인증을 사용해야 함(퇴사한 사람은 구글OTP접근이 안되므로 PW변경할 수 없음) |
• Root 계정 관리 방법
- AWS 가입할 때, root계정을 회사의 AWS용 계정을 별도로 만들어서 이걸로 등록해야 함(AWS담당자가 메일 관리를 해야 함)
• 프로젝트를 할 경우
- root 계정을 제공하면 안 됨
- 사용자를 생성하고 권한을 부여해야 함
- 권한은 최소한의 권한(Least Privilges)을 부여해야 함
- 권한을 너무 많이 주면?? 부정행위나 불법행위의 가능성이 높아짐
- 정보는 꼭 필요한 만큼만 알려줌 (Need to Know) ---> 업무를 수행하는데 필요한 만큼만 알려줌
• 접근(Access)
- Subject(주체) : 접근을 하는 쪽 ex) User, Program, Process, Cloud Service 등
- Object(객체) : 접근을 받는 쪽 ex Data, File, Directory, Database 등
- 접근 권한을 부여 : Subject가 Object에 접근하는 것을 통제(Control)
ex) EC2가 로그를 S3에 저장하려면? 접근 권한을 모아서 Role을 EC2에 부여해야 함
• 클라우드의 종류
- 클라우드 업체가 책임을 지는 범위 : IaaS < PaaS < SaaS
- SECaaS : Security as a Service (클라우드에서 보안 서비스를 제공하는 것) ex) 건물 충입(얼굴 정보가 Cloud에 저장), 통합 로그인
cf) RaaS : Ransomware as a Service (클라우드에서 랜섬웨어를 제공하는 것)
• 계정의 종류
- 사용자(User) : 1인당 1개씩 부여(여러 사람이 하나의 ID를 공유하면? 사고 발생 시, 책임소재를 찾을 수 없음)
- 사용자 그룹(User Group) : 사용자가 너무 많으면, 권한을 일괄적으로 부여하거나 제거할 수 있음
- 정책(Policy) : 세부적인 권한을 모아서 정책으로 만듦
- 역할 (Role) : 정책을 모아서 역할(role)을 만듦 -> 다른 클라우드 서비스에 부여(CloudFormation 등 자동화 도구 등)⭐⭐
• 정책
- Root 계정은 업무에 사용하지 않음
- AdministratorAcess : 모든 서비스에 대해 모든 권한 --> 최소한의 인력에게만 부여해야 함
- 꼭 필요한 만큼만 제공
ex) 프로젝트에 참여하지 않는 임원이 프로젝트 진행을 보려고 하는 경우, 어떤 권한을 부여하면 될까요? EC2 ReadOnlyAccess 권한만 준다.
• Access Key
- Command Line만 사용해야 하는 상태에서 로그인 대신 사용할 수 있는 로그인 Access Key(ID)와 Secret Key(PW)를 부여함
- Amazon의 EC2, S3 등을 Command Line으로 확인, 생성, 관리할 수 있는 방식
- API 연결이 가능 : API를 통해서 다른 Subject 또는 Object와 작업 가능
- 인터넷에 절대 공개해서는 안됨 ---> 채굴기가 Cloud에 연결될 수 있음 (시간당 1000만 원씩 나옴)
• 로드밸런싱
- 가용성(Availability) : 항상 사용 가능한 상태를 유지하는 것
- 서버들의 부하를 분산해주기 때문에 더 많은 클라이언트들이 접속할 수 있음
- 혹시, 서버가 고장이 나더라도 다른 서버들이 응답하기 때문에 가용성 향상
- 서버에 문제 발생을 확인(Health Check)하는 기능도 있음
• 로드밸런서의 종류
- ALB (Application Load Balancer) : 7 계층 로드 밸런서 ----> URL 등을 보고 부하를 분산
- NLB (Network Load Balancer) : 4 계층 로드 밸런서 ----> Port번호를 보고 부하를 분산
• 로드밸런서 실습
1) 여러 대의 EC2를 생성하기
- 정상적으로 동작하는 EC2 한대가 필요함
- 템플릿을 만든다
우분투 기반의 인스턴스를 생성해준다.
CMD에서 EC2에 접속을 해준다.
아파치를 설치해준다.
원래 있던 index.html을 old로 확장자를 바꿔주고 vi명령어로 새로운 index.html 파일을 만들어주자.
지난 실습에 사용한 index.html를 nodepad++로 열어 소스코드를 수정후 복사를 해준다.
버킷에 있는 이미지를 넣어줬다.
복사한 소스 코드를 붙여 넣어준다.
EC2 퍼블릭 주소로 웹 브라우저에 들어가면 내가 바꾼 index.html 파일이 실행이 된 걸 볼 수 있다.
EC2에서 작업 버튼을 눌러 인스턴승에서 템플릿 생성으로 이동을 해준다.
hcm_temp 템플릿을 생성할 수 있다.
만든 템플릿을 시작하기 위해 템플릿으로 인스턴스 시작을 해준다.
그다음 시작된 템플릿의 이름을 hcm_blue로 수정을 해준다.
hcm_blue의 SSH클라이언트 주소를 복사해 EC2에 들어가 주고 hcm_red에서 한 명령어를 그대로 해준다.
index.html를 red에서 blue로 모두 수정을 해주고 이미지 또한 변경을 해주고 소스코드를 복사를 한다.
복사 소스 코드를 넣어준다.
2) 로드밸런서 설치
※ Load Balancer 생성시 주의사항
• Subnet이 2개 이상 ‣ Public, Private상관없이 2개면 됨
‣ 가용 영역(AZ)을 2개 지정(EC2가 한쪽에 있어도 됨)
‣ 모든 서브넷이 라우팅 테이블에 명시적으로 등록
•Target Group을 생성
‣ 인스턴스를 추가 --> Instance Pending Below •EC2의 개수와 Subnet을 Load Balancer에 등록하는 것은 상관 없음
|
위 두 개의 EC2를 만들었으면 로드밸런서를 클릭해준다.
Application Load Balancer를 생성해준다.
web-alb 이름으로 만들어준다.
두개의 다른 리전에 서브넷을 연결해준다.
처음에는 target group이 없기 때문에 타깃 그룹을 만들어줘야 한다.
• target group 만들기
두 개의 EC2를 선택을 해주고 Include as pending below 해준다.
로드 밸런서가 설치가 다된 거다 DNS 주소로 들어가 확인을 해보자.
hcm_red EC2가 나왔고 새로 고침을 해주면
hcm_blue EC2가 나온다.
계속 새로고침 해줄 때마다 반복된다.
'Rookies 9기 > 클라우드 보안' 카테고리의 다른 글
클라우드 보안 6일차 (0) | 2022.10.05 |
---|---|
클라우드 보안 5일차 (0) | 2022.09.30 |
클라우드 보안 3일차 (0) | 2022.09.28 |
클라우드 보안 2일차 (0) | 2022.09.27 |
클라우드 보안 1일차 (0) | 2022.09.26 |