ecsimsw

Route53의 private hosted zone으로 내부 서비스 도메인 관리하기 본문

Route53의 private hosted zone으로 내부 서비스 도메인 관리하기

JinHwan Kim 2023. 1. 15. 18:14

How to add new hosted VPC

회사 내부에서 사용하는 내부 서비스 도메인이 public하게 열려있었다. 이를 외부에 노출되지 않도록 하고 싶었다. 개발/테스트/배포 환경 등 서비스 환경에 따라 다른 AWS 계정과 리전, 인프라가 분리되어 있었고, 모든 각 계정/리전마다 사용할 DNS를 등록하는 것이 아닌 전면의 한 계정에서 공통된 도메인을 갖고, 노출된 VPC만 따로 등록하는 식으로 관리 포인트를 줄일 수 있었다. 

 

Route53의 private dns를 사용해서 지정된 VPC 안에서만 접근할 수 있는 내부용 DNS를 만들 수 있었다.

 

 

How to configure

Route53에서 Dns를 생성할 때 private hosted zone 를 선택할 수 있다. 이때 같은 도메인 이름으로 public hosted zone이 이미 존재해도 상관없다. 예를 들면 public hosted zone 'ecsimsw.app'가 이미 존재해도 private hosted zone 'ecsimsw.app'를 만들 수 있는 것이다.

(이때 DNS 쿼리에서 우선 되었던 쪽은 기억이 안난다. public hosted zone이었던 것 같긴한데 사용하시는 분이 있다면 확인하시고 사용하시길 바란다.)

 

 

Attach VPC to be used

접근할 수 있는 VPC를 선택한다. 여기까지는 일반적인 Route53을 사용하는 방법과 다르지 않다. 

 

 

 

다만 회사 상황처럼 host 되어야할 VPC가 외부 계정이나 리전이 다를 경우, 이를 등록하고자 한다면 다음과 같은 에러가 출력된다.

 

Associate vpc with hosted zone

Route53을 설정하는 계정 밖의 VPC를 hosted zoned으로 등록하기 위한 과정이다. AWS CLI로 두 계정에 접근할 수 있어야 한다. route53을 설정하는 계정을 Host account, 접근하려는 VPC의 계정을 Hosted account라고 칭하겠다. 

 

글 작성 당시엔 AWS console를 사용할 수 있는 방법이 없다. CLI도 어렵지 않으니 겁먹지 않아도 된다. 결국 하고 싶은 것은 Host account에선 다른 계정의 VPC에 접근 허가를 요청해야하고, Hosted account에선 이 요청을 허락하는 것이다.

 

Host account : create association authorization

Host account에서 Client account에 vpc association 허가를 요청한다.

export AWS_PROFILE=<host_profile_name>
aws route53 create-vpc-association-authorization --hosted-zone-id <hosted-zone-id> --vpc VPCRegion=<region>,VPCId=<vpc-id> --region <region>

 

Hosted account : associate vpc with hosted zone

Hosted account에서 요청을 확인한다.

export AWS_PROFILE=<client_profile_name>
aws route53 associate-vpc-with-hosted-zone --hosted-zone-id <hosted-zone-id> --vpc VPCRegion=<region>,VPCId=<vpc-id> --region <region>

 

Host account : delete association

Association을 삭제하려면 Host account에서 다음 명령어를 수행한다. 사용이 끝난 vpc association은 제거하는걸 추천한다.

export AWS_PROFILE=<host_profile_name>
aws route53 delete-vpc-association-authorization --hosted-zone-id <hosted-zone-id> --vpc VPCRegion=<region>,VPCId=<vpc-id> --region <region>

 

Ref, https://aws.amazon.com/ko/premiumsupport/knowledge-center/route53-private-hosted-zone/

 

Check hosted zone

Hosted zone에 VPC가 추가된 것이 확인되면 성공이다.

 

 

 

Comments