티스토리 뷰
Amazon VPC 콘솔 마법사 구성
Amazon VPC 콘솔 마법사를 사용해 다음과 같이 기본이 아닌 VPC를 구성할 수 있습니다.
- 단일 Public Subnet이 있는 VPC
- Public 및 Private Subnet이 있는 VPC - NAT
- Public 및 Private Subnet과 AWS Site-to-Site VPN 액세스를 제공하는 VPC
- Private Subnet과 AWS Site-to-Site VPN 액세스를 제공하는 VPC
단일 Public Subnet이 있는 VPC
이 구성에는 단일 Public Subnet을 가진 VPC와 인터넷을 통해 통신할 수 있게 해주는 Internet Gateway가 포함된다. 간단한 웹 사이트 같은 단일 티어의 Public Web Application을 실행해야 하는 경우 권장하는 구성이다.
개요
이 시나리오를 위한 주요 구성요소를 위 그림에서 확인할 수 있다.
- IPv4 ICDR 블록 크기가 /16인 VPC는 65536개의 Private IPv4 주소를 제공한다.
- IPv4 ICDR 블록 크기가 /24인 Subnet을 사용하고, 이는 256개의 Private IPv4 주소를 제공한다.
- Internet Gateway가 VPC를 인터넷 및 다른 AWS 서비스에 연결해준다.
- 인스턴스가 VPC의 다른 인스턴스와 통신할 수 있게 해주는 Subnet 범위의 Private IPv4 주소와,
그리고 인터넷에 연결하고 접근할 수 있게 해주는 Public IPv4 인 탄력적 주소를 가진다. - Subnet과 연결된 사용자 정의 Routing Table 항목은 Subnet의 인스턴스가 IPv4를 사용하여 VPC 내의 다른 인스턴스와 통신할 수 있도록 해준다. 그리고 인터넷을 통해 직접 통신할 수 있게 해준다.
Internet Gateway로 이어지는 경로가 있는 Routing Table과 연결된 Subnet을 Public Subnet이라 한다.
Routing
VPC에는 Router가 내재되어 있다. 이 시나리오에서 VPC 마법사는 VPC 외부 주소로 경로가 지정된 모든 트래픽을 Internet Gateway로 라우팅하는 사용자 정의 Routing Table을 생성하고, 이 Routing Table을 Subnet과 연결한다.
위 Routing Table의 첫 번째 항목은 VPC의 IPv4 라우팅에 대한 기본 항목이고, 이 VPC에 포함된 인스턴스끼리 로컬 통신이 가능하도록 해준다. 두 번째 항목은 위 항목에 적용되지 않은 이외의 IPv4 Subnet 트래픽을 모두 Internet Gateway로 라우팅하도록 하는 항목이다.
보안
AWS는 VPC의 보안을 강화하기 위해 사용할 수 있는 두 가지 기능을 제공한다. 하나는 보안 그룹이고, 다른 하나는 네트워크 ACL(Access Control List)이다.
보안 그룹은 인스턴스용 인바운드, 아웃바운드 트래픽을 제어하고, 네트워크 ACL은 Subnet용 인바운드 및 아웃바운드 트래픽을 제어한다. 대부분의 경우 보안 그룹은 사용자의 요구사항을 맞출 수 있지만, 원하는 경우 네트워크 ACL을 사용해 VPC에 보안 계층을 더 추가할 수 있다.
VPC는 기본 보안 그룹을 제공한다. 인스턴스를 시작하는 동안 다른 그룹을 지정하지 않는 경우 기본으로 제공되는 보안그룹중 적절한 것과 연결된다. 기본 보안 그룹에 특정 규칙을 추가할 수 있지만 해당 규칙이 해당 보안 그룹을 사용하는 다른 인스턴스에 적합하지 않을 수 있다.
대신 사용자 지정 보안 그룹을 생성해 사용할 수 있다.
WebServerSG라는 보안 그룹을 생성하고 인스턴스에서 나가는 모든 트래픽을 허용하는 하나의 아웃바운드 규칙만 추가해보자. 필요에 따라 인바운드 트래픽을 사용하고 아웃바운드 트래픽을 제한하고 싶다면 규칙을 수정해야 한다.
단일 Public Subnet이 있는 VPC에 권장되는 네트워크 ACL 규칙
Public & Private Subnet이 있는 VPC(NAT)
이 시나리오는 백엔드 서버에 대한 공개적인 액세스를 차단하면서 Public 웹 애플리케이션을 실행하려는 경우 사용될 수 있다. 일반적인 예로 웹 서버는 Public Subnet을 두고 데이터베이스 서버는 Private Subnet에 두는 다중 계층 웹 사이트가 있다. 웹 서버가 데이터베이스 서버와 통신할 수 있도록 보안 및 라우팅 설정할 수 있다.
Public Subnet에 위치한 인스턴스는 인터넷에 바로 아웃바운드 트래픽을 전송할 수 있지만, Private Subnet에 위치한 인스턴스는 그렇게 할 수 없다. 따라서 Public Subnet에 있는 NAT 게이트웨이를 사용해 인터넷에 액세스해야 한다.
VPC 마법사를 사용해 NAT 인스턴스를 생성할 수 있지만 NAT 게이트웨이를 사용하는게 좋다.
- Subnet이 /16인 VPC이고, 총 65536개의 Private IP 주소를 제공한다.
- Subnet이 /24인 Public Subnet 영역은 256개의 Private IP 주소를 제공한다. Public Subnet은 인터넷 게이트웨이로 이어지는 경로가 있는 라우팅 테이블과 연결된 Subnet이다.
- Subnet이 /24인 Private Subnet 영역은 256개의 Private IP 주소를 제공한다.
- 인터넷 게이트웨이는 VPC를 외부 인터넷 혹은 다른 AWS 서비스에 연결한다.
- Subnet 범위에서 Prviate IP 주소가 있는 인스턴스의 경우 해당 인스턴스끼리 서로 통신할 수 있으며, 같은 VPC 내에 존재하는 다른 인스턴스와 통신할 수 있다.
- Elastic IP 주소가 있는 Public Subnet의 인스턴스의 경우 이 IP 주소를 통해 인터넷에 접근할 수 있다. Elastic IP 주소는 탄력적 IP 주소로 Public IP 주소이다.
Private Subnet에 있는 인스턴스들은 인터넷에서 수신되는 트래픽을 수락할 필요가 없는 백앤드 서버(DB와 같은) 이므로 Public IP 주소가 별도로 부여되어 있지 않다. 그러나 NAT 게이트웨이를 사용해 인터넷으로 요청을 전송할 수 있다. - 자체 Elastic IP 주소를 가진 NAT 게이트웨이가 있기 때문에 Private Subnet에 포함된 인스턴스들이 이를 통해 인터넷에 접근할 수 있는 것이다.
- Public Subnet과 연결된 사용자 지정 라우팅 테이블에는 Subnet의 인스턴스가 IP 주소를 통해 다른 VPC 혹은 인스턴스와 통신할 수 있게하는 항목들과 Subnet의 인스턴스가 IP 주소를 통해 인터넷과 직접 통신할 수 있게하는 항목이 들어있다.
- Private Subnet과 연결된 기본 라우팅 테이블은 Subnet의 인스턴스가 IP 주소를 통해 VPC와 다른 인스턴스와 통신할 수 있게 해주는 항목과 Subnet의 인스턴스가 IP 주소로 NAT 게이트웨이를 통해 인터넷과 통신할 수 있게 해주는 항목이 들어 있다.
Routing (라우팅)
결국 핵심은 Private Subnet에 위치한 인스턴스들은 Elastic IP 주소가 없기 때문에 인터넷에 직접 트래픽을 송신할 수 없다. Public Subnet의 NAT 디바이스를 통해 인터넷 트래픽을 전송하고 수신할 수 있다는 것이다.
그렇기 때문에 이처럼 로컬이 아닌 모든 트래픽에 대해서 NAT 디바이스로 향하도록 라우팅 테이블을 구성해야 한다.
그 후 Public Subnet 쪽의 라우팅 테이블에서 들어오는 트래픽에 대해서 외부로 보내면 된다.
보안
AWS는 VPC의 보안강화를 위해 보안그룹과 네트워크 ACL을 제공한다. 보안그룹은 인스턴스용 인바운드 및 아웃바운드 트래픽을 제어하고, 네트워크 ACL은 서브넷용 인바운드 및 아웃바운드 트래픽을 제어한다.
대부분의 경우 보안그룹은 사용자의 요구사항을 맞추기 위해 사용하고, 그렇지 않은 경우 네트워크 ACL을 사용해 VPC에 보안계층을 더 추가하게 된다.
이번 시나리오에서는 네트워크 ACL이 아닌 보안그룹을 사용해 구성한다.
기본적으로 VPC는 기본 보안그룹이 제공된다. 인스턴스를 시작하는 동안 다른 보안그룹을 지정하지 않는 경우 이 보안그룹에 연결된다. 이 시나리오의 경우 기본 보안그룹 말고 내가 보안그룹을 생성해 적용한다.
기본 보안그룹을 사용하고있는 인스턴스가 있는가? 이런것도 괜찮을듯 싶다.
지금 나오는 인바운드, 아웃바운드 보안그룹은 Public Subnet에 위치한 인스턴스에 대한 보안그룹이다.
다음은 Private Subnet에 위치한 인스턴스에 적용하기 위한 보안그룹이다.
'Cloud > Concept' 카테고리의 다른 글
[AWS] AWS VPC 사용설명서 정리(4) - 기본 VPC 및 서브넷 (0) | 2020.12.24 |
---|---|
[AWS] AWS VPC 사용설명서 정리(3) - 서브넷 (0) | 2020.12.22 |
[AWS] AWS VPC 사용설명서 정리(1) - What is VPC? (0) | 2020.12.05 |
[AWS] AWS IAM 사용설명서 정리(1) - Security (0) | 2020.10.30 |
[AWS] AWS CloudTrail 사용설명서 정리(4) - Security (0) | 2020.10.27 |