VPC EndPoint를 구축하기 전에 이태까지 만들었던 구조를 다시 살펴보겠습니다. private-subnet이 aws S3를 바라보고 싶다고 해 봅시다. 근데 여기에 접근하려면 당연히 인터넷에 접근할 수 있어야 합니다. 이럴 려면 route table이 private-subnet을 igw로 가게끔 해야 합니다. 하지만 이렇게 해 버리면 private-subnet의 의미가 사라지게 됩니다.
따라서 Gateway Endpoint를 통해서 접근할 수 있게끔 해야 합니다. 근데 의문점이 생길 수도 있습니다. 이전에 구축했던 NAT Gateway를 통해서 외부와 소통할 수 있었는데, 이를 통해서 S3에 접근할 수 있는게 아닌가? 이를 통해서 당연히 S3로 접근할 수 있습니다.
하지만 되도록이면 이러한 방법을 사용하는 것은 좋지 못합니다. 이렇게 되면 트래픽이 외부에 노출이되게 됩니다. nat gateway가 s3에 접근한다는 트레픽이 노출된다는 것입니다. 이러한 노출은 보안상의 이유에 있어서 숨기는 것이 좋습니다.
이를 위해서 gateway endpoint를 사용하는 것이 좋습니다.
이제 private-subnet안의 EC2인스턴스를 만들어 보도록 하겠습니다.
기본적으로 IAM에서 ec2에서 s3에 대한 접근권한을 부여해 주기 위해, s3_fullaccess라는 역할을 만들어 주고 이를 ec2인스턴스에 부여해 주었습니다.
그리고 보안그룹으로는 private_sg를 이전에 만들었던 보안그룹으로 부여해 주었습니다. 이는 public-subnet에서 오는 요청들만 받아주는 것이였습니다.
또한 우리는 이번에도 Bastion Host를 만들어 주어야 합니다. 그 이유는 결국에는 우리가 콘솔에서 S3에 접근하고 해야 하는데, 이를 위해서 필요하기 때문입니다.
그리고 private subnet에 접속합니다. 그리고 이제 이 private subnet에서 s3에 접근할 수 있어야 하는데, 이를 위해 일단 s3버킷을 하나 만들어 주겠습니다.
그리고 private subnet에서 aws-cli를 이용하여 ap-northeast-2에 있는 s3의 list를 보기 위한 명령어를 치겠습니다.
이게 어떻게 된 일일까요 vpc-endpoint를 만들어 주지도 않았는데, s3와 연결이 됩니다. 이는 바로 route-table에서 외부로 가는 모든 트래픽을 nat-gateway로 보냈기 때문입니다.
그리고 이 nat-gateway가 외부와 소통하는 양상인 것입니다. 따라서 이 라우팅을 일단 지우겠습니다.
그럼 이 aws-cli의 명령어는 동작하지 않게 됩니다.
그럼 지금부터 VPC의 엔드포인트를 만들어 보도록 하겠습니다.
위와 같은 설정을 적어주도록 하겠습니다. fastcampus vpc안에 있고 private-rtb와 연겨랳 주어야 합니다.
이는 public-subnet과의 접점이 없습니다. 이는 그냥 private-subnet에서 vpc-endpoint를 사용해서 그냥 쓰는 것이기 때문이죠
그럼 이러한 route-table에 행이 하나 추가가 되는데요, 이의 의미는 10.0.0.0/16은 모두 local로 보내고, 그 외의 s3의 트래픽이 오면 s3로 보내라 라는 의미입니다.
이 과정을 하고 나면 aws-cli의 명령어로 aws-s3로 잘 접근할 수 있게 됩니다
그리고 위와 같이 설정 할 수도 있는데, nat-gateway로 s3, 10.0.0.0/16아 아니면 nat-gateway로 보내서 외부와의 트래픽 교환이 원활이 될 수 있게끔 할 수도 있습니다. 이러면 s3의 트래픽과 관련된 트래픽은 외부에 노출이 되지 않게 막아주게 되는 것입니다!
'DevOps > AWS Architecture' 카테고리의 다른 글
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - 프로젝트 개요 ( 온라인 주문 어플리케이션 ) (0) | 2022.06.28 |
---|---|
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - 모놀리식 아키텍쳐 vs 마이크로서비스 아키텍쳐 (0) | 2022.06.28 |
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - NAT Gateway 만들기 (0) | 2022.06.27 |
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - Bastion Host 만들기 (0) | 2022.06.27 |
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - NACL 설정하기 2 (0) | 2022.06.27 |