Amazon API Gateway로 HTTPS로 연결해서 개봉을 해보도록 하겠습니다.

4255 단어 AWSAPIGateway
개시하다
시사회를 통해 실행되는 앱이지만 다양한 외부 시스템이 결합한 API 게이트웨이를 준비하는 상황에서 AWS를 이용하면 아마존 API Gateway(이하 API Gateway라고 함)를 선택할 수 있다.
예를 들면 이런 느낌의 상황이나 배경이요?
  • 메인 시스템 자체를 최소한으로 수정하는 동시에 인터넷으로 통하는 창(외부 인터페이스)에서 AWS를 사용한다.
  • 현행 시스템이 되기 위해 수정 없이 인터넷에서 온 파트너 시스템의 API 통신을 받아 시사회 시스템에 연결해 본다.
  • 초기 투자를 최대한 억제하고 소규모 투자를 시작한다
  • 어떤 것이든지 나는 그것들의 조합이 매우 흔하다고 생각한다.
    하고 싶은 일
    이런 경우 하고 싶은 일을 간단하게 표현하면 다음 그림과 같은 인상을 준다.

    아직 인상일 뿐이야.
    API Gateway는 어떤 API 유형이든 안전한 통신을 전제로 해야 하기 때문에 외부 시스템에서 API Gateway까지 항상 TLS로 안전한 통신을 한다.
    또 여기서는 외부 시스템에 제공되는 API의 종류로 REST형을 고려하기로 했다.
    그리고 예를 들면...
    보안 정책에 따라 인터넷에서 API Gateway로의 경로뿐만 아니라 API Gateway에서부터 AWS Direct Connect를 통한 폐역 네트워크까지의 상총리 시스템 내의 부하 균형기까지 모두 HTTPS를 통해 통신해야 한다만약 이런 것이 있다면 어떻게 될까요?
    그러니까 전부 HTTPS니까 이런 느낌이에요.
    Qiita_001.png
    그리고 가능하다면 시사회에서 그걸 이유로 간단하게 자기 서명 증명서를 부하 평형기가 기다리고 있을 때의 HTTPS 통신을 사용해 실현시키자.
    그렇다면 이를 실제로 구현하기 위해 어떻게 하면 좋을까 API Gateway를 시작으로 고민해보자.
    1. VPC 링크를 통해 사용자 VPC 연결
    API Gateway(이곳은 REST형 API라고 부른다)의 백엔드로서 최종 개봉에 이르면 사용자 VPC를 거쳐야 한다.
    API Gateway의 REST API를 사용자 VPC에 연결하기 위해 사용자 VPC에서 Network Load Balancer(NLB)를 누르고'VPC 링크'정의를 만들 수 있다.

    2. 끝점 URL 지정
    그러나 REST API에서 백엔드에 지정된 백엔드 URL에는 무엇이 설정되어 있습니까?
    만약 안전하지 않다면 HTTP의 통신이 가능하다면 NLB가 낸 호스트 이름(*.amazonaws.com)을 직접 지정하면 되지만 이번에는 전제로 모두 HTTPS로 통신해야 한다.
    또한 API Gateway 자체를 파악하여 HTTPS 요청을 고객으로 보내야 합니다.그리고 또 중요한 점은...
    API Gateway가 HTTPS 통신을 할 수 있는 목적지는 자체 서명된 인증서로 관리되는 단점과 통신할 수 없습니다
    전제가 있다.구체적으로 말하면 다음 링크에 기재된 CA가 증명한 서버 인증서를 사용하여 호스트 서비스를 해야 한다.
    https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/api-gateway-supported-certificate-authorities-for-http-endpoints.html
    최종점은https방안이어야 합니다.이렇게 되면 먼저 NLB에 TLS 요청을 보내야 하지만 https:/s와 같은 단점 URL을 지정할 수 없습니다.
    결국 시사회에 대한 HTTPS 통신을 하려는 점을 고려하면 API Gateway 스스로 고객으로서 해당 통신사의 NLB에 이름을 해결해야 한다.
    그리고 최종 목적지에 도착한 상 총리의 부하 밸런스는 자체 서명 인증서 호스트를 사용하기 때문에 API Gateway에서 직접 HTTPS 통신 목적지로 지정할 수 없다.
    그럼 어떻게 하면 좋을까요?
    몇 가지 방법이 있을 수 있지만 여기서는 관리적인 서비스를 최대한 활용하고, 2021년 9월 서비스 업데이트인'NLB의 백엔드로 ALB를 지정할 수 있다'를 활용해야 한다.
    그 전에 ALB를 NLB의 백엔드로 지정하는 것은 Lambda 함수를 이용하여 NLB의 목표 그룹 ALB의 현재 IP 주소를 계속 동적으로 설정하고 유지할 수 있는 기술이다이 업데이트는 그런 고려와 사용자 측의 처리가 필요 없다.
    3. 최종 구성
    따라서 결국 이런 구성이라면 문제없고 시사회 부하 밸런스까지 HTTPS에서 안전하게 통신할 수 있게 됐다.
  • 시사회의 부하 균형기를 보면 고객은 사용자 VPC 내의 ALB이다.ALB(API Gateway와 달리) 또한 HTTPS를 통해 자체 발급된 인증서 호스트를 사용하는 서비스와 통신할 수 있습니다.
  • ALB는 AWS Certficate Manager를 사용하여 HTTPS 청중을 구성하여 VPC가 연결된 통신 목적지 NLB의 호스트 이름으로 HTTPS 통신을 받을 수 있도록 한다.
  • API Gateway는 VPC에 연결된 통신 목적지 NLB에 Route 53 Public Hosted Zone의 별명 기록을 추가하여 해당 NLB에 HTTPS 통신을 보냅니다.
  • 총결산
    이렇게 하면 모든 통신장소가 HTTPS인 데다 시사회에서 사용한 자서명 증명서라도 수용할 수 있는 구조를 당초 목적을 달성할 수 있다.
    비슷한 과제가 있는 사람에게 참고가 된다면 기쁠 것 같아요.

    좋은 웹페이지 즐겨찾기