<aside> 💡 기존에 사용하고 있는 Opensearch의 경우 AWS 내에서 같은 VPC 안에서 통신이 가능하도록 같단하게 설정을 할 수 있다. 내부 VPC에서만 클러스터에 접근하여 인덱싱 및 기타 작업을 할 수 있게 된다면 트래픽을 제어하는 측면에서도 매우 효과적일 것이라 판단하여 플로우를 정리해 보았다.
</aside>
클라우드 상에서 보안에 대한 가장 기본적인 개념을 아래와 같다.
클라우드를 다른 VPC와 연결지은 모습
기본적인 보안 구조
DB, 데이터 저장소가 Private IP를 공용 애플리케이션에 노출하여 같은 VPC 안에서만 통신이 가능하도록 구조를 바꾼다.
기존의 다른 VPC 끼리는 VPC 피어링 기반의 솔루션을 사용
Elastic Cloud
핵심은 애플리케이션이 배포되는 VPC를 Elasticsearch 배포가 위치하는 VPC와 연결을 한다.
PrivateLink의 경우는 VPC 피어링과 다르게 단방향 솔루션으로 애플리케이션으로의 VPC 트래픽만 엔드포인트로 허용한다.
→ 추가적으로 접근의 허용 범위를 VPC 혹은 서브넷까지 제한을 둘 수 있다.
<aside> 💡 개념이 모호할 수 있다. 같은 VPC가 아니더라도 통신을 하기위해서 우리는 VPC 피어링 혹은 엔드포인트를 지정한다. 이때 엔드포인트를 지정한 경우는 개인 링크(URL)을 통해서 같은 리전에 있는 다른 인스턴스와의 소통이 가능한데 이를 PrivateLink라고 한다. 즉, VPC 엔드포인트를 생성하여 트래픽을 노출하지 않고 통신할 수 있게 하는 통신 주소이다.
</aside>
리전에 따라서 Elastic에서 제공하는 service alias가 다르다 → 확인하기
서비스 이름과 VPC를 선택하고 Endpoint를 만든다. → 완전히 만들어지는데 3분정도 소요
Route53에서 Private hosted zone(프라이빗 호스팅 영역)을 만들고 Endpoint 도메인과 연결할 *
인 레코드를 생성한다.
DNS 등록이 완료 되었으면 https://{elastic_cluster_id}.{private_hosted_domain}:9423
으로 curl
요청을 보내도록 하자
{private_hosted_domain}
의 경우는 elastic에서 지정해준 명칭을 사용해야한다.
→ private 도메인의 경우 서브넷이 달라지면 중복된 이름을 사용할 수 있기 때문에 이 부분을 참고하여 엔드포인트와 연결하도록 하자
보안그룹 문제
endpoint를 사용하는데에 잘못된 보안 그룹을 설정할 경우 요청이 block되어 time out이 나올 수 있다.
위와 같은 네트워크 바운드가 발생한다면 필히 보안그룹을 체크하자
아래의 그림을 보면 이해가 빠르다. Endpoint도 하나의 인스턴스이기 때문에 요청을 받는 주체가 된다. 따라서 서브넷에 존재하는 인스턴스의 CIDR 블록을 고려해서 인바운드를 편집할 필요가 있다.