이제 NACL을 설정해보자
NACL은 VPC를 생성할 때 하나가 기본적으로 생성된다.
자동 생성된 NACL은 private VPC를 위해 사용하고
public VPC를 위한 새로운 NACL을 생성해보자
잘 생성 됐다.
이제 두 NACL에 적절한 서브넷을 연결해줘야 한다.
서브넷 연결 편집에 들어가자
public subnet과 연결을 한다.
그럼 나머지 private NACL은 private subnet과 연결이 된다.
이제 public NACL의 인바운드 규칙을 편집해보자
(NACL은 stateless하기에 인바운드 규칙과 아웃바운드 규칙을 정확하게 설정해야 한다.)
22번, 80번, 443번 포트에 대해 모든 소스로 부터 허용하여 SSH, HTTP, HTTPS 접속을 받는다.
규칙 번호가 작을수록 우선순위가 높게 적용 된다.
(만약 규칙 번호가 99에 0-65535까지 접속 거부를 설정하면 모든 접속이 막힐 것이다.)
public NACL의 아웃바운드 규칙도 편집해보자
1024~65535 포트는 모든 임시포트 번호로
응답을 받는 포트는 Well-Known Port(0~1023) 이외의 포트로 받기에 다음과 같이 설정했다.
아웃바운드 규칙이 잘 설정됐다.
private subnet의 NACL의 인바운드 규칙도 편집해보자
다음과 같이 SSH와 IPv4의 접근이 public subnet에서만 오는 트래픽만 받도록 소스를 수정했다.
이제 VPC를 위한 보안 그룹을 만들어보자
보안 그룹 이름은 TodoApp-sg로 설정했다.
이제 클라이언트가 private subnet에 접근을 하기위한 Bastion host를 만들어보자
Bastion host는 public subnet내에서 private subnet과 통신을 하기위한 대리인 역할을 한다.
이제 Bastion host 역할을 할 EC2인스턴스를 만들어보자
우분투 18.04에 t2.micro을 선택했다.
키페어는 전에 만들어둔 키페어를 사용하고
VPC는 TodoApp VPC, 서브넷은 public subnet을 선택했다. 보안 그룹은 TodoApp-sg를 선택하자
Bastion host역할을 할 EC2가 잘 생성 됐다.
다음으로 private subnet안에 RDS인스턴스를 생성해보자
MySQL 8.0.26 버전 프리 티어 템블릿을 선택했다.
암호는 f4d3s2a1로 설정했다.
TodoApp을 올릴 VPC를 선택했고 퍼블릭 액세스를 차단하여 VPC외부에서 접근을 할 수 없게 하였다.
가용 영역은 private subnet과 같은 ap-northeast-2c로 선택했다.
RDS가 잘 생성됐다.
지금 현재 RDS의 보안그룹은 Bastion host를 위한 보안 그룹이므로 모든 ssh 접속을 다 받게 된다.
물론 private vpc의 NACL에서 막히겠지만 우리는 오픈된 보안 그룹을 원하지 않는다.
따라서 bastion host에서 보내는 트래픽만 주고 받을수 있는 private한 보안 그룹을 만들어야 한다.
SSH에 대해 TodoApp-sg 소스를 선택하자
인바운드의 IPv4와 아웃바운드도 마찬가지다.
보안 그룹이 잘 생성됐다.
이제 RDS가 적용되는 보안그룹을 privte_sg로 수정하자
자 이제 putty를 이용해 public subnet에 있는 bastion host로 private subnet에 있는 rds에 접근해보자
sudo apt-get update
sudo apt-get install mysql
sudo apt install mysql-client-core-5.7
sudo apt install mariadb-client-core-10.1
mysql -u [마스터 사용자 이름] -p -h [rds엔드포인트주소] 명령어를 차례로 친다.
ex) mysql -u admin -p -h todoapp-db1.cwdtf0uzwslg.ap-northeast-2.rds.amazonaws.com
password는 앞서 설정한대로 f4d3s2a1이다.
그럼 정상적으로 bastion host로 RDS에 접근이 되는걸 볼 수 있다.
'AWS > 소규모 모놀리식 아키텍처' 카테고리의 다른 글
1. VPC 구성하기1 (0) | 2022.04.21 |
---|