컴퓨터 하나를 빌려서 웹 서비스를 한다고 하면 복잡한 설정 없이 그냥 ec2 하나 빌리면 된다. 하지만 서비스가 복잡해지고, 각 서비스끼리 통신을 하고, 보안 규칙을 세우다 보면 복잡도가 매우 커지게 될 것이다. 이를 개선하기 위해 새로운 개념이 생기고, 새로운 기능이 생긴다. 한 번에 이해하기에는 헷갈릴 수 있으나 각 서비스의 등장 배경을 알면 쉽게 이해할 수 있기 때문에 서비스 하나씩 따라가 보자.
각 시나리오 별로 의도에 맞게 VPC를 구성하는 게 물론 중요하지만 큰 그림을 먼저 그려보기 위해 public / private subnet만 가지는 구성도를 그려보면 다음과 같다. 정확하진 않지만 각 서비스의 역할을 이해하는 데에는 문제없을 것이다.
VPC 생성
VPC를 생성하려고 하면 CIDR 블록을 물어본다. 사설 네트워크를 구성하는데 얼마나 많은 호스트를 구성할지 물어보는 항목으로, RFC1918에 맞는 대역으로 필요 맞게 설정한다. 대역은 RFC1918과 CIDR 블록에서 확인할 수 있다.
Subnet 생성
VPC은 region 단위로 생성했지만 subnet은 availability zone 단위로 생성한다. 하나의 region 안에 여러 개의 availability zone이 있으니, subnet을 여러 개 생성해서 분산시킨다. subnet을 생성할 때에도 CIDR 블록을 묻는데, subnet은 VPC에 속해있기 때문에 VPC의 CIDR 블록을 넘지 않는 선에서 적절히 분배해서 정한다.
외부 인터넷에서 접속할 수 있는 public subnet과 내부에서만 접속 가능한 private subnet으로 나눠 보안을 강화할 수 있다.
Route table 생성
subnet까지 생성해서 구역은 나눴지만 ec2가 서로 통신할 순 없다. Route Table을 subnet에 설정해야 한다. public / private으로 나눠서 subnet을 구성했다면 각각의 Route Table을 생성해서 다른 규칙을 적용시킨다.
Internet Gateway
VPC 단위로 외부 인터넷과 통신할 수 있는 Internet Gateway를 생성해서 attach 한다. VPC에 적용된 Internet Gateway와 연결은 public subnet에 있는 Route Table에서 지정한다. local로 향하는 Routing Table에 0.0.0.0/0에 대해서는 Internet Gateway로 갈 수 있도록 추가한다.
NAT Gateway
private subnet에 있는 ec2들도 다양한 이유로 외부 인터넷과 통신해야 할 일이 있다. 이 경우는 NAT Gateway를 public subnet에 두어 Route Table에 0.0.0.0/0에 대해서 NAT Gateway를 가리키도록 추가하면 된다. private subnet에서는 public subnet에 있는 NAT Gateway를 통해 외부와 통신할 수 있고, 외부에서는 private subnet이 노출되지 않기 때문에 여전히 접근할 수 없게 된다.
Network ACL / Security Group
subnet, instance를 대상으로 트래픽을 제어한다. 외부에서 접속 가능한 그룹과 내부에서만 접속 가능한 그룹 등 각 서비스 기능에 맞게 최소한으로 권한을 설정한다.
'aws' 카테고리의 다른 글
AWS IAM 보안 정책 (0) | 2020.04.07 |
---|---|
DNS 과정과 route 53 사용법 (0) | 2020.04.04 |
Security Group vs Network ACL 정리 (0) | 2020.04.02 |
AWS storage type (0) | 2020.03.31 |
Amazon Kinesis Stream 개념 (0) | 2019.12.12 |
댓글