* EC2
- 클라우드의 핵심 (서버를 아웃소싱, AWS이 가장 먼저 시작한 서비스) 2007년
- Ubuntu를 웹서버로 만드는 실습 (Debian 계열 : apt, apt-get)
- Amazon Linux를 웹서버로 만드는 실습 (Red hat 계열 : yum, 최근에는 dnf)
- Windows Server 2016
* RDS (관계형 데이터베이스 서비스, Relational Database Service)
장점
단점
사전 조건
- RDS는 가용영역이 2개 이상 필요
- VPC에서 DNS 호스트 이름 편집을 활성화해야 접속할 수 있는 URL을 생성 가능
(VPC => DNS 호스트 이름 편집 => 활성화)
* AMI (Amazon Machine Image)
- 아마존이 미리 만들어놓은 가상 머신 이미지 (아마존이 설치 다 해놓고 사용하겠다고 하면 복사해줌)
* Security Group (보안 그룹)
- 인바운드 규칙 : 인터넷에서 AWS에 들어갈 때의 규칙 (밖-->안) ---> SSH, http, https, RDP 등 꼭 필요한 경우만 허용해야 함
=> SSH, RDP는 반드시 IP주소를 엄격하게 제한해야 함. (http, https는 IP를 제한하지 않음)
- 아웃바운드 규칙 : AWS에서 인터넷으로 나갈때의 규칙 (안-->밖) ----> 대부분 허용
* 접속이 안되면
- 보안 그룹에 설정이 잘 못된 경우
- 서비스가 실행되지 않은 경우 (설정을 다 한 후에는 아파치 재시작 해야 함)
* 페이지가 안 보이면
- 확장자가 잘못된 경우
- 이미지를 업로드 안했거나
- 이미지 확장자가 잘못됬거나
실습) 우선순위 확인해보기
다른이미지가 나오도록 index.html 파일을 수정한 뒤, index.html과 새로운 image파일을 업로드
=> 웹브라우저를 새로고침 해보면, 어느 파일이 보일까요?
index.html 파일이 iisstart.htm 파일보다 우선순위가 높기 때문에 index.html이 보여지게 됨
실습) Workbench는 MySQL의 클라이언트용 프로그램
구글에 접속해서 'workbench' 검색
MySQL Workbench 8.0.30
Go to Download page 클릭
5.5M Download클릭
설치 시작하고 Client Only를 선택
다운로드에서 error가 나오면 try agian 클릭
* 우분투에서 원격에서 사용할 계정을 만들기
$ sudo mysql -u root -p
(비밀번호 없으므로 그냥 엔터)
mysql> create user blackpink@'%' identified by 'icecream'; // '%' 어디서든지 접속이 가능한 계정
mysql> grant all privileges on *.* to blackpink@'%'; // 모든 DB에 대해서 모든 권한을 부여함 (신돈)
mysql> exit
* UFW(Ubuntu FireWall)에서 3306번 포트를 외부에서 접속할 수 있도록 허용
$ sudo ufw allow 3306
* 외부에서 접속이 안되도록 설정되어 있음
$ cd /etc/mysql/mysql.conf.d
$ sudo vi mysqld.cnf
:set nu
(31번 라인으로 내려감)
(127.0.0.1 ----> 0.0.0.0 수정합니다.) -----> 0.0.0.0이면 전세계 어디서든지 접속이 가능함 (매우 위험)
ESC
:wq
$ sudo service mysql restart // MySQL 재시작
참고) 회사 내부에서만 접속하려면
59.6.0.106 일 경우, 끝자리가 바뀔수 있으므로, 59.6.0.0 으로 설정하는 방법 -----> 우리회사에서는 IP가 바뀌더라도 접속 가능!
윈도우에서 'workbench' 입력하면 실행 가능함
문제해결) 패키지가 안뜨는 분들 프로그램 제거후 재설치
* Root계정을 업무에 활용하면 안되는 이유
- Root 계정이 크래킹되면, 컨트롤 할 방법이 없음
- 다른 계정을 만들어서 활용
- 특히, DB에서는 database마다 따로 계정을 할당하는 것이 좋음
- 회사 내부에서만 접속 가능하도록 설정하도록 해야함
* 재택근무를 하고 있는 상황에서 DB에 접속해야 하는 경우는 어떻게 할까?
(DB는 회사 내에서만 접속됨)
- VPN을 이용해서 회사 내부망에 접속해서 DB에 접속
- SSH로 업무용 서버에 접속해서 DB에 접속
* 접속의 차이
- blackpink는 '%'로 되어 있어서 Workbench 또는 mysql command line으로 DB에 직접 접속 가능
- board는 localhost로 되어 있어서 Workbench 또는 mysql command line으로는 DB에 직접 접속 불가능
----> SSH로 서버에 (ive로) 접속하고, board 계정으로 DB에 접속하면 가능
실습) goods.sql 파일 실습
Open a SQL Script... 선택하고 goods.sql을 열기
전체선택(Ctrl+a)하고 그냥 번개를 누르면 goods.sql 스크립트가 한번에 쫙 실행됨
show databases;
use classicmodels;
show tables;
desc orders;
select orderNumber,orderDate,shippedDate from orders;
* 최근 주문한 10개의 목록을 추출해보기
select orderNumber,orderDate,shippedDate from orders order by orderDate desc limit 10;
* RDS 사전 조건
1) RDS는 가용영역 2개 필요함
---> Subnet 1개 추가해야 함
2) VPC에서 DNS 경로를 사용해야 함 (DNS 호스트 이름 편집 ---> 활성화)
---> 접속할 수 있는 URL을 생성할 수 있음
3) 설정할 때, _(언더바)는 사용안됨, -(하이픈)은 사용 가능
* Cloud의 종류
1) IaaS (Infrastructure as a Service)
- 클라우드에서 인프라를 제공해주는 서비스
- 인프라는 가상머신(Ubuntu, Amazon Linux, Windows Server 등), 네트워크(VPC, Subnet), 스토리지(S3)
- AWS에서는 HW, Network, Security 등만 책임지고, 나머지는 사용자의 책임 (OS, Application, Data, Platform 등등)
* 장점
- 대부분의 통제가 가능하고 가격이 저렴함
* 단점
- 사용자가 확장, 관리(백업, 용량, 보안, 장애 등)해야 함
2) PaaS (Platform as a Service)
- 클라우드에서 플랫폼을 제공해주는 서비스
- 플랫폼은 개발자가 개발할 수 있는 환경까지 제공해줌 (RDS)
- AWS에서는 HW, Network, Security + OS + Application설치 및 관리,
- 사용자는 Application을 사용하기만 하면됨, Data에 대한 책임
* 장점
- 관리를 해주는 부분은 신경을 안써도 됨 (백업, 용량, 보안, 장애 관리 등을 AWS에서 해줌)
* 단점
- OS 및 Application에 대한 완전한 통제권을 갖기 어려움 (root권한이 없음, admin/girlsday 등을 만들어서 사용)
참고) Paas-ta : 정부에서 개발자들이 창업을 할 수 있는 환경을 만들어줌
3) SaaS (Software as a Service)
- 클라우드에서 소프트웨어를 제공해주는 서비스
- 사용자는 ID/PW등 인증만 하면 모든 서비스를 이용할 수 있음, Client용 SW만 있으면 됨.
- 단점 : 의존성 문제(마이그레이션하기 어려움), 가격이 비쌈, Customizing 하기 어려움.
- 장점 : IT인력이 많이 필요하지 않음
- 주로 누가 할까? 커피/치킨/피자 프랜차이즈, 무역(의류, 수입차 등), 고객관련 Biz등
실습) Workbench를 이용해서, goods.sql을 RDS에 업로드 하고 명령을 실행시켜 봅니다.
show databases;
use classicmodels;
show tables;
desc products;
select productName,productLine,productVendor,buyPrice from products;
실습) 3Tier로 구성하기 (웹서버와 DB서버를 따로 사용)
EC2를 생성한 다음, DB를 설치하지 말고, RDS에 데이터를 저장하도록 해서 Gnuboard를 동작시키려면?
- OS는 Ubuntu 22.04 LTS : MySQL을 제외하고 설치
- DB는 RDS를 활용, 설정은 Workbench로 설정하면 됨
- 기존의 RDS는 삭제하고, 새로 RDS를 만들면서 EC2에 연결하도록 설정(퍼블릭IP설정 안됨, EC2를 통해서 접속해야 함)
* RDS에 연결 방법 (아래 방법 둘중에 하나밖에 안됨)
- Public IP 부여 : EC2와 연결 안됨
- EC2와 연결 : 지정한 EC2가 필요하므로 EC2를 미리 생성하고 연결해야 함 ----> Workbench 사용 불가
* EC2에 접속한 상태에서 RDS에 접속해야 함
$ sudo mysql -h [엔드포인트] -u [계정명] -p
(gnuboard 만들고, board 만들고, board에 권한 주고)
* EC2에 설정내용 정리
$ 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 707 data
$ sudo service apache2 restart
$ sudo apt install mysql-client
$ sudo mysql -h [엔드포인트] -u [RDS계정] -p
(gnuboard, board, 권한부여)
'클라우드 보안' 카테고리의 다른 글
루키즈 교육 - 1005 학습 (0) | 2022.10.05 |
---|---|
루키즈 교육 - 0930 학습 (0) | 2022.09.30 |
루키즈 교육 - 0927 학습 (VPC 실습) (0) | 2022.09.27 |
루키즈 교육 - 0926 학습 (0) | 2022.09.26 |