With 그림으로 이해하는 AWS구조와 기술 ( http://www.yes24.com/Product/Goods/102368122 )
* 인증
= 다단계 : 1차 인증 후에 2차 인증을 하는 방식 (종류와 관계없음) ex) i-pin
= 다요소 : 서로 다른 종류의 인증을 하는 방식 ex) 계좌이체 : 공인인증서+비밀번호+OTP
* AWS에 회원 가입을 하면 계정 생성 (Root 계정) p.100
= Root 계정으로 사용자 생성 ----> IAM계정(User, 사용자)
= Role(역할)은 서비스나 프로그램에 부여함
= Policy(정책)을 Role or User에게 부여함
* CloudWatch
= 리소스를 Monitoring 하면서 상태를 Graph로 표시
= 서비스 지표, 로그 등을 수집, 기록
= 임계값을 넘으면 특정 동작이 일어나도록 설정 ex) 10만원이 넘으면 Mail로 보내라
= CPU 사용률, 볼륨의 읽기 쓰기 횟수나 바이트 수, 네트워크 송수신 패킷 수 등 감시
* AWS CloudTrail
= 감사 서비스를 활성화하면 '누가' 어떤 리소스에 접근했는지도 기록으로 남길 수 있음
* 감사(Audit)
= 위험(Risk)를 줄이기 위해서 통제(Control)를 사용해야 함
= 통제(Control)의 적절성을 평가하는 것이 감사(Audit)
= 기록을 추적(증적:Trail) ----> 감사할 때 증거를 추적하는 것을 Audit Trail이라고 함
= 클라우드에서 발생하는 모든 행위를 기록하고 추적하는 서비스 ----> CloudTrail이라는 서비스를 제공
* EC2 요금체계
= On-Demand : 필요할 때 사용하고, 필요하지 않으면 종료, 할인이 없음
= Spot Instance : 경매형식, 가장 높은 가격을 제시한 고객부터 EC2를 사용하게 해줌
수요와 공급에 따라 시세가 책정됨 ----> 시세 이하의 금액을 제시한 EC2는 절전/중지/종료
적절한 사례 : 급하지 않은 업무 처리, 연산 등에 적합 ex) 빅데이터 분석, 변환 작업 등
저렴하게 사용 가능하다는 장점이 있음
= 예약 인스턴스 : 약정, 장기간 사용하기로 하고 할인을 받을 수 있음
* AMI (Amazon Machine Image) : 아마존 클라우드에서 사용하기 위해서 만든 가상머신 이미지
* 저스펙 type을 사용하다가 고스펙 type으로 바꾸는 것은? Scale up <------> Scale down
* HDD와 SSD의 차이점 (속도가 차이나는 이유는?)
= HDD는 기계식 : 모터+원판+헤드 -----> 속도 느림
= SSD는 전자식 : 반도체 장착 --------> 속도 빠름
* EBS (p.133)
= 가상머신의 Disk (선택 : HDD or SSD)
= 부트 섹터, 운영체제, 데이터 저장 가능(가격 문제)
= 가상머신에 부착해서 사용하다가 따로 분리해서 별도로 보관할 수 있음
* Key Pair 사용방법
1) 윈도우에서 사용하려면, 상속제거하고 Windows사용자만 읽기 권한을 부여해야 함
2) 리눅스에서 사용하려면, chmod 400
3) Putty에서 사용하려면, ppk로 변환해서 SSH>Auth에서 ppk파일 첨부해서 로그인
4) 윈도우 서버에 RDP로 로그인하려면? 암호로 변경해서 RDP의 패스워드에 입력
* EIP(탄력적IP)
= IPv4 주소는 부족함(한정된 자원)
= EIP를 확보해놓고 사용하지 않으면? 비용청구됨(페널티 비용) ----> Release해서 다른 사용자가 사용할 수 있게함
= 사용자당 5개까지 사용가능 (추가 요청을 하면 심사후에 제공)
= NLB등에 할당하는 경우에는 비용이 별도로 청구되지 않음
* IPv4주소 부족하기 때문에 URL방식 사용 권장 ex) ALB의 URL경로
* Snapshot
= 시스템의 상태를 이미지로 만들어서 저장
= AMI이미지로 저장해서 사용 가능 ex)오토스케일링에서 사용
* Auto Scaling
= 일정개수를 유지하는 방식
= Target Tracking : CPU의 사용률을 지속적으로 일정수준으로 맞춤 ----> EC2가 자동으로 증가 또는 감소
* ELB (ALB, NLB)
= Listener (들어오는 곳)에 설정하는 것은? 프로토콜과 포트를 설정
= Target Group (분배대상) : EC2를 직접등록 또는 그룹으로 설정 (그룹으로 설정할 때 Auto Scaling그룹을 설정할 수 있음)
* CloudFront (p.196)
= 콘텐츠를 배포하는 서비스, 대용량 Cache 서비스
= 고객이 전세계에 많이 있고, 콘텐츠를 많이 가지고 있는 사업자가 주로 이 서비스를 이용함 ex) 넷플릭스 ( 유튜브는 구글 클라우드를 쓰겠지 )
* Netflix
= 드라마, 영화, 애니메이션 등을 S3 Bucket에 저장해놓음
= 전세계의 수많은 고객들이 같은 영화를 보려고 합니다. -----> Cache (임시보관) 서비스 필요함 ----> CloudFront
= 원래는 자체 데이터센터를 보유하였으나, 10년에 걸쳐서 순차적으로 AWS로 Migration을 했음 (현재는 데이터센터 없음)
* 인터넷 게이트웨이(IGW) p.220
= 양방향 통신이 가능 (인터넷에서 AWS VPC에 들어올 수 있고:Inbound, AWS VPC에서 인터넷으로 나갈수도 있음:Outbound)
* NAT 게이트웨이 p.221
= Inbound(인터넷-->AWS VPC)는 안되고, Outbound(AWS VPC-->인터넷)는 가능 (공유기와 비슷)
= 어떤 경우에 적합할까? 외부에서 접근할 필요 없는 Database Server가 업데이트를 해야하는 경우에 적합
* 보안 그룹과 NACL (네트워크 ACL) p.223 표
* ENI (Elastic Network Interface) : AWS에서 제공하는 가상의 랜카드(NIC : Network Interface Card) ---> MAC주소들어있고, IP할당 가능
* VPC 엔드포인트
= 인터페이스 엔드포인트 : ENI를 연결하는 방식 (개별적인 연결)
= 게이트웨이 엔드포인트 : 네트워크를 연결하는 방식 ---> 라우팅테이블에 등록
* VPC (p.231)
= 한 사용자가 VPC를 여러개 만들수 있음, 다른 사용자의 VPC도 있음
= VPC와 VPC를 연결하려면? VPC Peering
( Peer : 동료 ex. P2P Network)
= VPC Peering은 VPC와 VPC를 1대1로 연결하는 방식 ---> VPC가 많으면 복잡
= Transit Gateway를 사용하면 복잡한 연결을 한방에 해결
* AWS DirectConnect
= AWS VPC와 기업의 네트워크를 연결하는 전용선(암호화 지원)
= 안정적이고 빠르고 약간 비쌈
* AWS VPN
= 저렴하지만 인터넷을 거쳐서 연결되다보니 네트워크 품질과 속도를 보장못함
* Aurora (p.250)
= MySQL, PostgreSQL(포스트그레스큐엘)과 호환 가능
= AWS에 최적화해서 속도가 빠르다
* AWS에서 DB사용하는 방법
= Aurora : AWS에서 자동 복제, 최적화 등등 (가장 추천)
= RDS에서 사용자가 설정
= EC2에 MySQL, Oracle 설정 (비추) ----> 관리문제... 고객이 직접 관리???
* 키밸류 데이터베이스 (p.257)
= Key Value Store (KVS) : NoSQL 방식
= 장점: 형식에 구애받지 않고 데이터를 입력할 수 있다, 데이터에 대한 Access가 빠르다.
= 빅데이터와 IoT 같은 대용량 데이터를 빠르게 처리
* ElastiCache
= 인 메모리 데이터베이스 (빈번하게 읽고 쓰는 데이터는 일시적으로 메모리에 보관하는 방식) ----> 속도 무지 빠름
= Redis, Memcached와 호환 가능
* Lambda (p.270)
= 람다 함수라고 부름 (Lambda Function)
= 간단한 프로그래밍(5분 이내)으로 단순 반복 작업을 여러번 수행하는 경우에 적합함
= 어떤 특정행위를 Trigger(방아쇠)로 등록해놓으면, 특정행위가 발생될 때 Lambda함수가 동작함
(이미지 업로드하면 람다함수가 동작하면서 크기를 줄여서 저장)
* Lambda 사용 사례
= 쇼핑몰 담당자가 원본 사진을 업로드하면, 람다가 썸네일을 만들어서 S3등에 저장
= 일반 게시판 사용자들이 사진을 업로드하면 사진의 크기를 일정크기로 줄여서 S3에 저장
= 비밀번호 잊어버린 사람들이 휴대폰 본인 인증을 하려는 경우, 본인 확인 프로세스
실습 1 )
= AWS CLI를 이용해서 EC2를 생성하고, Wordpress 사이트를 만들어보기
= 어제처럼 Bitnami_lamp 처럼 다 만들어져 있는 AMI를 사용하면 안됨
= Amazon Linux만 설치하고, PHP+MariaDB+Apache2+Wordpress 설치
= RDS는 하지 말고, 2Tier로 구성하기
= 블로그가 나오면 이미지 업로드까지 해서 이미지 Publish 되면 성공!
* 아마존에서 Amazon Linux 인스턴스 생성 ( 잘 모르겠으면 10월5일 클라우드 보안 6 참조 )
m@mvm:~$ aws --version //버전확인 ( 사실상 깔려있나 확인 )
aws-cli/1.25.87 Python/3.10.6 Linux/5.15.0-48-generic botocore/1.27.86 //잘 깔려있다고 알려줌
m@mvm:~$ aws configure // cli접속
AWS Access Key ID [****************OZMG]: 계정 Access Key ID 입력
AWS Secret Access Key [****************OtWr]: Secret Access Key 입력
Default region name [ap-northeast-3]: ap-northeast-3 // 리전 선택
Default output format [None]: //그냥 엔터
m@mvm:~$ aws s3 ls //접속완료
m@mvm:~$ aws ec2 run-instances \ //인스턴스를 만들겠다
> --image-id ami-0953215c6a0ce5164 \ // 이미지 id입력
> --count 1 \ // 사실 이건 정확하게는 뭔지 모르겠음
> --instance-type t2.micro \ // t2.micro
> --key-name 키이름 \ // 키 이름 입력
> --security-group-ids 보안그룹ID \ //보안그룹 ID
> --subnet-id 서브넷ID \ //서브넷 ID
* 이제 ssh로 Amazon linux로 들어가보자
$ sudo yum update -y // -y는 미리 yes로 설정
$ sudo yum install httpd // 아파치 웹서버 설치
$ sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2 // lamp : Linux 용 Apache2 MySQL PHP( 웹서버 세트)
$ sudo yum install -y mariadb-server
$ sudo systemctl start httpd // 아마존 리눅스에서는 아파치 시작명령을 사용해야 아파치가 시작함
$ sudo systemctl enable httpd // 부팅할 때마다 시작하도록 등록함
$ sudo usermod -a -G apache ec2-user // 아파치 그룹(-G apache)에 ec2-user를 추가(-a : add)함
$ sudo chown -R ec2-user:apache /var/www // 웹서버 루트 디렉토리(/var/www)의 소유권을 apache그룹의 ec2-user로 변경함
$ sudo chmod 2775 /var/www // 웹서버 루트 디렉토리의 권한을 2775로 변경(other는 read와 executable만 가능)
= 여기서부터는 아마존 공식 자습서를 참고하였다 https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/hosting-wordpress.html
$ wget https://wordpress.org/latest.tar.gz//최신 wordpress 패키지 설치
$ tar -xzf latest.tar.gz //압축해제
$ sudo systemctl start mariadb //db시작
$ mysql -u root -p //로그인
$ CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password'; //계정생성
(계정 만들기인데 그대로 복붙해서 아이디는 wordpress-user로 비밀번호는 your_strong_password로 만들어졌다ㅋㅋㅋ)
$ CREATE DATABASE `wordpress-db`; //db만들기
$ GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";
//데이터베이스에 대한 전체 권한을 이전에 생성한 WordPress 사용자에게 부여
$ FLUSH PRIVILEGES; //데이터베이스 권한을 새로고침
$ exit
$ cp wordpress/wp-config-sample.php wordpress/wp-config.php //워드프레스 샘플 카피
$ nano wordpress/wp-config.php
$ cp -r wordpress/* /var/www/html/
$ mkdir /var/www/html/blog
$ cp -r wordpress/* /var/www/html/blog/ // 솔직히 이 위에 4개는 뭔지모르겠다
= 여기서부터는 공식자습서가 불친절해서 다른 블로그를 참조했다
https://potato-yong.tistory.com/68(여기선 RDS로 하는게 그거만 local로 바꿔주면 될거같다.)
$ sudo vi wp-config.php //내용 수정
DB-NAME = DB의 이름
DB-USER = DB 사용자 이름
DB-PASSWORD = DB 사용자 패스워드
DB-HOST = RDS 데이터베이스의 Endpoint ( 나는 로컬로 할꺼라 localhost )
을 입력해준다.
* wordpress 디렉터리안에 모든 파일들을 /var/www/html/ 으로 복사해 주도록 하자.
/var/www/html/ 은 웹브라우저가 요청했을 때, 웹 서버가 웹페이지의 파일을 찾는 디렉터리이다.
$ sudo cp -r wordpress/* /var/www/html/ //내용복사
$ sudo systemctl restart httpd //httpd 재시작
= 그리고 나서 퍼블릭 IP로 접속을 해본다.
---------------------------------------------------------------------------------------------------------------------------
* 실습2
- cacoo.com 에서 AWS Architecture를 그리고, 실제 구현해보기 ----> 캡쳐해서 저장해서 제출 (아키텍처_이름.jpg)
- Auto Scaling + NLB 사용(EIP장착) -----> 캡쳐해서 저장해서 제출 (과제_이름_01.jpg, 과제_이름_02.jpg, 과제_이름_03.jpg 등)
- lms.sslc.kr 학습게시판 > 과제에 zip으로 압축해서 업로드
- 5시 30분까지 완성하세요~
- CMS는 자유롭게 선택 : Gnuboard or Wordpress or 간단이미지
- 과제 제출하신 분들은 실습 내역 삭제하세요~ (EC2, NLB, Auto-Scaling, 이미지, 스냅샷, EIP해제 등)
* 블로그는 매일매일 꼭!!! 작성하셔야 해요. (신의 한수라고 합니다.)
= 실습 2 는 시간이 촉박해서 ( 다 하고나니까 엄청 남긴했지만... ) 사진을 찍을 여유가 없었다.
= 참고로 나는 고수가 아니기 때문에 간단 이미지로 페이지를 만들었다.
= 대충 내용을 기억 해 보자면
ec2 > index.html변경 > 스냅샷만들기 > 대기 > 스냅샷으로부터이미지만들기 > 오토스케일링 시작구성 > 오토스케일링그룹 > 대기 > 로드밸런서 > 로드밸런서 안에서 대상그룹생성 > 완료
--------------------------------------------------------------------------------------------------------------------------------------
오토 스케일링 부분은 지난번 실습때도 버벅여서 제대로된 자료가 없는데 이번에도 써볼 여유가 없어서 좀 아쉽다.
나중에 개인 계정으로 실습을 다시 한번 해봐야겠다....
'공부 > 클라우드 보안' 카테고리의 다른 글
내가 보려고 만든 모듈프로젝트 레시피 (0) | 2022.10.12 |
---|---|
10월 05일 클라우드 보안 6 (0) | 2022.10.05 |
9월 30일 클라우드 보안 5 (0) | 2022.09.30 |
9월 29일 클라우드 보안 4 (0) | 2022.09.29 |
9월 28일 클라우드 보안 3 (0) | 2022.09.28 |