본문 바로가기
공부/AWS

[AWS] IAM 사용자 생성, MFA 설정 후 웹서버 EC2로 RDS 제어

by haejang 2020. 8. 13.
728x90
728x90

 

1. 관리 목적의 IAM 사용자 생성 후 MFA 설정 -> 그 사용자로 실습 마저 진행

2. VPC를 만들어서 EC2와 RDS 서비스 이용. RDS는 웹서버용 EC2를 통해서만 접속 가능

3. 웹 서버의 AMI 생성 후 이 이미지로 Auto Scaling Groups 생성(ELB로 로드 분산)

 

 

1. IAM 사용자 생성(관리자) 후 MFA 설정

서비스 >> IAM >> 사용자 >> 사용자 추가

 

 

콘솔로 액세스할 수 있도록 해주고, 사용자 지정 비번을 정해주자

비밀번호 재설정 필요는 루트가 사람들에게 사용자를 만들어 나눠줄 때 직접 사용하는 사용자들이 자신들의 비밀번호로 바꿔 쓸 수 있도록 하는 서비스다. 지금은 안해도 된다

 

 

기존 정책 직접 연결 >> AdministratorAccess 를 선택해준다

Administrator의 JSON을 보면

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*"
        }
    ]
}

이렇게 되어있는데, 그냥 모든 권한을 준다는 소리다

그러고 쭉쭉 넘어가서 사용자 생성을 완료해주면 된다

 

사용자 생성 완료 후, admin을 눌러주자

 

 

보안 자격 증명 탭에서 할당된 MFA 디바이스 -> 관리 >> 계속(가상 MFA 디바이스)을 눌러준다

 

 

그럼 이런 탭이 뜨는데, 핸드폰으로 Google OTP 앱을 깔아야 한다

 

 

앱을 실행하면 QR코드를 스캔할 수 있는데, 저 QR코드를 스캔하면 6자리 숫자가 뜰 것이다

시간이 지나면 바뀌는데, 연속된 두번의 6자리 숫자를 MFA 코드 칸에 써주고 MFA 할당을 눌러주면 끝난다

 

 

 

2. 방금 만든 사용자로 로그인

IAM 서비스에서 왼쪽 아래를 보면 AWS 계정 ID가 있다. 그 숫자를 복사해주자

 

 

로그아웃을 한 뒤 다시 로그인 창으로 들어와서, IAM 사용자를 선택한 뒤 방금 복사한 번호를 넣어준다

그리고 만들어둔 사용자 id와 비번으로 로그인을 하면

 

 

MFA 코드를 또 쳐야한다. 아까 앱으로 다시 들어가보면 또 새로운 6자리 숫자가 있으니 그걸 쳐주고 로그인하면

 

 

admin 사용자로 로그인했다!!

 

 

3. 웹서버용 EC2와 RDS 사용 위한 VPC 구축

귀찮으니 그냥 기본 VPC를 만들어서 사용해보겠다

서비스 >> VPC >> VPC >> 작업 >> 기본 VPC 생성

 

 

이름도 대충 정해주자. 이제 기본 VPC와 서브넷 등등이 만들어졌다

 

 

기본 VPC로 작업하지 않는 경우 작업 >> DNS 호스트 이름 편집을 눌러 활성화가 되어있는지 확인하자

서브넷을 들어와보면 가용영역별로 서브넷이 하나씩 만들어져있는데, RDS용 프라이빗 서브넷 하나만 만들고 나머지 2개는 퍼블릭으로 만들어주겠다

 

 

프라이빗 서브넷에서만 작업 >> 자동 할당 IP 설정 수정에 들어가서 비활성화를 해준다

(기본 VPC로 작업하지 않는 경우 퍼블릭 서브넷들은 자동 할당 IP 설정 활성화로 해줘야 한다)

 

 

이제 라우팅 테이블을 건드려보자

서비스 >> 라우팅 테이블을 들어와보면 하나가 기본적으로 만들어져있다

인터넷 게이트웨이와도 자동으로 연결되어 있으나 서브넷 연결이 되어있지 않다

라우팅 테이블 선택 후 서브넷 연결 >> 서브넷 연결 편집을 눌러 퍼블릭 서브넷 2개만 넣어주자

 

 

마지막으로 보안그룹을 만들어주자

서비스 >> VPC >> 보안 그룹 >> 보안 그룹 생성

어차피 실습이니까 필요한 것들만 넣어 대충 만들것이다

웹서버용 보안그룹은 모두 허용, DB용 보안그룹은 웹서버 보안그룹에서 오는 트래픽만 허용하도록 할 것이다

 

웹서버용 보안그룹

 

RDS용 보안그룹

 

소스는 WebServerSG이다

이제 웹서버와 디비를 사용할 준비가 끝났다

 

 

4. RDS 생성

서비스 >> RDS >> 데이터베이스 >> 데이터베이스 생성

엔진 옵션 - MySQL 선택

 

 

버전은 원하는 버전 쓰면 된다

템플릿 - 프리 티어

 

 

마스터 이름과 비번을 설정한다

 

 

이러고 생성을 완료한 후, 생성이 아예 완료될 때 까지 조금만 기다리자

생성이 완료되면, 그 데이터베이스의 이름을 누르고 수정을 눌러보자

 

 

연결 탭에서 보안그룹을 DB용 보안그룹으로 바꾸고, 퍼블릭 액세스 가능으로 바꿔준 다음에 즉시 수정완료해준다

 

 

5. EC2 생성

서비스 >> EC2 >> 인스턴스 시작

 

 

1단계 - Amazon Linux 2 AMI 선택

 

 

3단계 - VPC와 서브넷 선택(퍼블릭 서브넷 중 1)

그리고 쭉 내려서 고급 세부 정보의 사용자 데이터에 다음 내용을 적자

 

#!/bin/bash
# Install Apache Web Server and PHP
yum install -y httpd mysql
amazon-linux-extras install -y php7.2
# Turn on web server 
chkconfig httpd on 
service httpd start

Apache, PHP, MySQL을 자동으로 받아놓고 시작할 수 있다

 

 

 

6단계 - 기존 보안 그룹 선택 >> 웹서버용 보안그룹 선택 후 마무리

 

 

새 키 페어를 만들고 저장한 후 인스턴스를 시작하자(이미 갖고있는 키 페어가 있다면 그걸 사용해도 가능)

 

 

6. EC2 접속 후 RDS에 접속해 데이터베이스 생성

EC2에 접속하는건 아래 글을 보자

2020/07/24 - [공부/AWS] - [AWS] EC2 CLI로 접속하기(cmd, PuTTy)

 

[AWS] EC2 CLI로 접속하기(cmd, PuTTy)

2020/07/22 - [공부] - [AWS] VPC랑 EC2 만들어보기 [AWS] VPC랑 EC2 만들어보기 먼저 아마존에 로그인한 후 계좌를 등록해야한다 1달러 빠져나가면 그 때부터 시작할 수 있다 https://aws.amazon.com/ko/ 클라우..

honglab.tistory.com

접속 성공

 

RDS에 접속하기 전, RDS의 엔드포인트를 알아놔야 한다

서비스 >> RDS >> 데이터베이스 >> database-1(아까 만든 데이터베이스)를 누르면 엔드포인트가 있다. 이를 복사해서 메모장같은데에 넣어두자

 

 

그 다음 EC2로 돌아와서 다음을 입력해주자

mysql -u <마스터이름> --host <엔드포인트> -P 3306 -p

 

 

RDS에 접속이 됐다

이제 우리가 원하는 awstest라는 디비를 만들어줄것이다

CREATE DATABASE awstest;

USE awstest;

CREATE TABLE subject(
	id int(11) NOT NULL AUTO_INCREMENT,
	title varchar(45) NOT NULL,
	description text,
	created datetime NOT NULL,
	PRIMARY KEY(id)
) ENGINE = InnoDB;

SHOW TABLES;
DESC subject;

CREATE TABLE author(
	id INT(11) NOT NULL AUTO_INCREMENT,
        name VARCHAR(30) NOT NULL,
        profile VARCHAR(200) NULL,
        PRIMARY KEY(id)
);
INSERT INTO author(name, profile) VALUES ('Kim', 'Network Instructor');
INSERT INTO author(name, profile) VALUES ('Lee', 'Server Instructor');
INSERT INTO author(name, profile) VALUES ('Park', 'Security Instructor');

ALTER TABLE subject ADD COLUMN author_id INT(11);

 

 

디비와 테이블 2개가 생성되었다

 

 

7. 웹서버로 RDS 제어

웹 서버를 만들어야 한다. 다음 파일들을 파일질라 등의 ftp 서비스를 사용해 /var/www/html/ 폴더로 옮겨놓자

 

Web 소스코드.zip
0.01MB

 

옮기기 전에, php파일들의 윗부분은 본인 RDS의 엔드포인트, 마스터이름, 비밀번호 로 바꿔줘야 한다

 

이런식으로 고쳐주자

 

파일질라로 사용하려면

 

 

이렇게 하면 된다

호스트에는 EC2의 퍼블릭 DNS(IPv4)를 넣고, 사용자는 ec2-user로 하며, 키 파일엔 .ppk파일을 넣어준다(PuTTygen으로 만든거)

우리는 ec2-user니까 /home/ec2-user/ 폴더에만 권한이 있다. 따라서 일단 여기로 파일을 다 옮겨주자

 

 

모든 파일이 다 옮겨졌다

이제 EC2에서 /var/www/html/폴더로 옮겨주자

MySQL에서 exit로 나온다음, 다음 명령을 실행해준다

sudo -i
cd /home/ec2-user/
mv *.php /var/www/html/

ls로 확인해보면

 

 

잘 옮겨져있다

이제 EC2의 퍼블릭 DNS를 웹 브라우저에 띄워 보면

 

 

AWSTEST 페이지가 잘 띄워진다

author을 눌러보면

 

 

내 author 테이블의 내용들이 잘 들어와있다

한번 Kim이란 데이터를 지워보겠다(delete)

 

 

rds에서도 Kim이 지워진걸 볼 수 있다

이번엔 Lee 데이터를 업데이트 해보겠다

 

 

업데이트도 잘 된다

 

이번엔 subject 테이블에 데이터를 새로 추가해보겠다

AWSTEST를 누른 후 create를 눌러보자

대충 써놓고 submit을 눌렀더니

 

 

이렇게 바뀌었다

이제 웹서버와 RDS 연동하는건 잘 확인되므로 다음으로 넘어가자

 

 

8. ALB로 로드 분산하는 Auto Scaling Groups 만들기

이는 사실 저번 글인

2020/08/02 - [공부/AWS] - [AWS] AWS 리소스 배포 자동화와 로드 분산을 통한 자동 확장 환경 구성

 

[AWS] AWS 리소스 배포 자동화와 로드 분산을 통한 자동 확장 환경 구성

할 일 정리 1. 주어진 JSON 파일을 가지고 CLoudFormation 스택을 생성해 기본 VPC, EC2(Command Host)를 마련한다 2. CommandHost 인스턴스에서 CLI로 Auto Scaling Group용 AMI 를 만들 WebServerBaseImage란..

honglab.tistory.com

이와 매우 유사하므로 저걸 본 사람은 더 안봐도 된다

 

일단 AMI를 생성해보자

서비스 >> EC2 >> 작업 >> 이미지 >> 이미지 생성

 

 

이름과 설명은 대충 써주자

서비스 >> EC2 >> AMI 로 들어와보면

 

 

AMI가 새로 만들어지고 있다

 

그 다음으로 ALB를 만들어주자

서비스 >> EC2 >> 로드밸런서 >> Load Balancer 생성 >> Application Load Balncer 선택

 

 

이름과 가용 영역(Public 서브넷 있는곳 2개) 설정

 

 

전부 열려있는 웹서버용 보안그룹 선택

 

 

새 대상 그룹을 생성하고, 상태 검사도 대충 설정해준 후 생성을 완료해준다

 

이제 Launcg Configuration을 생성해보자

서비스 >> EC2 >> 시작 구성 >> 시작 구성 생성

 

이름, AMI, 인스턴스 유형 설정

 

보안그룹 설정

 

 

키 페어까지 선택한 후 생성을 완료하자

완료되었으면 방금 만든 시작 구성을 선택한 후, 작업 >> Auto Scaling 그룹 생성 을 누르자

 

 

이름 설정

 

퍼블릭 서브넷 2개 설정

 

로드 밸런싱 설정 후 대상 그룹 선택

 

그룹 크기 설정

 

항상 2개의 인스턴스만 가동하겠다는 의미다

 

 

새로 만들어질 인스턴스의 Name 태그를 설정해주고 생성을 완료하자

그 후 인스턴스 탭으로 돌아와보면

 

 

각 가용 영역에 하나씩 인스턴스가 만들어지고 있다

 

이제 둘 중 하나를 종료해보겠다

 

 

저 인스턴스가 완전히 종료되고 나면, 아마 새 인스턴스가 해당 가용 영역에서 새로 만들어질것이다

 

 

만들어졌다

728x90
728x90

댓글