AMI 공유하기
전세계로 뻗어 나가는 나의 AMI
권한을
카테고리 > 설정 > AMI에 대한 퍼블릭 액세스 차단 > 관리
신규 공개 공유 차단을 해제하면 공개적으로 AMI가 공유된다.
Networking Service
- AWS VPC(Virtual Private Cloud)
AWS의 네트워킹 서비스 중 하나로 가상의 격리된 네트워크
최대 5개 까지 가지고 있을 수 있다.
* 하나의 VPC를 사용해도 되지만, 고객별, 부서별 등 격리된 네트워크(VPC)를 생성할 수 있다.
VPC는 네트워킹 서비스이기 때문에 VPC에서 사용할 IP 대역을 지정해줘야 하는데, 이를 CIDR이라고 한다.
Classless Inter-Domain Rounting(CIDR)
VPC에서 사용할 IP 대역 지정하는 것
!! VPC 생성할 때 주의할 점: 한 번 설정하면 변경이 불가하다.
기업 IP와 AWS VPC CIDR이 같을 경우 IP가 충돌(overlapping)해서 사용할 수 없다.
이 격리된 네트워크 VPC를 또 나누어서 사용할 수 있다.
=> Subnet
Q. VPC 안에서 굳이 또 네트워크를 나누는 이유가 무엇일까?
A. 관리하기 위해서이다. (엔지니어 입장에서 이용했을 때, 네트워크를 관리하기 쉽다.)
* GCP같은 경우, 1개의 네트워크에서 모든 자원을 Tag로 관리
Subnet을 같은 가용 영역에 생성할 경우, 다른 네트워크 간의 통신이 가능하다.
다른 가용 영역에 있는 서브넷과는 통신이 불가!
예를 들어
AZ-2a subnet1
AZ-2a subnet2
가 있을 경우,
둘은 다른 네트워크지만 같은 가용 영역에 위치하기 때문에 서로 데이터를 주고 받을 수 있다.
* 원래는 다른 네트워크와 통신하기 위해서는 Router라는 장비가 꼭 필요하다. 하지만 AWS에서는 통신이 가능.
도대체 AWS는 왜 통신이 가능한 것일까?
=> AWS에서는 네트워크 차원에서 관리한다. AWS는 한 네트워크 단위로 1. 보안 설정(나클)이나 2. 그룹화를 하거나, 통신이 되는 상태에서 통신을 못하게 설정할 수도 있다.
- Subnet
하나의 큰 네트워크인 VPC를 나눠서 사용하기 위한 논리적 공간이다.
<서브넷 종류 3가지>
1. Public Subnet: 외부(인터넷) 통신이 자유로운 네트워크
2. Private Subnet: 외부 통신이 불가능한 네트워크
3. VPN-only Subnet: VPN 연결할 때 사용하는 네트워크. Virtual Private Gateway를 통해서만 통신 가능. 암호화된 통신을 한다.
* 2024년 하반기부터 Isolated Subnet이 추가될 예정이다.
<위의 예시에서 확인할 수 있는 부분>
- Seoul 리전
- VPC 1개 (CIDR: 192.168.0.0/16)
* 원래는 VPC 안에 가용 영역(AZ)가 들어가는 게 맞지만, VPC를 여러 대 놓을 수도 있기 때문에 현재는 AZ를 포함하는 것이 아니라 걸쳐져서 그리는 경우가 많다.
- AZ 2개 (2a, 2c)
- Subnet 각 AZ당 3개 (public 1개, private 2개)
- 두 가용 영역의 구조가 똑같다.
Q. 두 가용 영역의 구조를 똑같이 만든 이유는?
A. 가용성을 높이기 위해서이다. 한 가용 영역의 서버가 망가지면 다른 가용 영역에 있는 서버를 이용하면 된다.
이렇게 두 가용 영역이 같은 구조를 하고 있는 것을 Multi-AZ라고 한다.
- Internet gateway
인터넷(외부)과 내부 서버 통신을 가능케 하는 연결 통로이다.
웹 서버 같은 경우, 인터넷 통신이 되어야 하기 때문에 무조건 인터넷 게이트웨이가 필요하다.
그런데 인터넷같은 경우 안전한 데이터만 있는 것이 아니다.
그래서 나는 인터넷 게이트웨이를 안 쓰고 외부와 통신하고 싶다! 하면 AWS Direct Connect를 사용하면 된다.
AWS Direct Connect: 회사 서버와 AWS 서버를 직접 연결하는 전용 회선
- Router
다른 네트워크와 통신하기 위해 다른 네트워크를 연결한다.
라우터는 서브넷 생성 시 자동으로 생성되고, 서브넷을 이 라우터에 연결하여 서로 통신할 수 있게 만든다.
라우터 안에는 라우팅 테이블이 존재하는데, 특정 IP를 허용하거나 인터넷 게이트웨이를 설정하여 외부와 통신할 수 있도록 한다.
[0.0.0.0/0] [igw_id]
테이블에 위와 같이 등록하면 모든 IP가 인터넷 게이트웨이를 통해 내부에 있는 네트워크로 데이터가 들어올 수 있다.
그런데,
서브넷의 종류는 VPN을 쓰지 않는 경우 2가지가 존재한다고 했다.
Public subnet
Private subnet
한 가용 영역에 두 종류의 서브넷을 생성했다고 생각해 보자.
Private subnet은 외부와 통신할 수 없도록 해야 한다. -> 중요한 정보가 들어있을 가능성이 크기 때문이다.(DB, WAS)
그런데 1개의 라우터에 퍼블릭 서브넷과 프라이빗 서브넷을 모두 연결하여 인터넷 게이트웨이와 연결한다면
프라이빗 서브넷도 외부와 통신이 가능하단 뜻이다.
그래서 라우터를 각각 퍼블릭/프라이빗으로 구분하여 2개 만들어 주는 것이 좋다.
퍼블릭 서브넷에만 인터넷 게이트웨이 통신을 허용하게 해주자.
- NAT gateway
AWS에서 제공하는 서비스
외부와 통신할 수 없는 프라이빗 서브넷을 VPC 외부에 접근 가능하게 하고, 외부 접근은 불가능하게 한다.
NAT gateway는 퍼블릭 서브넷에 배치해야 한다.
퍼블릭 서브넷 라우팅 테이블에 외부에서 들어오는 모든 접속[0.0.0.0/0]을 NAT gateway로 들어오게 하면 아래와 같은 방식으로 작동된다.
1. 프라이빗 서브넷 외부 통신 요청
2. NAT gateway 통해서 외부 접근
3. 외부 데이터를 다시 NAT gateway 통해 프라이빗 서브넷으로 되돌아옴
이 NAT 게이트웨이도 사실상 외부와 통신을 해야하기 때문에 보안 관점에서 완벽하진 않을 것이다.
NAT 게이트웨이 없이 외부 통신하는 방법이 1가지 더 있다.
=> VPC Endpoint: VPC에 작은 구멍(endpoint)을 뚫어서 외부와 통신
ex. DynamoDB와 프라이빗 서브넷 통신