NAT(Network Address Translation) Instance/gateway
private subnet은 회원 DB와 같이 보안상으로 외부에 노출되서는 안되는 것이 들어갑니다. 만약 상황을 가정해 봅시다. private subnet에서 MySQL을 사용하려면 외부로부터 MySQL을 설치를 해 주어야 합니다. 또한 MySQL의 버전업같은 것을 위해서는 private subnet과 인터넷과의 연결은 필수가 됩니다.
이러한 경우 private subnet에서 public subnet으로 접속해서 우회하는 방식을 사용합니다. 이러한 우회 절차를 NAT을 통해서 진행하게 되는 것입니다.
public subnet에 있는 객체를 통해서 외부와의 접근을 우회하는 방법에 크게 2가지가 있는 것입니다. nat gateway와 nat instance가 있는 것입니다. nat instance는 그냥 Ec2인스턴스 입니다. public subnet에 있는 Ec2서버인데, private subnet에서 외부로 나갈 떄 사용되는 인스턴스를 nat instance라고 하는 것입니다. 또한 nat gateway는 이를 위한 특화된 서비스라고 보시면 됩니다.
간단한 그림으로 보면 위와 같은 그림이 되는 것입니다. 하지만 엄연히 보면 틀린 그림입니다. private subnet은 nacl을 거쳐 route table로 가고 route table이 public subnet으로 쏴주는 것입니다.그리고 public subnet에 있는 nat gateway는 다시 internet으로 접근을 시킵니다. 그리고 internet에서 nat gateway로 갑니다. 그리고 nat gateway는 다시 private subnet으로 쏴주는게 올바른 과정이라고 할 수 있습니다.
ec2는 이런 과정에 특화된 것은 아니지만 활용할 수는 있습니다. 그래서 nat instance는 별로 사용하지는 않습니다.
Bastion host
만약 관리자가 외부에 있다고 해 봅시다. 그런데 private subnet안에 접속할 수가 없습니다. 이건 매우 큰 문제입니다. 그래서 생겨난 개념이 Bastion Host입니다. 이는 말 그대로 인터넷에서 private subnet으로 접속하기 위한 방법입니다.
Bastion Host에서 private subnet으로 ssh로 우회적으로 접근하면 됩니다.
VPC endpoint
이는 Aws의 여러 서비스들과 VPC를 연결시켜주는 중간 매개체입니다. 이는 private subnet에서 통하는 이야기입니다. 여러 aws의 instance와 소통하기 위해서는 결국에 aws라는 외부 인터넷을 사용해야 합니다.
만약 다음과 같이 private subnet에서 SageMaker에 접근을 하고 싶다라고 해 봅시다. 그럼 Interface Endpoint를 통해서 private ip를 할당받고 접근할 수 있게 되는 것입니다.
만약 private subnet에서 S3에 접근을 하고 싶다고 해 봅시다. 그럼 router table에서 gateway endpoint로 쏴주는 겁니다. 그리고 gateway endpoint에서 S3로 쏴주는 매커니즘입니다.
다음으로는 이들을 직접 설정하면서 실습을 해 보겠습니다.
'DevOps > AWS Architecture' 카테고리의 다른 글
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - IGW와 라우팅 테이블 생성 (0) | 2022.06.27 |
---|---|
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - VPC와 Private, Public Subnet 만들기 (0) | 2022.06.27 |
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - 네트워킹의 동작원리 - 2 (0) | 2022.06.27 |
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - 네트워킹의 동작원리 - 1 (0) | 2022.06.27 |
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - 네트워킹의 기본 (0) | 2022.06.27 |