AWS

VPC, NACL, Security Group, VPC Flow Logs, VPC Peering, VPC Endpoints

박현국 2024. 9. 30. 20:42
AWS의 IP 주소
  • IPv4 프로토콜
    1. Public IPv4 : 인터넷에서 사용할 수 있는 IP주소 (EC2 인스턴스를 생성하면 공인 IPv4를 얻는다)
    2. Private IPv4 : 192.168.1.1 과 같은 형식으로 AWS VPC 와 같은 private network(사설 네트워크) 에서만 사용 가능
  • 탄력적 IP :고정된 공인 IPv4 주소를 EC2 인스턴스로 가져오는 것(인스턴스를 중지했다가 다시 시작해도 동일한 IP)
    모든 IP 는 시간당 요금 부과
VPC (Virtual Private Cloud)
  • 가상 사설 클라우드: 사설 네트워크를 통해 인스턴스에 리소스를 배포할 수 있다. 
  • 특정 리전과 연결되어 AWS 에 여러 리전이 있으면 여러 VPC 를 갖게 된다. 
  • VPC 에는 Subnet이 존재 (VPC의 일부) : 네트워크의 파티션이며, 가용 영역과 연결
  • 공용 서브넷이 인터넷과 연결되어 잇어서 인터넷을 공용 서브넷을 통해 바로 연결할 수 있다.
  • 사설 서브넷은 인터넷을 통해 액세스 하지 않는 서브넷
  • 즉, 인터넷으로의 액세스와 서브넷 간의 액세스를 정의해 리소스와 통신하려면 라우팅 테이블을 사용한다.

VPC 구조

 

그렇다면 이 서브넷에 관한 인터넷 액세스는 어떻게 정의할까?
  • 예를 들어 인터넷에 액세스 할 수 있는 공용 서브넷에 EC2 인스턴스가 있고 여기에 Internet Gateways 를 생성
  • InternetGateways : VPC 인스턴스가 인터넷에 바로 연결되도록 한다. -> 인터넷게이트웨이와 라우트가 있으면 서브넷이 공용 서브넷이 된다.
  • 두번째 예시(Private Subnet에 인터넷 연결) : 사설 서브넷에 인스턴스가 있고, 인터넷에서 액세스할 수 없지만 인터넷 액세스 권한을 부여할 수도 있음.  >> ex. 운영체제를 업데이트하거나, 파일을 다운로드 하기 위해서 -->> 이때 NAT Gateways 생성
  • NAT Gateways : AWS 에서 관리하거나, 인스턴스에에서 자체 관리하여, 사설 서브넷 내의 인스턴스가 사설인 상태를 유지하면서 인터넷에 액세스 하도록 한다. -> 즉, 공용 서브넷에 NAT Gateways 또는 NAT 인스턴스를 생성하고, 사설 서브넷에서 NAT 게이트웨이로의 라우트와  NAT Gateways 에서 Internet Gateways로의 라우트를 생성한다. 

Public Subnet 과 Private Subnet 인터넷 연결 예시

 

VPC 내의 네트워크 보안 (ACL & Security Group)

1. Network ACL (NACL)

  • VPC 와 Public Subnet 을 보면 EC2 인스턴스가 있다. EC2 인스턴스를 위한 첫번째 방어선은 NACL 즉 네트워크 ACL 이다.
  • 서브넷으로 들어오고 나가는 트래픽을 제어하는 방화벽 
  • 따라서 서브넷 수준에 연결되어 규칙을 정의, 허용 또는 거부할 수 있다. (규칙에는 IP 주소만 포함)
  • ex. 트래픽이 EC2 인스턴스에 도달하기 전에 NACL 이 서브넷 안팎으로 트래픽을 필터링 한다.

2. Security Groups (보안그룹)

  • EC2 인스턴스로 들어오고 나가는 트래픽을 제어하는 방화벽이다.
  • 보안 그룹은 허용 규칙만 가질 수 있다. (규칙에는 IP주소나 다른 보안 그룹을 참조할 수 있다.)
  • ex. EC2 인스턴스 주변에 보안그룹이 있고, 인스턴스를 드나드는 트래픽을 제어한다.

NACL 과 Security Groups

 

** NACL 과 Security Groups 차이

1. NACL 은 서브넷 수준, Security Groups 은 인스턴스 수준에 있다.

2. NACL 은 허용 규칙과 거부 규칙 지원, Security Groups 은 허용 규칙만 지원 

3. NACL 에서는 반환 트래픽이 규칙에 의해 명시적으로 허용되어야 함 (연결 상태 비저장)  VS 보안 그룹에서는 어떤 규칙이든 관계없이 반환 트랙픽이 자동으로 허용 (연결 상태 저장)

 

VPC Flow Logs
  • 인터페이스를 통과하는 모든 IP 트래픽에 대한 로그
    1. VPC Flow Logs
    2. Subnet Flow Logs
    3. Elastic Network Interface Flow Logs 
    >> 이것들을 통해 EC2 인스턴스로 들어오고 나가는 트래픽을 확인할 수 있다.
  • Flow Logs 를 활성화하면 연결 문제를 모니터링하고 해결할 수 있다.
    1. 서브넷이 인터넷에 연결할 수 없는 경우
    2. 서브넷이 다른 서브넷에 연결할 수 없는 경우 
    3. 인터넷이 서브넷에 액세스할 수 없는 경우
    >> VPC Flow Logs 에 캡쳐되며 이를 통해 근본 원인을 파악할 수 있다.
  • EC2 인스턴스에서 정보를 얻는 것 외에도, ELB, ElasticCache, RDS, Aurora 등에 대한 정보도 얻을 수 있다.
  • VPC Flow Logs 는 S3, CloudWatch Logs, Kinesis Data Firehose 로 갈 수 있다. 

 

VPC Peering
  • AWS 의 네트워크를 사용해 두 VPC를 프라이빗으로 연결함으로써 마치 동일한 네트워크인 것처럼 동작하도록 하는 것
  • ex. VPC A 와 VPC B 가 있으면 이것들은 서로 Peering 할 수 있다. >> Peering 이 완료되면 동일한 네트워크에 있거나, 마치 동일한 네트워크에 있는 것처럼 동작한다. (이를 위해서는 IP 주소 범위가 겹치지 않는지 확인해야 한다. 겹치면 VPC Peering 연결을 설정할 수 없다.)
  • VPC Peering 은 전이적이지 않다 >> 즉, VPC C 라는 새 VPC 를 추가하고 VPC A 와 VPC C 사이에 Peering 연결을 만들어도 VPC B와 C 는 서로 통신할 수 없다. 서로 Peering 이 안되어 있기 때문

VPC Peering 예시

 

 

VPC Endpoints
  • 지금까지는 모두 Public Network 를 사용하여 Public 으로 VPC 를 연결했다. 
  • VPC Endpoints 를 사용하면 Private Internet Network 대신 Private AWS Netowork 를 사용한다.