복붙노트

[SPRING] 마이크로 서비스에 대한 직접 호출을 허용하지 마십시오. API Gateway를 통해서만 허용

SPRING

마이크로 서비스에 대한 직접 호출을 허용하지 마십시오. API Gateway를 통해서만 허용

어쩌면 이것은 이상한 질문 일 것입니다 (마이크로 서비스를 처음 사용합니다). 그러나 나는 이것을 어떻게 진행하는지에 대한 정보를 찾고 있습니다. Spring에 한정 될 필요는 없지만, 현재 내가 사용하고있는 프레임 워크입니다.

예: 두 개의 마이크로 서비스가 있다고 가정 해 봅시다

a) http://myurlfortesting.com:8085/api/rest/serviceone

b) http://myurlfortesting.com:8090/api/rest/servicetwo

수신 호출을 전달하는 다음 규칙을 사용하여 Spring Zuul (API 게이트웨이로 작동)을 설정했습니다.

/ rest / one-> http://myurlfortesting.com:8085/api/rest/serviceone

/ rest / two-> http://myurlfortesting.com:8090/api/rest/servicetwo

질문... 사용자가 A 및 B에 언급 된 서비스에 직접 액세스하지 못하게하는 방법이 있습니까 (API 게이트웨이를 통해 오는 서비스 만 허용)?

추가 필터를 설정하여 Springs Zuul (API 게이트웨이로 작동)을 사용하여이 작업을 수행 할 수 있습니까? 아니면 마이크로 서비스 엔드 포인트에서 설정합니까?

API Gateway를 통해 제공되지 않는 Microservices 엔드 포인트에서 직접 호출을 처리하지 않는 방법도 알고 싶습니다.

어쩌면 이것은 서버 특정 규칙으로 해결되며 Spring과 관련이 없습니까?

많은 감사합니다

/디

해결법

  1. ==============================

    1.방화벽이 설치되어 있다고 가정하면 서버로의 인바운드 트래픽을 Zuul 엔드 포인트가 노출 된 포트로 제한하고 다른 사람이 마이크로 서비스 포트에 직접 액세스하지 못하게 할 수 있습니다.

    방화벽이 설치되어 있다고 가정하면 서버로의 인바운드 트래픽을 Zuul 엔드 포인트가 노출 된 포트로 제한하고 다른 사람이 마이크로 서비스 포트에 직접 액세스하지 못하게 할 수 있습니다.

    방화벽 경로로 이동하지 않으려면 엔드 포인트가 요청을 전달하기 전에 Zuul이 설정 한 특정 HTTP 헤더 또는 무언가를 확인하도록 할 수 있지만 해 키고 우회하기 쉽습니다. 과거의 경험을 바탕으로 "올바른"방법은 방화벽을 통해이를 수행하는 것입니다. 앱은 요청을 처리해야합니다. 방화벽은 특정 엔드 포인트에 도달 할 수있는 사람을 결정해야합니다.

  2. ==============================

    2.일반적으로 이러한 종류의 상황은 API 게이트웨이 만 토큰 유효성 검사를 처리하는 적절한 OAuth 서버를 구현하여 처리됩니다. 마이크로 서비스에 대한 직접 호출은 적절한 토큰 교환을 갖지 않으므로 요청이 중단됩니다.

    일반적으로 이러한 종류의 상황은 API 게이트웨이 만 토큰 유효성 검사를 처리하는 적절한 OAuth 서버를 구현하여 처리됩니다. 마이크로 서비스에 대한 직접 호출은 적절한 토큰 교환을 갖지 않으므로 요청이 중단됩니다.

    모든 클라우드에 마이크로 서비스를 배치 한 경우 API 게이트웨이에만 경로를 노출하여이를 달성 할 수 있습니다. 예, 방화벽 차단, IP 화이트리스트는 마이크로 서비스에 대한 액세스를 제한하는 다른 방법 중 하나입니다.

  3. ==============================

    3.리버스 프록시를 사용하십시오. 우리는 같은 목적으로 Nginx를 사용합니다. 게이트웨이가 단일 장애 지점이되지 않도록 프로덕션 시나리오의 경우 Api 게이트웨이는 항상로드 밸런서 뒤에 배치해야합니다. 또한 게이트웨이와 서비스는 VPC에 배포됩니다.

    리버스 프록시를 사용하십시오. 우리는 같은 목적으로 Nginx를 사용합니다. 게이트웨이가 단일 장애 지점이되지 않도록 프로덕션 시나리오의 경우 Api 게이트웨이는 항상로드 밸런서 뒤에 배치해야합니다. 또한 게이트웨이와 서비스는 VPC에 배포됩니다.

  4. ==============================

    4.우리는 같은 목적으로 jHipster-Gateway를 사용하고 있습니다 :

    우리는 같은 목적으로 jHipster-Gateway를 사용하고 있습니다 :

    자세한 아키텍처는 여기를 참조하십시오.

  5. ==============================

    5.AWS API Gateway로이를 수행하는 올바른 방법은 최근에 시작된 'VPC Link'통합을 사용하여 API Gateway와 VPC 내부의 백엔드 간 연결을 보호하는 것입니다.

    AWS API Gateway로이를 수행하는 올바른 방법은 최근에 시작된 'VPC Link'통합을 사용하여 API Gateway와 VPC 내부의 백엔드 간 연결을 보호하는 것입니다.

    https://aws.amazon.com/about-aws/whats-new/2017/11/amazon-api-gateway-supports-endpoint-integrations-with-private-vpcs/

  6. from https://stackoverflow.com/questions/41262716/dont-allow-direct-calls-to-microservices-only-allow-through-api-gateway by cc-by-sa and MIT license